En Unix sistemas, varios usuarios se pueden poner en grupos . Los permisos del sistema de archivos POSIX y Unix convencional se organizan en tres clases, usuario , grupo y otros . El uso de grupos permite delegar habilidades adicionales de manera organizada, como el acceso a discos, impresoras y otros periféricos . Este método, entre otros, también permite al superusuario delegar algunas tareas administrativas a usuarios normales, similar al grupo de Administradores en Microsoft Windows NT y sus derivados.
Un identificador de grupo , a menudo abreviado como GID , es un valor numérico que se utiliza para representar un grupo específico. [1] El rango de valores para un GID varía entre los diferentes sistemas; como mínimo, un GID puede estar entre 0 y 32.767, con una restricción: el grupo de inicio de sesión del superusuario debe tener GID 0. Este valor numérico se utiliza para hacer referencia a los grupos en los archivos /etc/passwd
y /etc/group
o sus equivalentes. Los archivos de contraseñas ocultas y el Servicio de información de red también se refieren a GID numéricos. El identificador de grupo es un componente necesario de los procesos y sistemas de archivos de Unix .
Grupos suplementarios
En los sistemas Unix, cada usuario debe ser miembro de al menos un grupo, el grupo primario , que se identifica por el GID numérico de la entrada del usuario en la base de datos passwd, que se puede ver con el comando getent passwd
(generalmente almacenado en /etc/passwd
o LDAP ) . Este grupo se denomina ID de grupo principal . Un usuario puede aparecer como miembro de grupos adicionales en las entradas relevantes de la base de datos del grupo, que se puede ver con getent group
(generalmente almacenado en /etc/group
o LDAP ); los ID de estos grupos se denominan ID de grupo suplementarios .
Efectivo vs real
Los procesos Unix tienen un ID efectivo (EUID, EGID), real (UID, GID) y guardado (SUID, SGID). Normalmente estos son idénticos, pero en setuid
y setgid
procesos son diferentes.
Convenciones
Tipo
Originalmente, se utilizó un entero de 16 bits con signo. Dado que el signo no era necesario (los números negativos no hacen identificaciones de grupo válidas) ahora se usa un número entero sin signo, lo que permite identificaciones de grupo entre 0 y 65.535. Los sistemas operativos modernos suelen utilizar números enteros de 32 bits sin firmar, que permiten ID de grupo entre 0 y 4.294.967.295.
Rangos reservados
Muchos sistemas Linux reservan el rango de números GID de 0 a 99 para grupos asignados estáticamente, y 100-499 o 100-999 para grupos asignados dinámicamente por el sistema en scripts posteriores a la instalación. Estos intervalos se especifican a menudo en /etc/login.defs
, por useradd
, groupadd
y herramientas similares.
En FreeBSD, los porteros que necesitan un GID para su paquete pueden elegir uno gratis del rango de 50 a 999 y luego registrar esta asignación estática en los puertos / GID . [2]
Valores especiales
- 0: el superusuario normalmente tiene un GID de cero (0).
- −1:
(gid_t) -1
POSIX reserva el valor para identificar un argumento omitido. [3] - 65,534: El kernel de Linux tiene por defecto 2 16 −2 = 65,534 (que muchas distribuciones de Linux asignan al nombre de grupo "nogroup") cuando un GID de 32 bits no encaja en el valor de retorno de una llamada al sistema de 16 bits. [4] El valor también lo devuelve idmapd si un nombre de grupo en un paquete NFSv4 entrante no coincide con ningún grupo conocido en el sistema.
Grupos personales
Muchos administradores de sistemas asignan a cada usuario también un grupo principal personal que tiene el mismo nombre que el nombre de inicio de sesión del usuario y, a menudo, también tiene el mismo GID numérico que el UID del usuario. Estos grupos personales no tienen otros miembros y facilitan la colaboración con otros usuarios en directorios compartidos, al permitir que los usuarios trabajen habitualmente umask 0002
. De esta forma, los archivos recién creados pueden tener habilitados de forma predeterminada permisos de escritura para los miembros del grupo, porque esto normalmente solo habilitará el acceso de escritura para los miembros del grupo personal, es decir, solo para el propietario del archivo. Sin embargo, si se crea un archivo en un directorio compartido que pertenece a otro grupo y tiene el bit setgid establecido, entonces el archivo creado automáticamente se convertirá en escribible para los miembros del grupo de ese directorio también.
En muchos sistemas Linux, la USERGROUPS_ENAB
variable en /etc/login.defs
controla si a los comandos les gusta useradd
o userdel
agregan o eliminan automáticamente un grupo personal asociado.
Ver también
Referencias
- ^ http://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/V1_chap03.html#tag_03_189
- ^ FreeBSD Porter's Handbook , Sección 6.26: Agregar usuarios y grupos
- ^ http://pubs.opengroup.org/onlinepubs/009695399/functions/chown.html
- ^ https://lwn.net/Articles/532593/