Usuarios en GNU/Linux: algunos comandos de admin

Publicado por Diego Córdoba en

Hoy veremos algunos comandos y utilidades necesarias para poder administrar los usuarios del sistema operativo GNU/Linux, cómo agregarlos, cómo modificarlos, y cómo eliminarlos, y algunos comandos alternativos e interesantes.


Añadiendo usuarios al sistema

Para añadir nuevos usuarios en el sistema, o sea, agregarlos a nuestra base de datos de usuarios, a saber, los archivos /etc/passwd y /etc/shadow, podemos utilizar una herramienta llamada adduser .

adduser  es un comando que nos va a pedir de manera interactiva los datos del usuario en cuestión, e irá creando su estructura en el sistema, tanto añadiéndolo a los archivos de base de datos, como creando el directorio home del usuario, y el esquema básico de archivos de configuración, como por ejemplo, .profile con la configuración de variables de entorno, o .bashrc con la configuración inicial del intérprete de comandos.

Estos archivos generalmente se incluyen en el directorio /home de cada usuario, y se extraen de un esquema template que se encuentra en el directorio /etc/skel.

Podemos ver el contenido de /etc/skel mostrando los archivos ocultos de esta forma:

diego@cryptos:~$ ls -lha /etc/skel/
total 32K
drwxr-xr-x 2 root root 4.0K Feb 20 12:48 .
drwxr-xr-x 123 root root 12K Apr 16 17:35 ..
-rw-r--r-- 1 root root 21 Feb 7 04:15 .bash_logout
-rw-r--r-- 1 root root 57 Feb 7 04:15 .bash_profile
-rw-r--r-- 1 root root 141 Feb 7 04:15 .bashrc
-rw-r--r-- 1 root root 3.7K Oct 23 14:58 .screenrc

linux useradd userdel deluser adduser user usuarios

Veamos una salida del comando adduser :

[die@debian ~]$ sudo adduser ejemplo
Adding user `ejemplo' ...
Adding new group `ejemplo' (1004) ...
Adding new user `ejemplo' (1003) with group `ejemplo' ...
Creating home directory `/home/ejemplo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for ejemplo
Enter the new value, or press ENTER for the default
    Full Name []: Usuario
    Room Number []: 123
    Work Phone []: 123123
    Home Phone []: 123123
    Other []: --
Is the information correct? [Y/n] 
[die@debian ~]$

Podemos verificar que se ha creado correctamente buscándolo en la base de datos de usuarios:

[die@debian ~]$ grep ejemplo /etc/passwd
ejemplo:x:1003:1004:Usuario,123,123123,123123,--:/home/ejemplo:/bin/bash

y además podemos verificar su directorio home:

[die@debian ~]$ ls /home/
die  ejemplo  lost+found  user  user1

Otra forma en la que podemos ver la información de un usuario particular de una manera más «amigable», es utilizando el comando finger  de esta forma:

[die@debian ~]$ finger ejemplo
Login: ejemplo                    Name: Usuario
Directory: /home/ejemplo                Shell: /bin/bash
Office: 123, 123123            Home Phone: 123123
Never logged in.
No mail.
No Plan.

En el caso de no disponer del comando finger  en el sistema, ni en sus repos (como es el caso de ArchLinux, o bien podemos instalarlo desde un paquete de comandos externo, o podemos utilizar pinky , un comando con similares características, que va a servirnos de igual manera:

diego@cryptos:~$ pinky -l diego
Login name: diego In real life:
Directory: /home/diego Shell: /bin/bash

Modificando usuarios del sistema

linux useradd userdel deluser adduser linux useradd userdel deluser adduser user usuariosAhora supongamos que necesitamos modificar algunos de los datos del usuario en cuestión. En GNU/Linux disponemos de algunos comandos propicios para ello, y aunque también podemos modificar manualmente los archivos de base de datos de usuarios, no es recomendable, principalmente para evitar errores de sintaxis con nuestras ediciones.

Uno de los principales comandos de modificación de datos de usuarios es usermod . veamos algunos ejemplos de su uso sobre el usuario que acabamos de crear:

Modificador «-c» – Cambiamos el nombre completo del usuario:

[die@debian ~]$ sudo usermod -c «Diego Cordoba» ejemplo

Modificador «-d» – Cambiamos el directorio home:

[die@debian ~]$ sudo usermod -d /mnt ejemplo

Modificador «-s» – Cambiamos el shell por defecto del usuario:

[die@debian ~]$ sudo usermod -s /bin/sh ejemplo

Verificamos que los datos se hayan modificado:

[die@debian ~]$ finger ejemplo
Login: ejemplo                    Name: Diego Cordoba
Directory: /mnt                         Shell: /bin/sh
Never logged in.
No mail.
No Plan.

También podríamos haber cambiado todos estos datos con la misma línea de usermod , y pasándole todos los argumentos, de la siguiente forma:
usermod -c «diego cordoba» -d /mnt -s /bin/sh

Modificador «-p» – Cambiando la password de un usuario:

Para cambiar la contraseña del usuario podemos usar la opción -p en usermod , de la siguiente forma:

usermod -p nuevaPassword123 ejemplo

Pero como se puede apreciar, la password va a quedar visible en pantalla durante su modificación, y luego quedará visible almacenada en el historial de comandos del usuario, por lo que no resulta recomendable usar esta opción (o luego de ejecutarlo, borrar el historial de comandos con «history -c » :P).

En su lugar, deberíamos utilizar el comando passwd para cambiar la contraseña, de esta forma:

[die@debian ~]$ sudo passwd ejemplo 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Aquí la password no se ve explícitamente en pantalla, e igualmente queda almacenada.

Cabe aclarar también que aquí cambiamos la password del usuario ejemplo desde nuestra cuenta de root/administrador, pero cada usuario puede cambiar su propia password utilizando el comando passwd  a secas, sin argumentos.

Eliminando un usuario

Para eliminar un usuario podemos usar el comando userdel  de la siguiente forma:

[die@debian ~]$ sudo userdel ejemplo

Si además quisiésemos eliminar toda la información del usuario, como su directorio home, o la base de datos de mails del usuario, podremos utilizar la opción -r de esta forma:

[die@debian ~]$ sudo userdel -r ejemplo

Comandos no interactivos

El lector también podrá conocer comandos como useradd o userdel . Estos comandos, comparados con adduser  y deluser , son conocidos como utilidades de bajo nivel para la administración de usuarios, y suelen ser utilizados en scripts no interactivos de alta y eliminación de usuarios.

Esto es, por ejemplo, para crear un usuario, o eliminarlo, sin necesidad de ir respondiendo las preguntas interactivas del comando adduser, y de esta forma, poder automatizar la creación de varios usuarios mediante scripting.

Veamos cómo crearíamos, por ejemplo, a nuestro usuario «ejemplo» con los datos por defecto, usando useradd:

useradd -d /home/ejemplo -m -u 1500 -g 1500 -k /etc/skel -s /bin/bash ejemplo

Con el que estaremos creando un usuario con uid y gid iguales a 1500, con un directorio skel por default, bash como intérprete de comandos por defecto, y un directorio home con su nombre de usuario.

NOTA: si el comando «finger » no está instalado en el sistema operativo por defecto, como ocurre en Debian, podemos instalarlo con el gestor de paquetes y actualizaciones de nuestra distro:

apt-get install finger

Conclusiones

Hemos hablado sobre cómo interactuar con la base de datos de usuarios del sistema. Luego trataremos sobre grupos, y la administración de usuarios y grupos, para poder gestionar permisos y privilegios de usuarios y grupos del sistema respecto de los recursos del sistema de archivos.

Espero les sea de utilidad!

Cualquier comentario, tip, sugerencia, etc, pueden hacerlo en los comentarios!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador