¿Cuál es el propósito de los permisos de Linux como 111 o 333 (es decir, el usuario puede ejecutar , pero no puede leer el archivo), si la capacidad de ejecución no implica automáticamente la capacidad de leer?
permissions
chmod
trolley813
fuente
fuente
Respuestas:
He jugado con él y, al parecer, los permisos Exec no implican permisos de lectura. Binarios pueden ser ejecutables sin ser legibles:
No puedo ejecutar secuencias de comandos sin embargo, a menos que tengan tanto de lectura y bits de permiso Exec en:
fuente
/bin/bash hw.sh
y luego bash intenta abrirsehw.sh
para leer (y falla).tiene sentido para los directorios, por ejemplo, si mantiene los archivos ejecutables (secretos) en un directorio específico y luego permite que los usuarios llamen a esos archivos sin poder ver el contenido del directorio (¡pero sabiendo que hay un archivo específico después de informarles!). 333 en comparación con 111 permite escribir / borrar archivos a / desde esos directorios sin ser capaz de ver el contenido del directorio.
fuente
Obviamente, no todas las combinaciones son tan útiles, pero para tomar el que menciona específicamente ... En realidad no necesita
read
permiso para ejecutar un archivo - solamenteexecute
el permiso - a menos que el archivo en cuestión es un script (por ejemplo, un script de shell (.sh
), perl-escritura (.pl
) y así sucesivamente). Los archivos binarios normales se pueden ejecutar solo con elexecute
permiso. En * BSD-systmes, varios ejecutables danexecute
permiso sin permisoread
, especialmente en comandos "importantes para la seguridad", por ejemplosu
.Entonces, ¿por qué no dar a los usuarios
read
permiso (y soloexecute
permiso)? ¡Porque un archivo que no puede ser leído por un usuario, tampoco puede ser copiado por ese usuario! Al eliminar elread
permiso, se evita que los usuarios hagan sus propias copias "personales" de ejecutables, que luego pueden abusar (por ejemplo, obtenerSUID=root on
).Y al no tener
write
permiso, evita que un archivo se elimine correctamente.Eso sí, no dar ni
read
-niwrite
-permission que el propietario es un poco raro, pero a veces puede ser una buena idea para evitar incluso elowner
de simplemente borrar un archivo. Por supuesto, elowner
- por no hablarroot
- siempre puede eludir este tipo de medidas, si no en otras formas, a continuación, simplemente porchmod
el permiso en el archivo.fuente
owner
solo eliminen un archivo". - excepto que no necesita ningún tipo de permiso en un archivo (leer, escribir o ejecutar) para eliminarlo./proc/${PID}/maps
y luego leer las secciones relevantes de la memoria/proc/${PID}/mem
? ¿O restringir los permisos en el archivo ejecutable también restringe los permisos de lectura en sus secciones relevantes en la memoria durante la ejecución? (Esto último parece poco probable, OMI.)