Si un archivo tiene permisos, ¿ -rwx-wx-wx
puede ser leído por otros usuarios del grupo o solo puede ejecutarse y escribirse? ¿Hay alguna forma de leer un archivo ejecutable ejecutándolo?
linux
permissions
chmod
Tom
fuente
fuente
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.fuente
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:
fuente
La respuesta simple es no : solo
exec
syscall puede leer un archivo sin requerir acceso de lectura (aunque exige el acceso de ejecución ). Unopen
conO_RDONLY
oO_RDWR
debe fallar.fuente
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.
fuente
chmod
|chown
se ha realizado