8 votos

¿Cómo hacer que linux honor setuid directorios?

Hace algún tiempo, mientras que en una conversación en el canal de IRC, un usuario en un canal que yo estaba en sugirió alguien setuid un directorio para poder heredar el nombre de usuario en los archivos para resolver un problema de alguien más. En el momento en que me habló y dijo que "linux no soporta setuid directorios". Después de eso, la persona que da el consejo que me mostró un pastebin (http://codepad.org/4In62f13) de su sistema de honrar el setuid conjunto de permisos en un directorio.

Acaba de explicar, cuando digo que "linux no soporta setuid directorios" lo que quiero decir es que se puede ir "chmod u+s de directorio" y se establece el bit en el directorio. Sin embargo, linux (como yo la entendía), omite este bit (en directorios).

Que lo intentara, yo sólo no puedo bastante replicar que pastebin. Alguien me sugirió una vez que es posible emular el comportamiento con selinux - y jugando con las reglas, su posible fuerza de un uido en un archivo, pero no de un setuid permiso de directorio (que yo vea). La lectura de todo en internet ha sido bastante poco informativo - la mayoría de los lugares de reclamo "no, setuid en directorios que no funciona con linux" con el ocasional "se puede hacer bajo circunstancias específicas" (tal como este: http://arstechnica.com/etc/linux/2003/linux.ars-12032003.html)

Yo no recuerdo que el original de la persona que era, pero el sistema original era un debian 6 del sistema, y el sistema de ficheros se estaba ejecutando fue xfs montado con "default,acl". He tratado de replicar, pero sin suerte hasta el momento (probado hasta ahora con varias versiones de debian, ubuntu, fedora y centos)

¿Alguien puede darme algún indicio de qué o cómo se obtiene un sistema para cumplir con setuid en un directorio?

1voto

richard Puntos 136

Respuesta parcial / trabajo en torno a:

Yo estaba tratando de hacer la misma cosa, he decidido no luchar contra ella y probar con otro método. Lo que yo intentaba era listas de control de acceso, para establecer permisos predeterminados. (Nota: puede que sea necesario activar primero).

setfacl -R --set-file=- . <<EOF
# file: testdir/
# owner: testuser
# group: testgroup
user::rwx
group::rwx
group:normaluser:rwx
mask::rwx
other::r-x
default:group::rwx
default:group:normaluser:rwx
default:mask::rwx
default:other::r-x
EOF

Aquí testuser se utiliza para ejecutar las pruebas, y el usuario normal puede eliminar los resultados, sin que ello resulte para el uso de la root (cada vez).

0voto

Aaron Copley Puntos 6043

Setuid para los directorios no se comportan como setgid. A menos que, la concha de la salida de FreeBSD, uno se aburre y tener un poco de diversión a su costa.

El setuid conjunto de permisos en un directorio que se omite en sistemas UNIX y Linux.[4] FreeBSD puede ser configurado para interpretar de forma análoga a setgid, es decir, la fuerza de todos los archivos y sub-directorios a ser propiedad de la parte superior propietario del directorio.[5]

En FreeBSD, directorios se comportan como si sus setgid bit se establece siempre, independientemente de su valor real. Como se declaró en abierta(2), "Cuando se crea un nuevo archivo se le asigna el grupo del directorio que lo contiene."

http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories

-2voto

Oneiroi Puntos 1467

De RHEL man chmod

chmod conserva un directorio del set-user-ID y set-group-ID bits a menos que se especifique explícitamente lo contrario. Usted puede configurar o borrar los bits simbólica modos como u+s y g-s, y se puede establecer (pero no está claro) los bits con un modo numérico.

Numéricamente si recuerdo correctamente, chmod 4711 ./dir agrega el set UID poco, chmod 2711 ./dir agrega el conjunto de gid poco de ello 6711 configuración uid + gid herencia como por la demostración en pastebin.

Por la página man chmod u+s == chmod 4XXX y chmod g+s == chmod 2XXX

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: