¿Cómo borro el permiso "s" en un directorio en Linux?


24

Tengo un directorio que se muestra con la máscara de permiso drwsrwsr-x. Cuando trato de restablecer los permisos a 755la S todavía permanece.

¿Qué es la "s" y por qué no puedo volver a cambiar los permisos a 775 ( drwxrwxr-x)?

Respuestas:


25

Los mensajes que está viendo en la posición de "ejecución" en la columna de usuario y grupo son los bits SetUID (Establecer ID de usuario en ejecución) y SetGID (Establecer ID de grupo en ejecución).

Los permisos de archivos Unix son en realidad un número octal de 4 dígitos SUGO

  • S controla los bits SetUID (4), SetGID (2) y "Sticky" (1)
  • U controla los bits de lectura (4) / escritura (2) / ejecución (1) para el propietario del archivo
  • G controla los bits de lectura / escritura / ejecución para el grupo del archivo
  • O controla los bits de lectura / escritura / ejecución para todos los demás.

Puede eliminar los bits setuid de su directorio con chmod ug-s directory, ochmod 0755 directory

Para obtener más información, consulte la página de manual chmody esta página de Wikipedia sobre el bit SetUID .


Es "sgid" (no "u").
— Pausado hasta nuevo aviso.

"¿Qué es el drwsrwsrwx?" <- verifique nuevamente
— Hrvoje Špoljar

66
chmod 0755no no borrar el bit setuid, al menos no en Linux. Actualmente estoy probando en otros sistemas.
— FUZxxl

1
POSIX dice que su implementación está definida para tipos de archivos que no sean archivos normales, ya sea que chmodcon un modo octamal borre los bits setuid, setgid y vtx.
— FUZxxl

2
Para borrar el bit setuid en un directorio en Linux, use chmod 00755; ver unix.stackexchange.com/q/393531/46851
— Roger Lipscombe

23

setuid y setgid

setuid y setgid (abreviatura de establecer ID de usuario tras la ejecución y establecer ID de grupo tras la ejecución, respectivamente) son indicadores de derechos de acceso de Unix que permiten a los usuarios ejecutar un ejecutable con los permisos del propietario o grupo del ejecutable. A menudo se usan para permitir a los usuarios en un sistema informático ejecutar programas con privilegios elevados temporalmente para realizar una tarea específica. Si bien los privilegios supuestos de identificación de usuario o de grupo proporcionados no siempre son elevados, como mínimo son específicos.

Para eliminar los bits setuid y setgid numéricamente, debe prefijar el patrón de bits con un 0(por ejemplo, se 0775convierte en 00775).

Ejecute para eliminar setuid y setgid:

chmod 00775 path

o

chmod a-st path

Está en el directorio, no en el archivo
— Hrvoje Špoljar

1
un directorio también es un archivo en un sistema de archivos unix, lo que ooshro dice es completamente correcto
— lynxman

sí, todo es un archivo, pero la descripción no se ajusta, ya que no ejecuta algo que se parece a drwxrwxr-x: |
— Hrvoje Špoljar

En Unix, el inodo es lo que obtiene los permisos.
— Chris

2
GNU chmod no borra los bytes setuid y setgid en los directorios cuando lo ejecuta con un modo octamal. POSIX permite este comportamiento.
— FUZxxl

2

Agregando a la respuesta de ooshro ...

Si usa permisos suid o sgid en un directorio, cualquier archivo creado dentro de ese directorio tendrá el mismo propietario (si suid) o grupo (sgid) que el directorio en cuestión.

Lo uso para mi casa Samba compartir. El directorio base es propiedad del usuario nobody y group olympia, y los permisos son 2770. Por lo tanto, debe estar en el grupo olympia para leer o escribir cualquier cosa debajo de ese directorio, y se asegurará de que olympia sea el grupo propietario de todo lo que se encuentre debajo de él. . También tengo Samba configurado para usar una máscara de dir 2770 y una máscara de archivo de 660 para mantener los permisos correctos en todo el árbol.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.