lunes, 11 de octubre de 2010

CentOS: Administración de Usuarios

2ª entrada sobre el sistema CentOS virtualizado: En esta ocasión, voy a explicar la administración básica de usuarios. Ya hicimos un primer paso anteriormente, pues nos creamos un usuario para poder hacer las prácticas. Ahora, vamos a avanzar un poco mas.

Tras arrancar nuestra máquina virtual, nos logeamos como root, pues vamos a hacer tareas administrativas en el sistema.

Antes de comenzar con la AU (Administración de Usuarios)  debemos tener en cuenta que en los sistemas GNU/Linux hay 3 tipos de usuarios:


Cuenta de Usuario: Tipo de cuenta mas usual.  Ofrece acceso a la Shell, por este motivo no podemos dar cuentas de usuario a cualquier persona: Esta podría acceder a la configuración del equipo, ver/robar datos, etc.

Cuenta de Acceso Restringido (Restricted account): Cuentas que proveen los servicios necesarios a un determinado usuario. Un ejemplo muy usado es cuentas restringidas para usar solo correo electrónico. Son mas seguras, pues generalmente no permiten acceder a la shell.

Cuentas para Programas y Procesos: Usadas por algunos programas que necesitan sus propios identificadores de usuario.

También voy a enfatizar en la cuenta root, que básicamente es una cuenta con todos los privilegios en un Sistema (Por lo tanto, la cuenta mas deseada por cualquier intruso). Es una cuenta de usuario desde la cual se puede hacer cualquier tarea sobre cualquier usuario. El peligro es doble por este motivo, ya que podemos perjudicar a otros usuarios o a nosotros mismos al cometer un error desde la cuenta root. Por ello, siempre se recomienda usarla cuando es estrictamente necesario: Nunca para tareas normales.


El programa useradd

Ya hemos usado este programa anteriormente, ahora voy a explicar como funciona, para comprender lo que conlleva crear un usuario.

Todas las cuentas de usuario residen en el archivo /etc/passwd en el cual se guarda la información de cada usuario. La sintaxis es la siguiente:

Nombre:Contraseña:UID:GID:Nombre_completo:directorio:shell

Nombre: Nombre del usuario
Contraseña: Su contraseña cifrada
UID: User ID, Identificación de usuario
GID: Gruop ID, Identificación de grupo
Nombre_completo: Nombre completo del usuario
Directorio: Directorio de usuario
Shell: Tipo de Shell

El UID y el GID se suelen otorgar automáticamente por secuencia. P. ej., si el usuario "pepe" tiene el UID 600, el usuario creado después de pepe tendrá el UID 601.

Podemos agrupar a varios usuarios, en lo que llamamos un grupo. En CentOS se suele crear por defecto un grupo para cada usuario al usar el comando useradd, con el mismo ID que el usuario.

El archivo de grupos lo podemos encontrar en /etc/group y su sintaxis es la siguiente:

Nombre_grupo:contraseña_grupo:GID:nombres_de_registro

(No todos los grupos requieren contraseña) Y creo que no hace falta explicar demasiado, pues la sintaxis es mas clara que para el archivo de usuarios.

El programa useradd crea también el directorio home de cada usuario: En este directorio es donde residen nuestros archivos personales (En una de las entradas anteriores, creamos un directorio nuevo dentro del home de nuestro usuario).

Normalmente, el directorio creado es /home/nombredeusuario y al usar el comando useradd, se crean automáticamente todos los permisos sobre el directorio. Cada usuario solo puede acceder a su propio usuario (A no ser que el administrador de sistemas cambie las propiedades de los directorios, y, por ejemplo, otorgue a 1 usuario el poder de leer o modificar otros directorios. El usuario root, como ya hemos dicho, tiene la posibilidad de entrar, leer y modificar todos los directorios).

Finalmente, el comando useradd otorga las configuraciones de usuario, a través de un directorio armazón: /etc/skel . Generalmente los archivos están ocultos, podemos verlos con el comando ls -a.


Por el contrario, el programa userdel elimina usuarios del sistema. El primer paso que sigue el programa para eliminar un usuario, es eliminarle de /etc/passwd y de /etc/group. Posteriormente elimina el home del usuario, con todo lo que haya dentro. Pero, elimina estrictamente el home: El usuario que va a ser borrado puede tener archivos fuera del directorio home (P. ej. archivos temporales o programas).


Prácticas

Es la hora de poner en práctica la teoría. El primer paso, desde la cuenta root, es crear un usuario. Vamos a utilizar algunos parámetros, en vez de crearlo sencillamente como hicimos en otra entrada.
useradd pepe -u 1050
Con esta línea, creamos el usuario pepe, y en vez de dejar que se defina el UID automáticamente, lo definimos nosotros como 1050.

Sin salir de la cuenta root, debemos definir la contraseña para poder hacer login en nuestra nueva cuenta. Esto se hace con el comando passwd.
passwd pepe
Una vez introducimos la nueva contraseña, podemos terminar la sesión como root y logearnos como pepe.

Dentro de nuestro usuario "pepe", podemos ver nuestro directorio con el comando pwd (En este caso, /home/pepe ). Para ver que no tenemos permisos para acceder a las home de otros usuarios, podemos intentar cambiar de directorio para entrar en algún home. Al ejecutar, por ejemplo, cd /home/sergio, nos dará un error indicando que no tenemos los permisos.

Ahora vamos a volver al usuario root, para comprobar que nuestro usuario está añadido en /etc/passwd. Para esto, podemos usar la orden more /etc/passwd

Al final del archivo aparece nuestro usuario pepe, con el uid 1050. Seguramente os habréis fijado que en el campo de contraseña, aparece una x. Esto es por que por defecto se instala un programa llamado shadow que oculta las contraseñas cifradas en otro archivo ( /etc/shadow ). Podemos ver también como está añadido en el archivo /etc/group.

Ahora vamos a proceder a eliminar este usuario, con el comando userdel. Esto lo debemos de hacer desde una cuenta de privilegios: Evidentemente, poder crear y eliminar usuarios desde una cuenta normal, sería un error de seguridad desproporcionado. 

Para eliminar el usuario, usamos userdel pepe. Tan sencillo como eso. Podemos volver a revisar los archivos passwd y group, y ver que nuestro usuario ha desaparecido. Podemos eliminar el directorio home con la orden rm -r /home/pepe. El programa nos preguntará también si deseamos borrar los archivos de configuración dentro del home.

También podemos crear grupos con el comando groupadd y eliminarlos con el comando groupdel.

Por ejemplo, podemos crear el grupo Usuarios con el comando groupadd Usuarios. Para añadir un usuario al grupo usamos el comando usermod:
usermod -G Usuarios sergio
Con esa orden, añadimos al usuario sergio al grupo Usuarios. Si nos dirigimos de nuevo al archivo /etc/group, veremos el grupo Usuarios, conteniendo por ahora al usuario sergio.

Es probable que todavía no se entienda la finalidad de crear grupos, mas adelante será explicada, pero para resumir, si un usuario pertenece a determinado grupo, puede acceder a zonas extra, que pertenezcan a un grupo de usuarios, por ejemplo. Esto es útil para grupos de trabajadores que comparten trabajos, o cualquier situación similar.


Evidentemente, la creación de usuarios y grupos ha evolucionado desde que existen las interfaces gráficas, por lo tanto en la actualidad es mas fácil crearlos. Por ejemplo, en ubuntu (Con el entorno GNOME) basta con ir a Sistema > Administración > Usuarios y Grupos para gestionar los usuarios y grupos.

2 comentarios: