Cada proceso en un sistema de tipo UNIX, al igual que todos los archivos, tiene un propietario (el usuario, ya sea real o un sistema de "pseudo-usuario", como por ejemplo daemon
, bin
, man
, etc.) y el propietario de un grupo. El propietario del grupo para los archivos de un usuario suele ser el grupo primario de ese usuario y, de manera similar, cualquier proceso que inicie normalmente es propiedad de su ID de usuario y de su ID de grupo principal.
Sin embargo, a veces es necesario tener privilegios elevados para ejecutar ciertos comandos, pero no es deseable otorgar derechos administrativos completos. Por ejemplo, el passwd
comando necesita acceso al archivo de contraseñas ocultas del sistema para poder actualizar su contraseña. Obviamente, no desea otorgar privilegios de root a todos los usuarios, solo para que puedan restablecer su contraseña, ¡eso indudablemente conduciría al caos! En cambio, debe haber otra forma de otorgar temporalmente privilegios elevados a los usuarios para que realicen ciertas tareas. Para eso están los bits SETUID y SETGID. Es una manera de decirle al kernel que aumente temporalmente los privilegios del usuario, mientras dure la ejecución del comando marcado. Se ejecutará un binario SETUID con los privilegios del propietario del archivo ejecutable (generalmenteroot
), y se ejecutará un binario SETGID con los privilegios de grupo del propietario del grupo del archivo ejecutable. En el caso del passwd
comando, que pertenece root
y es SETUID, permite a los usuarios normales afectar directamente el contenido del archivo de contraseña, de manera controlada y predecible, mediante la ejecución con privilegios de root. Hay muchos otros SETUID
comandos en sistemas similares a Unix ( chsh
, screen
, ping
, su
, etc), todo lo cual requiere privilegios elevados para funcionar correctamente. También hay algunos SETGID
programas, donde el núcleo cambia temporalmente el GID del proceso, para permitir el acceso a los archivos de registro, etc., sendmail
es una utilidad de este tipo.
El sticky bit
sirve un propósito ligeramente diferente. Su uso más común es garantizar que solo la cuenta de usuario que creó un archivo pueda eliminarlo. Piensa en el /tmp
directorio. Tiene permisos muy liberales, que permiten a cualquiera crear archivos allí. Esto es bueno, y permite que los procesos de los usuarios para crear archivos temporales ( screen
, ssh
, etc, mantener la información del estado en /tmp
). Para proteger los archivos temporales de un usuario, /tmp
tiene el bit fijo establecido, de modo que solo yo pueda eliminar mis archivos, y solo usted puede eliminar los suyos. Por supuesto, root puede hacer cualquier cosa, ¡pero tenemos que esperar que el administrador de sistemas no esté trastornado!
Para archivos normales (es decir, para archivos no ejecutables), no tiene mucho sentido establecer los bits SETUID / SETGID. SETGID en directorios en algunos sistemas controla el propietario del grupo predeterminado para los nuevos archivos creados en ese directorio.
Creo que te refieres al bit "SGID" de un archivo, que no es lo mismo que su GID.
Aquí hay un archivo típico en mi computadora (salida de ls -l):
Si nos fijamos en los primeros 10 símbolos,
(a) -: Este es solo un archivo antiguo simple (a diferencia de un directorio, enlace simbólico, canalización, etc.)
(b) rw-: el propietario puede leer y escribir este archivo, pero no ejecutarlo. El propietario es "Bristol", como puede ver más adelante en la línea.
(c) r--: Los miembros del grupo al que pertenece este archivo ("usuarios" en el ejemplo) además del propietario pueden leer, pero no escribir o ejecutar este archivo.
(d) ---: Nadie más puede acceder a este archivo (excepto la raíz, por supuesto).
El campo GID es el que le indica a qué grupo pertenece este archivo, en este caso, "usuarios".
El campo que probablemente quiso decir, en función de su descripción, es el bit SGID, y aquí hay una mejor explicación de la que podría encontrar:
http://www.codecoffee.com/tipsforlinux/articles/028.html
La versión corta es: si un archivo ejecutable tiene el bit SGID establecido, entonces cualquiera que no esté en el grupo pero pueda ejecutar este archivo temporalmente obtiene los derechos de este grupo mientras se ejecuta el programa.
Por ejemplo, si tiene un "spool" grupal que puede leer y escribir archivos en el directorio de cola de impresión, no desea que cualquiera se meta con este directorio pero sí desea que puedan imprimir archivos, puede hacer algunos programas de impresión o secuencias de comandos tienen "spool" grupal y configuran el bit SGID y cuando alguien inicia este programa, el programa ahora puede escribir en el directorio de spooler sin que la persona que lo ejecuta tenga acceso completo.
fuente
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. ¿Qué significa laabbbcccddt
(letra 't')? - Entiendo que "d = directorio", "rwx = leer, escribir, ejecutar"; pero nunca antes había visto la 't' al final. ¿Es ese permiso especial para la carpeta tmp?El GID es, como ha encontrado, el número de identificación de un grupo. Es simplemente una forma conveniente para que el sistema operativo exprese el grupo (usuario) asociado con algo (un proceso, un archivo, etc.); en lugar de un identificador de cadena potencialmente largo, se puede expresar como un número de tamaño fijo.
En un valor de permisos de archivo de cuatro dígitos octales (por ejemplo, 0755), el tercer dígito especifica los permisos del grupo para el archivo. Si omite el primer dígito, es el segundo dígito que especifica los permisos del grupo. Tenga en cuenta que los archivos y directorios se tratan de la misma manera a este respecto, pero que el significado exacto de cada bit de permisos no es intuitivo en el caso de los directorios.
Los dos conceptos están relacionados, pero tienen propósitos muy diferentes.
En cuanto a su pregunta "¿es importante establecer esos permisos?"; siempre se establecen en algo , pero como en la mayoría de los casos el dígito inicial es 0 ("nada especial"), tiende a omitirse por brevedad. Si necesita especificar algún otro valor depende completamente del patrón de uso del archivo o directorio en cuestión.
fuente