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:
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
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
Ahora 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!