Estaba leyendo sobre chmod y sus modos octales. Vi que 1
es ejecutar solamente. ¿Cuál es un caso de uso válido para un permiso de solo ejecución? Para ejecutar un archivo, normalmente se necesita permiso de lectura y ejecución.
$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo
Respuesta aceptada:
Scripts de shell requieren el permiso de lectura para ejecutarse, pero archivos binarios no:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
Mostrar el contenido de un archivo y ejecutarlo son dos cosas diferentes. Con los scripts de shell, estas cosas están relacionadas porque se "ejecutan" "leyéndolas" en un shell nuevo (o en el actual), si me perdona la simplificación. Es por eso que necesita poder leerlos. Los binarios no usan ese mecanismo.
Para directorios, el permiso de ejecución es un poco diferente; significa que puede hacer cosas con los archivos dentro ese directorio (por ejemplo, leerlos o ejecutarlos). Entonces, digamos que tiene un conjunto de herramientas en /tools
que desea que las personas puedan usar, pero solo si saben acerca de ellos. chmod 711 /tools
. Luego cosas ejecutables en /tools
se puede ejecutar explícitamente (por ejemplo, /tools/mytool
), pero ls /tools/
será denegado. Del mismo modo, los documentos podrían almacenarse en /private-docs
que podría leerse si y solo si se conocen los nombres de los archivos.