Pregunta

Como dice el título, ¿algún sistema similar a Unix atribuye un significado al bit SUID en un directorio , y si es así, ¿qué significa?

El bit SVTX (texto guardado o adhesivo) tiene un significado: no podrá eliminar un archivo de este directorio a menos que pueda escribir en el archivo. Se usa en / tmp, por ejemplo.

El bit SGID (establecer GID) tiene un significado: los archivos creados en este directorio pertenecerán al grupo que posee el directorio (aunque esa asignación puede cambiarse posteriormente mediante una llamada explícita a chown (2)).

¿Qué pasa con el bit SUID?

¿Fue útil?

Solución

Como seguimiento de la respuesta de Node, publicaré lo siguiente desde la página de manual de FreeBSD para mount (8):

             suiddir
                 A directory on the mounted file system will respond to
                 the SUID bit being set, by setting the owner of any new
                 files to be the same as the owner of the directory.  New
                 directories will inherit the bit from their parents.
                 Execute bits are removed from the file, and it will not
                 be given to root.

                 This feature is designed for use on fileservers serving
                 PC users via ftp, SAMBA, or netatalk.  It provides secu-
                 rity holes for shell users and as such should not be used
                 on shell machines, especially on home directories.  This
                 option requires the SUIDDIR option in the kernel to work.
                 Only UFS file systems support this option.  See chmod(2)
                 for more information.

Y la sección de la página del comando man chmod (2) que se refiere al bit suid:

           4000    (the setuid bit).  Executable files with this bit set will
               run with effective uid set to the uid of the file owner.
               Directories with this bit set will force all files and sub-
               directories created in them to be owned by the directory
               owner and not by the uid of the creating process, if the
               underlying file system supports this feature: see chmod(2)
               and the suiddir option to mount(8).

Tenga en cuenta que esto es un riesgo de seguridad y sepa lo que está haciendo cuando lo habilita, en FreeBSD, pero también creo que Linux requiere que se habilite un indicador de montaje especial y cambiará la forma en que se comportan los archivos en ese directorio.

Otros consejos

Copiado de aquí :

  

En la mayoría de los sistemas, si se establece el bit set-group-ID de un directorio, los subfiles recién creados heredan el mismo grupo que el directorio y los subdirectorios recién creados heredan el bit set-group-ID del directorio padre. En algunos sistemas, el bit set-user-ID de un directorio tiene un efecto similar en la propiedad de nuevos subarchivos y los bits set-user-ID de nuevos subdirectorios. Estos mecanismos permiten a los usuarios compartir archivos más fácilmente, al disminuir la necesidad de usar chmod o chown para compartir nuevos archivos.

     

Estos mecanismos de conveniencia se basan en los bits de los directorios set-user-ID y set-group-ID. Si comandos como chmod y mkdir borraran rutinariamente estos bits en los directorios, los mecanismos serían menos convenientes y sería más difícil compartir archivos. Por lo tanto, un comando como chmod no afecta los bits set-user-ID o set-group-ID de un directorio a menos que el usuario los mencione específicamente en modo simbólico, o los establezca en modo numérico.

Cuando se configura en un directorio, todos los archivos y directorios creados dentro de este directorio tendrán el mismo propietario que el directorio SUID, sin importar quién creó el archivo. Esta es una característica que no se usa con demasiada frecuencia, pero puede ser útil en algunos casos. ( fuente )

Actualización: acabo de probar esto en Linux 2.6.25.5-1.1-default # 1 SMP x86_64 GNU / Linux openSUSE 11.0 (X86-64).

mkdir tmp
chmod 4777 tmp
su othergroup
touch testfile

No tuvo efecto.

El bit SUID indica que, al ejecutar un archivo (cuando es ejecutable), el proceso se ejecutará bajo la identidad del propietario de dicho archivo, no del usuario que lo ejecutó.

Hay algunos casos en los que un programa de utilidad es 'suid root' para permitir la escalada de privilegios.

EDITAR: Pregunta original mal leída (que se refiere a directorios en lugar de archivos) - dejando la respuesta sin modificaciones con fines educativos ;-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top