Hace algún tiempo, mientras estaba en una conversación en IRC, un usuario en un canal en el que estaba sugirió que alguien configurara un directorio para que heredara el ID de usuario en los archivos para resolver un problema que alguien más estaba teniendo. En ese momento hablé y dije "Linux no admite directorios setuid". Después de eso, la persona que dio el consejo me mostró un pastebin ( http://codepad.org/4In62f13 ) de su sistema en honor al conjunto de permisos setuid en un directorio.
Solo para explicar, cuando digo "Linux no admite directorios setuid", lo que quiero decir es que puede ir al "directorio chmod u + s" y establecerá el bit en el directorio. Sin embargo, Linux (como lo entendí) ignora este bit (en los directorios).
Por más que lo intenté, simplemente no puedo replicar esa pasta. Alguien me sugirió una vez que podría ser posible emular el comportamiento con selinux, y jugando con las reglas, es posible forzar un uid en un archivo, pero no desde un permiso de directorio setuid (que puedo ver). Leer en Internet ha sido bastante poco informativo: la mayoría de los lugares afirman "no, setuid en los directorios no funciona con Linux" y ocasionalmente "se puede hacer en circunstancias específicas" (como esto: http://arstechnica.com/ etc / linux / 2003 / linux.ars-12032003.html )
No recuerdo quién era la persona original, pero el sistema original era un sistema Debian 6 y el sistema de archivos que estaba ejecutando estaba montado en xfs con "default, acl". He intentado replicar eso, pero hasta ahora no he tenido suerte (he intentado hasta ahora con varias versiones de debian, ubuntu, fedora y centos)
¿Alguien me puede dar una idea de qué o cómo consigue un sistema para honrar a setuid en un directorio?
fuente
grpid|bsdgroups
onogrpid|sysvgroups
) que significa que los archivos en los directorios se crean con el grupo del directorio en lugar del grupo del propietario; tal vez jugar con eso?Respuestas:
Setuid para directorios no se comporta como setgid. A menos que la salida de shell fuera de FreeBSD, alguien estaba aburrido y se divertía un poco a su costa.
http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories
fuente
Respuesta parcial / solución:
Estaba tratando de hacer lo mismo, decidí no luchar y probar otro método. Lo que probé fue listas de control de acceso, para establecer permisos predeterminados. (Nota: es posible que deba habilitarlos primero).
Aquí, testuser se usa para ejecutar pruebas, y el usuario normal puede eliminar los resultados, sin tener que usar la raíz (cada vez).
fuente
De RHEL
man chmod
Numéricamente si recuerdo correctamente,
chmod 4711 ./dir
agrega el bit UID establecido,chmod 2711 ./dir
agrega el bit gid establecido para6711
establecer la herencia uid + gid según la demostración en pastebin.Por la página del manual
chmod u+s
==chmod 4XXX
ychmod g+s
==chmod 2XXX
fuente
=755
o00755
utilizando los números