Los scripts de shell requieren el permiso de lectura para ejecutarse, pero los 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 los contenidos de un archivo y ejecutarlos son dos cosas diferentes. Con los scripts de shell, estas cosas están relacionadas porque se "ejecutan" "leyéndolas" en un nuevo shell (o el actual), si perdona la simplificación. Es por eso que necesita poder leerlos. Los binarios no usan ese mecanismo.
Para los directorios, el permiso de ejecución es un poco diferente; significa que puede hacer cosas a los archivos dentro de ese directorio (por ejemplo, leerlos o ejecutarlos). Entonces, supongamos que tiene un conjunto de herramientas en el /tools
que desea que las personas puedan usar, pero solo si saben de ellas. chmod 711 /tools
. Luego, las cosas ejecutables /tools
pueden ejecutarse explícitamente (por ejemplo /tools/mytool
), pero ls /tools/
serán denegadas. Del mismo modo, se podrían almacenar documentos en los /private-docs
que se podrían leer si y solo si se conocen los nombres de los archivos.
cd
hacerlo.stdio.h
aquí. Sugiero eliminarlo.ls
y completar la pestaña hace que el trabajo de mantenimiento sea molesto y proporciona poco o ningún beneficio de seguridad real. La mayoría de los archivos en los que un atacante podría estar interesado están en ubicaciones estándar conocidas de todos modos, o sus ubicaciones se pueden descubrir indirectamente a partir de los datos en otros archivos (de lo contrario, ¿cómo sabrían los programas que usan legítimamente esos archivos dónde encontrarlos?).En Gentoo, a los programas ejecutables que están configurados (configurados para ejecutarse con los permisos de su propietario en lugar de su invocador) se les niega el acceso de lectura (modo 4711). Esto es para agregar una capa de protección contra la explotación de errores para ayudar a escalar los privilegios.
Si un atacante sin privilegios puede leer un archivo setuid y conoce un error que permite un ataque de estilo de retorno a la libc , puede usar el contenido del archivo para predecir dónde es probable que se encuentren ciertas funciones o bibliotecas útiles. colocado en la memoria cuando se invoca el programa.
Los sistemas modernos a menudo incluyen protecciones adicionales que son más efectivas, como ASLR , pero las restricciones presentes en las plataformas de 32 bits pueden dejarlos más fácilmente explotables.
fuente
Parece que el valor de "ejecutar solo" no tiene mucho uso para un archivo, pero puede usarse para evitar que uno lea el contenido de un directorio.
fuente
Debe tener permisos de lectura y ejecución para ejecutar un script. Leer el contenido de un script es lo que le permite ejecutarse, por lo que debe poder hacerlo
read and execute
. De lo contrario, no puede ejecutar un script sin él.Seguridad. Algunos pueden querer proteger sus archivos y evitar que otros los ejecuten o usen.
fuente
chmod 000
Tendrá en cuenta los permisos a nadie exceptoroot
. A veces, no es necesario que sea tan extenso solo por protección, depende de las intenciones del usuario. Para, digamos "re-chmod", el archivo vuelve a tener permisos de lectura y escritura en los que tendría que hacerloroot
. Si no puede accederroot
, será difícil./tools
que desea que las personas puedan usar, pero solo si saben de ellas.chmod 711 /tools
. Entonces las cosas ejecutables en/tools
se pueden ejecutar de forma explícita, perols /tools/
se negaron.