martes, 19 de febrero de 2008

Gestión de Grupos de Usuarios en Linux

La gestión de grupos es básica para poder organizar permisos y accesos a recursos de forma adecuada.

La organización consiste en crear un recurso, un directorio por ejemplo, asignarle un propietario y un grupo, asignar los permisos pertinentes al grupo y luego incluir en ese grupo a todos aquellos usuario que queramos que puedan trabajar con él.

Como hemos visto en la gestión de usuarios, un usuario puede pertenecer a múltiples grupos.

Las órdenes para la gestión de grupos son muy parecidas a la gestión de usuarios como veremos a continuación:

Base de datos de grupos del sistema

La base de datos de grupos del sistema se gestionan de una forma muy parecida a como lo hacían los usuarios, un fichero /etc/group similar a /etc/passwd y un nuevo fichero /etc/gshadow similar al /etc/shadow, todos con las mismas restricciones que sus homólogos.

/etc/group

Este fichero está formado por líneas del tipo:

nombre_grupo:contraseña:GID:lista_usuarios

Los tres primeros campos tienen las mismas características que en el fichero /etc/passwd. Si el campo de contraseña aparece vacío no se usa contraseña para este grupo.

La contraseña se solicita con la orden newgrp, que se utiliza para obtener una nueva shell del sistema en la que el grupo principal del usuario es el grupo que se solicitó como argumento de esta orden.

En cuanto a la lista de usuarios, en ese campo aparecerán separados por comas todos los usuarios que pertenezcan al correspondiente grupo.

/etc/gshadow

Las características del fichero /etc/gshadow son similares a las del fichero /etc/shadow salvo unas pequeñas diferencias.

En este fichero existe una campo más, el de los administradores del grupo. Estos usuario podrán añadir, quitar usuarios del grupo, modificar la contraseña del grupo y deshabilitar el acceso mediante newgrp. Además, como en /etc/shadow, sólo tiene permisos de acceso a él el root.

Comprobar los grupos de un usuario: groups

Si un usuario quisiera comprobar a qué grupos pertenece bastaría que ejecutara la orden groups.

Por ejemplo, la usuaria julia ejecuta:

$ groups
julia admin usuarios

lo que quiere decir que su grupo principal es julia y que también pertenece a los grupos admin y usuarios.

Usuarios miembros de un grupo

Un usuario puede pertenecer a varios grupos y puede operar con los recursos que sean propiedad de ese grupo con los permisos que tenga asignados.

Pero para ciertas operaciones como creación de ficheros nuevos o al lanzar un proceso el grupo que se asigna es el grupo principal del usuario; es lógico, por ejemplo un fichero sólo pertenece a un grupo.

Si queremos que los nuevos ficheros que se creen o los procesos que se lancen pertenezcan a otro grupo deberíamos poder cambiar el grupo principal. Este cambio de grupo principal lo realiza la orden

newgrp

Por ejemplo, la usuaria del sistema julia tiene como grupo principal predeterminado el grupo julia y también pertenece al grupo admin.

Si quisiera que su grupo principal fuera admin tendría que ejecutar:

$ newgrp admin

y la ejecución de la orden groups quedaría como:

$ groups
admin julia usuarios

Usuarios no miembros de un grupo

Los usuario no miembros de un grupo también pueden acceder a un grupo al que no pertenecen utilizando la orden

newgrp

En este caso al ejecutar la orden newgrp el sistema le solicita una contraseña para aprobar o no el acceso del usuario.

Para que un grupo admita a usuarios que no son miembros es necesario que el administrador del grupo le haya asignado una contraseña al grupo.

Más adelante veremos como podemos asignar, quitar o deshabilitar una contraseña para un grupo.

Creación de un grupo: groupadd

La orden groupadd añade un nuevo grupo al sistema.

En caso de que sea necesario le podemos incluir la opción -g para indicar un GID concreto que no exista en /etc/group.

Por ejemplo

# groupadd admin

añadiría un nuevo grupo al sistema llamado admin y

# groupadd -g 1000 correo

crearía un grupo llamado correo con GID 1000

Administrar un grupo: gpasswd

La orden gpasswd nos facilita la tarea de administrar un grupo de usuarios con sus diversas opciones que vamos a ver separadas según su utilidad

Añadir administradores de grupo

El root puede utilizar la opción -A para añadir usuarios administradores de grupo.

Estos usuarios tendrán permiso para poder dar de alta otros usuarios, eliminarlos, poner contraseña al grupo, quitar la contraseña o deshabilitar el acceso al grupo.

La forma de uso de la opción -A sería:

# gpasswd -A usuario grupo

por ejemplo:

# gpasswd -A jose admin

con lo que estaríamos añadiendo al usuario antonio como administrador del grupo admin.

Un administrador del grupo no tiene por qué ser miembro de dicho grupo, aunque en cualquier momento podría agregarse a sí mismo.

Añadir miembros al grupo

Ante todo, para agregar un usuario un grupo es necesario que este usuario exista en el sistema.

Hay diversas formas de añadir un miembro al grupo.

Se podría hacer con la orden usermod, pero resulta una tanto incómoda porque tenemos que poner la lista completa de grupos a los que pertenece el usuario; esta orden está pensada para modificar los datos de los usuarios más que para modificar los grupos.

Las otras opciones implican el uso de

gpasswd

El root puede agregar miembros a un grupo con la opción -M.

La forma de uso de esta opción sería:

# gpasswd -M usuario grupo

por ejemplo

# gpasswd -M julia admin

con lo cual estaríamos incluyendo al usuario julia como miembro del grupo admin.

También los administradores de grupo pueden agregar nuevos usuarios con la opción -a de la misma forma que lo hacía el root con la opción -M.

Veámoslo :

# gpasswd -M julia admin

y tendría el msimo efecto de añadir el usuario julia al grupo admin.

Si quien quiere agregar un usuario a un grupo es un administrador de ese grupo tendría que utilizar la opción -a de

gpasswd

Por ejemplo:

$ gpasswd -a sierra admin

y estaría añadiendo al usuario sierra al grupo admin.

Eliminar miembros del grupo

Tanto el root como los administradores de grupo pueden eliminar un usuario de un grupo utilizando la opción -d de

gpasswd

Por ejemplo el usuario jose es administrador del grupo admin y para eliminar de este grupo al usuario juan tendría que ejecutar:

$ gpasswd -d juan admin

Asignar contraseña a un grupo

En principio sólo los miembros de un grupo pueden utilizar la orden

newgrp

para seleccionar un grupo principal alternativo.

Si quisieramos que cualquier usuario pudiera acceder a un grupo sin ser miembro de él, tendríamos que asignarle una contraseña al grupo.

Esto lo pueden hacer el root y los administradores del grupo.

La asignación de contraseña a un grupo se hace con la orden

gpasswd

sin opciones e indicando el nombre del grupo al que le queremos asignar contraseña.

Por ejemplo, para asignarle contraseña al grupo admin tendríamos que ejecutar:

$ gpasswd admin

y el sistema respondería solicitando la contraseña dos veces.

No hay comentarios: