Usuarios en GNU/Linux: algunos comandos de admin

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:

linux useradd userdel deluser adduser user usuarios

Veamos una salida del comando adduser :

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

y además podemos verificar su directorio home:

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:

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:

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:

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:

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:

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!