¿Para qué es el primer número en un argumento chmod de 4 números (como `chmod 4555`)?

20

Cuando instalo un programa, me recomienda que lo haga chmod 4555. Bien, sé acerca de los valores si solo uso tres números. Por ejemplo

chmod 555 test-file

daré

-r-xr-xr-x

4 para escritura, 2 para lectura y 1 para ejecución. Pero cuando hago esto:

chmod 4555 test-file

me da

-r-sr-xr-x

Entonces, xcambió a s. ¿Lo que significa eso?

Mas Bagol
fuente
1
también explicado aquí: askubuntu.com/a/550947/72216 ("sobre la bandera s")
Jacob Vlijm
@JacobVlijm también explicó más en profundidad con los otros bits "especiales", a continuación
Thomas Ward

Respuestas:

29

En realidad, hay 4 conjuntos de atributos con los que puede trabajar a través de chmod.

Special, User/Owner, Group, Y Othersen ese orden, cuando se trabaja con los chmods de cuatro números, con ese primer número siendo bits especiales que se pueden configurar.

chmod 4555 equivale a lo siguiente:

  • Set UID bit: ejecuta el archivo como propietario independientemente del usuario que lo esté ejecutando
  • Usuario / Propietario: Read, Execute
  • Grupo: Read, Execute
  • Otros: Read, Execute

La scadena en su 'legible por humanos' para permisos indica que el SetUIDbit (explicado a continuación) está configurado.


Efectivamente, podemos dividir el chmodargumento de los permisos de cuatro números en descriptores específicos de la siguiente manera, y hacer los cálculos para determinar qué sería a 4en la primera sección, a 5en la siguiente sección, y así sucesivamente.

Tenga en cuenta que ####es Special User/Owner Groupy Othersen ese orden.

Para Specialatributos (el primer número en un chmodargumento de cuatro números ):

  • Set UID- Ejecutar el archivo como propietario independientemente del usuario que lo ejecute (se muestra como sen la cadena de permisos legibles por humanos para la Usersección) = +4 ( --sdebajo User/Owner)
  • Set GID- Ejecuta el archivo como grupo independientemente del usuario / grupo que lo ejecuta (se muestra como sen la cadena de permisos legibles por humanos para la Groupsección) = +2 ( --sdebajo Group)
  • Sticky Bit- SÓLO EFECTIVO EN DIRECTORIOS: si está configurado, solo el usuario propietario del directorio rootpuede eliminar el directorio, y solo el propietario del archivo o rootpuede eliminar archivos dentro de él. (se muestra como ten la cadena de permisos legibles por humanos para la Otherssección) = +1 ( --tdebajo Others)

Para User/Owner, Groupy Othersatributos (los últimos tres números de una serie de cuatro chmodargumento):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(para archivos) o 'Enter Into / List Items' (para directorios) = +1 ( --x)
Thomas Ward
fuente
7

Se llama el SETUIDbit. si está configurado por chmod 4555 test-file(en su caso), test-filecualquier usuario puede ejecutarlo como si el usuario fuera el propietario del archivo.

Cuando SETUIDse establece el bit, la ID de usuario efectiva ( EUID) del usuario que no tiene permiso para ejecutar el archivo de otra manera (por permisos normales, por ejemplo 0744), toma el EUID del propietario del archivo y puede ejecutar el archivo.

heemayl
fuente