¿Qué significa GID?

14

¿Qué significa realmente GID?

Lo busqué en Google y esto es lo que dijo linux.about.com :

Número de identificación de grupo para el proceso. Los números de grupo válidos se proporcionan en /etc/groupy en el campo de /etc/passwdarchivo GID . Cuando se inicia un proceso, su GID se establece en el GID de su proceso padre.

  • Pero ¿qué significa eso?

Los permisos que tengo para mi carpeta están actualmente en 0755

Entiendo que si configuro el UID para el propietario, será 4755

Y si configuro el GID del grupo será 2755

Si configuro el Sticky Bit para otros será 1755

  • ¿Es incluso importante establecer esos permisos?
Kevdog777
fuente

Respuestas:

27

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 passwdcomando 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 passwdcomando, que pertenece rooty 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 SETUIDcomandos en sistemas similares a Unix ( chsh, screen, ping, su, etc), todo lo cual requiere privilegios elevados para funcionar correctamente. También hay algunos SETGIDprogramas, donde el núcleo cambia temporalmente el GID del proceso, para permitir el acceso a los archivos de registro, etc., sendmailes una utilidad de este tipo.

El sticky bitsirve 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 /tmpdirectorio. 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, /tmptiene 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.

D_Bye
fuente
2
Ah genial, gracias por eso. Entonces, ¿el Sticky Bit es como un permiso personal (usuario)? Esa respuesta fue bien redactada y comprensible.
Kevdog777
1
¡Gracias! El bit adhesivo proporciona una pequeña protección para los archivos en un directorio con permisos liberales. No es realmente específico para un usuario dado, ya que se brinda el mismo nivel de protección a todos los archivos, sin importar quién sea el propietario. Es una forma de permitir que cualquiera pueda crear archivos y garantizar que solo el propietario pueda destruirlos.
D_Bye
+1, D_bye, ¿podría compartir un ejemplo de setgid bit set en el directorio? Gracias
Ankit
1
@Ankit Under Solaris (y casi seguramente otros, solo uso * BSD y Solaris), si el bit setgid está configurado en un directorio, cualquier archivo nuevo creado en ese directorio tendrá el mismo propietario del grupo que el directorio mismo, y no heredará el grupo primario de (el usuario que ejecuta) el proceso de creación.
D_Bye
3

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):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

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.

Bristol
fuente
Eso es bueno, gracias por eso. Entiendo la parte de permisos, (la parte abbbcccddd), pero gracias :)
Kevdog777
Acabo de ver mis permisos en la carpeta tmp es drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. ¿Qué significa la abbbcccddt(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?
Kevdog777
La pequeña t es "ejecutable (x) y conjunto de bits fijos". Consulte más arriba para obtener una explicación de por qué esto es habitual en / tmp.
Bristol
3

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.

un CVn
fuente