En sistemas tipo Unix , se pueden agrupar varios usuarios . 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 capacidades adicionales de forma organizada, como el acceso a discos, impresoras y otros periféricos . Este método, entre otras cosas, también permite al superusuario delegar algunas tareas administrativas a usuarios normales, de forma similar al grupo de administradores de 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 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 para el superusuario debe tener GID 0. Este valor numérico se utiliza para referirse a grupos en los archivos y o sus equivalentes. /etc/passwdLos archivos de contraseñas de sombra 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 sistemas de archivos y procesos de Unix ./etc/group
Atributos del proceso
El estándar POSIX admite tres campos GID diferentes en la tabla de descriptores de proceso, para permitir que los procesos privilegiados asuman diferentes roles de forma dinámica:
ID de grupo efectivo
El GID efectivo ( egid) de un proceso se utiliza para las comprobaciones de acceso a archivos y también puede afectar a la creación de archivos, dependiendo de la semántica de la implementación específica del kernel en uso y posiblemente de las opciones de montaje utilizadas. Según la semántica de BSD Unix , la propiedad de grupo asignada a un archivo recién creado se hereda incondicionalmente de la propiedad de grupo del directorio en el que se crea. Según la semántica de AT&T UNIX System V (también adoptada por variantes de Linux ), a un archivo recién creado se le asigna normalmente la propiedad de grupo especificada por el egiddel proceso que crea el archivo. La mayoría de los sistemas de archivos implementan un método para seleccionar si se debe utilizar la semántica BSD o AT&T con respecto a la propiedad de grupo de un archivo recién creado; la semántica BSD se selecciona para directorios específicos cuando se establece el permiso S_ISGID (s-gid). [ 2 ]
ID de grupo real
El GID real ( rgid) identifica al propietario real del grupo del proceso.
ID de grupo guardado
El ID de grupo guardado se utiliza cuando un programa que se ejecuta con privilegios elevados necesita realizar temporalmente algún trabajo sin privilegios; cambiar egidde un valor privilegiado (normalmente 0) a algún valor sin privilegios (cualquier cosa que no sea el valor privilegiado) hace que el valor privilegiado se almacene en sgid. Posteriormente, el de un programa egidse puede volver a establecer al valor almacenado en sgid, de modo que se puedan restaurar los privilegios elevados; un proceso sin privilegios puede establecer su egida uno de solo tres valores: el valor de rgid, el valor de sgid, o el valor de egid.
Grupos suplementarios
Cada usuario debe ser miembro de al menos un grupo, el grupo principal , que se identifica mediante 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/passwdo LDAP ). Este grupo se denomina ID de grupo principal . Un usuario puede figurar como miembro de grupos adicionales en las entradas correspondientes de la base de datos de grupos, que se puede ver con getent group(generalmente almacenado en /etc/groupo LDAP ); los ID de estos grupos se denominan ID de grupo suplementarios .
Convenciones
Tipo
Originalmente, se utilizaba un entero con signo de 16 bits. Dado que el signo no era necesario (los números negativos no son identificadores de grupo válidos), ahora se utiliza un entero sin signo, lo que permite identificadores de grupo entre 0 y 65 535. Los sistemas operativos modernos suelen utilizar enteros sin signo de 32 bits, que permiten identificadores de grupo entre 0 y 4 294 967 295.
Áreas reservadas
Muchos sistemas Linux reservan el rango de números GID de 0 a 99 para grupos asignados estáticamente, y de 100 a 499 o de 100 a 999 para grupos asignados dinámicamente por el sistema en scripts posteriores a la instalación. Estos rangos se especifican a menudo en /etc/login.defs, para useraddy groupaddherramientas similares.
En FreeBSD, los porteadores que necesitan un GID para su paquete pueden elegir uno libre del rango 50 a 999 y luego registrar esta asignación estática en ports/GIDs . [ 3 ]
Valores especiales
- 0: El superusuario normalmente tiene un GID de cero (0).
- −1: El valor
(gid_t) -1está reservado por POSIX para identificar un argumento omitido. [ 4 ] - 65,534: El kernel de Linux establece 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 cabe en el valor de retorno de una llamada al sistema de 16 bits. [ 5 ] 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 un grupo primario personal con el mismo nombre que su nombre de usuario y, a menudo, con el mismo GID numérico que su UID. Estos grupos personales no tienen otros miembros y facilitan la colaboración con otros usuarios en directorios compartidos, ya que permiten a los usuarios trabajar habitualmente con ellos umask 0002. De esta forma, los archivos recién creados pueden tener permisos de escritura habilitados por defecto para los miembros del grupo, puesto que 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 activado , el archivo creado también será automáticamente escribible por los miembros del grupo de ese directorio.
En muchos sistemas Linux, la USERGROUPS_ENABvariable /etc/login.defscontrola si los comandos como useraddo userdelagregan o eliminan automáticamente un grupo personal asociado.
Véase también
Referencias
- ↑ "Definiciones" . pubs.opengroup.org . Consultado el 6 de diciembre de 2021 .
- ↑ – Manual de referencia de comandos de usuario de Solaris 11.4
- ↑ Manual del administrador de FreeBSD , Sección 6.26: Agregar usuarios y grupos
- ↑ "chown" . pubs.opengroup.org . Consultado el 6 de diciembre de 2021 .
- ↑ "Espacios de nombres en funcionamiento, parte 5: Espacios de nombres de usuario [ LWN.net ] " . lwn.net . Consultado el 06-12-2021 .
- Unix
- Tecnología del sistema de archivos Unix