¿Qué significa realmente GID?
Lo busqué en Google y esto es lo que linux.about.com dijo:
Número de identificación de grupo para el proceso. Los números de grupo válidos se proporcionan en
/etc/group
y en el campo GID del archivo/etc/passwd
. Cuando se inicia un proceso, su GID se establece en el GID de su proceso principal.
- Pero, ¿qué significa eso?
Los permisos que tengo para mi carpeta se encuentran actualmente en 0755
Entiendo que si configuro el UID para el propietario, será 4755
Y si configuro el GID del grupo, será 2755
Si Configuré el Sticky Bit para otros, será 1755
- ¿Es incluso importante establecer esos permisos?
Respuesta
Cada proceso en un sistema tipo UNIX, al igual que cada archivo, tiene un propietario (el usuario, ya sea real o un sistema «pseudo -user «, como daemon
, bin
, man
, etc.) y un grupo dueño. El propietario del grupo para los archivos de un usuario suele ser el grupo principal de ese usuario y, de manera similar, cualquier proceso que inicie suele ser propiedad de su ID de usuario y de su ID de grupo principal.
A veces Sin embargo, es necesario tener privilegios elevados para ejecutar ciertos comandos, pero no es deseable otorgar derechos administrativos completos. Por ejemplo, el comando passwd
necesita acceso al archivo de contraseñas ocultas del sistema para que pueda 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 su lugar, debe haber otra forma de otorgar privilegios elevados temporalmente a los usuarios para que realicen ciertas tareas. Para eso son los bits SETUID y SETGID. Es una forma 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 (normalmente root
), y un binario SETGID se ejecutará con los privilegios de grupo del propietario del grupo del ejecutable. expediente. En el caso del comando passwd
, que pertenece a root
y es SETUID, permite a los usuarios normales afectar directamente el contenido de la contraseña. file, de manera controlada y predecible, ejecutando con privilegios de root. Hay muchos otros comandos SETUID
en sistemas similares a UNIX (chsh
, screen
, ping
, su
, etc.), todos los cuales requieren privilegios elevados para funcionar correctamente. También hay algunos programas SETGID
, donde el kernel cambia temporalmente el GID del proceso, para permitir el acceso a los archivos de registro, etc. sendmail
es una gran utilidad.
El sticky bit
tiene un propósito ligeramente diferente. Su uso más común es asegurarse de que solo la cuenta de usuario que creó un archivo pueda eliminarlo. Piense en el directorio /tmp
. Tiene permisos muy liberales, que permiten a cualquiera crear archivos allí. Esto es bueno y permite que los procesos de los usuarios creen archivos temporales (screen
, ssh
, etc.), mantener la información de estado en /tmp
). Para proteger los archivos temporales de un usuario, /tmp
tiene el bit adhesivo establecido, de modo que solo yo pueda eliminar mis archivos y solo tú borra el tuyo. Por supuesto, root puede hacer cualquier cosa, ¡pero tenemos que esperar que el administrador del sistema no esté trastornado!
Para archivos normales (es decir, para archivos no ejecutables), no tiene mucho sentido configurar SETUID / SETGID bits. SETGID en directorios en algunos sistemas controla el propietario del grupo predeterminado para los nuevos archivos creados en ese directorio.
Comentarios
- Ah, increíble, gracias ¿Por lo tanto, Sticky Bit es como un permiso personal (de usuario)? Esa respuesta estaba bien redactada y era comprensible.
- ¡Gracias! El Sticky Bit proporciona un poco de protección para archivos en un directorio con liberal permisos. No es ‘ realmente específico para un usuario determinado, ya que se ofrece el mismo nivel de protección a todos los archivos, sin importar quién sea el propietario. Es ‘ es una forma de permitir que cualquiera cree archivos y de garantizar que solo el propietario pueda destruirlos.
- +1, D_bye, ¿podría compartir un ejemplo de setgid bit establecido en el directorio?Gracias
- @Ankit Bajo Solaris (y casi con certeza otros – aunque 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 como el directorio en sí, y no heredará el grupo principal de (el usuario que ejecuta) el proceso de creación.
Respuesta
Creo que te refieres al bit» SGID «de un archivo, que no es lo mismo que su GID.
Aquí» 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 observa los primeros 10 símbolos,
(a) -: Este es solo un archivo antiguo simple (en contraposición a 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) que no sean el propietario pueden leer, pero no escribir ni ejecutar este archivo.
(d) —: A 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 al que probablemente se refería, según su descripción, es el bit SGID, y aquí hay una mejor explicación de la que se me ocurrió:
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 puede ejecutar este archivo obtiene temporalmente los derechos de este grupo mientras se ejecuta el programa.
Por ejemplo, si tiene un grupo «spool» que puede leer y escribir archivos en el directorio del spooler de impresión, no » No quiero que cualquiera se meta con este directorio, pero quiere que puedan imprimir archivos, puede hacer que algún programa de impresión o script tenga un grupo «spool» y establezca el bit SGID y cuando alguien inicie este programa, el programa ahora puede escribir en el directorio de spooler sin que la persona esté ejecutando obteniendo acceso completo.
Comentarios
- Eso es bueno, gracias por eso. Entiendo la parte de los permisos, (la parte abbbcccddd), pero eso sí 🙂
- Acabo de ver que mis permisos en la carpeta tmp son
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. ¿Qué significaabbbcccddt
(letra ‘ t ‘)? – Entiendo que » d = directorio «, » rwx = read, escribir, ejecutar «; pero nunca antes había visto el ‘ t ‘ al final. ¿Es ese permiso especial para la carpeta tmp? - La t pequeña es » ejecutable (x) y el conjunto de bits adhesivos «. Consulte más arriba para obtener una explicación de por qué esto es habitual en / tmp.
Respuesta
El GID es, como que ha encontrado, el número de identificación de un grupo. Es simplemente una forma conveniente para que el sistema operativo exprese el grupo (de usuarios) asociado con algo (un proceso, un archivo, etc.); en lugar de un identificador de cadena potencialmente larga, 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 al archivo. Si omite el primer dígito, es el segundo dígito el que especifica los permisos del grupo. Tenga en cuenta que los archivos y directorios se tratan de la misma manera en este sentido, 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 siquiera importante establecer esos permisos?»; siempre se establecen en algo , pero dado que 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 de el patrón de uso del archivo o directorio en cuestión.