Respuestas:
Un archivo con -rwx-wx-wx
permisos tiene permisos de lectura / escritura / ejecución para el propietario, y permisos de escritura / ejecución (pero no lectura) para todos los demás.
Si es un script (generalmente un archivo de texto con un #!
en la primera línea), entonces no puede ser ejecutado por otros, porque ejecutar un script realmente ejecuta el intérprete, que debe poder leer el script. (El intérprete debe ser un binario, no otro script.) (En realidad, eso no es cierto para todos los sistemas; Ubuntu, con un núcleo Linux 3.2.0, permite que el intérprete mismo sea un script interpretado. Parece que hay un límite de aproximadamente 4 niveles. Es probable que eso no sea relevante para esta pregunta).
Si es un ejecutable binario, se puede ejecutar directamente, pero su contenido no se puede leer. Esto significa, por ejemplo, que alguien que no sea el propietario puede ejecutarlo como un comando, pero no puede obtener una copia del ejecutable.
Por supuesto, la ejecución requiere lectura, pero la lee el núcleo, no el usuario. Es posible que pueda obtener información sobre el contenido del ejecutable examinando la memoria del proceso mientras se ejecuta, pero dudo que pueda reconstruir el archivo ejecutable binario. Y si el ejecutable es setuid, no puede examinar la memoria del proceso (a menos que tenga acceso a la cuenta en la que se está ejecutando).
Por cierto, -rwx-wx-wx
es un conjunto muy extraño de permisos; protege el archivo para que nadie más que el propietario pueda leerlo, pero permite que cualquiera lo modifique. No puedo pensar en un caso en el que eso tenga sentido.
chmod 111 hello ; gdb ./hello
dice ./hello: Permission denied.
; r
diceNo executable file specified.
Con esos permisos, solo el propietario del archivo puede ejecutarlo.
Otros usuarios pueden escribirle, pero no ejecutarlo (ya que la ejecución en este caso implica poder leerlo) pero pueden escribirle como una especie de recuadro negro:
user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com
user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh
user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied
user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ logout
user1:/tmp$ ./testfile.sh
server.example.com
hello
Por supuesto, cualquier archivo puede ser leído por el usuario root.
Además, el cargador del sistema, la administración de memoria, el intercambiador, etc. leerán un archivo con el permiso 'x', de lo contrario no se podría ejecutar.
Los posibles agujeros en la divulgación de contenido ejecutable podrían ser el archivo / proc para el proceso, los archivos principales o el uso de un depurador.
chmod
| chown
se ha realizado