En este post vamos a ver cómo crear, eliminar, cambiar datos y listar los usuarios existentes en el sistema operativo Linux Ubuntu. Será algo así como un CRUD, pero esta vez con usuarios del sistema.
Los comandos que se verán son:
Adicionalmente veremos cómo listar únicamente los nombres de usuario, y cómo ver cuáles usuarios son superusuarios o cuáles tienen privilegios administrativos.
Vamos allá.
Para ilustrar la edición o eliminación de un usuario, primero debemos crear a uno. Para ello se usa adduser
. Una pequeña nota es que también existe el useradd
, pero adduser
es más interactivo y fácil para los principiantes. La sintaxis básica es:
sudo adduser usuario
En donde usuario
es el nombre del usuario que se va a crear. Cuando lo ejecutamos nos pide algunos datos extra; como el nombre real o número de habitación. Aquí un ejemplo en imagen:
Como se observa, también pide la contraseña y al final pregunta si los datos son correctos. Cabe mencionar que esto también crea una carpeta para el usuario en /home
así que se podría decir que es un asistente para la creación de usuarios.
Para ver si nuestro usuario ha sido creado con éxito podemos listarlo. En Linux, los usuarios (junto con información adicional) son guardados en el archivo /etc/passwd
.
Basta con listar el contenido con cat
para obtener una lista de los usuarios del sistema con el siguiente comando:
sudo cat /etc/passwd
Lo que tendrá una salida como la siguiente:
Si sólo queremos probar la existencia de un usuario, se me ocurre usar grep:
sudo cat /etc/passwd | grep parzibyte
De ese modo listaría las líneas que tienen la cadena parzibyte; y esas líneas se las estamos pasando desde el archivo.
Otro comando que únicamente lista los nombres de usuario es el siguiente:
sudo cut -d : -f 1 /etc/passwd
Con la siguiente salida:
Estamos usando a cut
, que es algo así como algo que procesa el texto y lo corta. Le decimos que el delimitador (opción -d
) para que corte es el símbolo de los dos puntos :
y que nos muestre el primer campo o el campo número 1 (opción -f
de field
)
El comando es getent; pero más abajo lo usamos junto con cut
(bueno, en caso de querer limpiar la salida); esta vez para saber cuáles usuarios pueden ejecutar comandos que requieren privilegios elevados. El comando es:
sudo getent group sudo
Lo que estamos haciendo es obtener información de una base de datos del sistema. Específicamente queremos saber cuáles usuarios pertenecen al grupo sudo, por eso escribimos group sudo
.
Aquí se ve un ejemplo (esto fue ejecutado después de darle esos privilegios al usuario con un comando que esta más abajo, por eso aparece):
Ya sé que hay dos comandos, pero vamos a explicarlos. El primero pone la lista completa con campos que tal vez no necesitamos; el segundo corta eso y obtiene únicamente el nombre de usuario.
Obviamente el usuario root es un superusuario; aunque no aparezca.
En caso de que deseemos renombrar o cambiar el nombre de un usuario, se utiliza el comando usermod
. Este comando permite cambiar el nombre de usuario, la sintaxis es:
usermod -l nuevo_nombre nombre_actual
La opción -l
es la misma que la opción --login
, lo cual permite cambiar el nombre de usuario. Veamos un ejemplo:
sudo usermod -l luis parzibyte
Nota: la opción -l es una ele, no una letra i
Ahí estamos renombrando el usuario parzibyte a luis. Más tarde podemos listar a los usuarios de nuevo y veremos que se ha renombrado con éxito:
Lo que no cambia de nombre es la carpeta ubicada en /home, ya que aunque el usuario es distinto, la carpeta sigue existiendo. Si queremos renombrar la carpeta entonces ejecutamos:
sudo mv /home/usuario_antiguo/ /home/nuevo_usuario/
En mi caso sería así:
No sé cuáles son los efectos que esto traiga; así que no recomiendo mucho renombrar usuarios; pero así se hace.
Para cambiar la contraseña de un usuario de Linux Ubuntu se usa el comando passwd
. Este comando tiene esta sintaxis:
sudo passwd usuario
Al ejecutarlo, nos pregunta la nueva contraseña y pide confirmación de la misma. Aquí el ejemplo:
Si nos equivocamos, queremos quitar o editar datos personales del usuario (número de habitación, nombre real) utilizamos el comando chfn
. La sintaxis es:
sudo chfn usuario
Cuando se ejecuta, se pregunta lo mismo que cuando se crea; y si pusimos datos entonces los muestra como valores por defecto. Una imagen vale más que mil palabras:
En ese caso agregué mi número de habitación y número de teléfono.
Cuando un usuario se crea, no se le añade a la lista de sudoers. Es decir, no puede ejecutar comandos con privilegios elevados. Si queremos darle la posibilidad de que sea superusuario, usamos a nuestro buen comando usermod
pero ahora con la opción -a
y -G
que explicaremos después.
La sintaxis para agregar el usuario al grupo sudo
es:
sudo usermod -aG sudo usuario
La opción -a
indica que va a agregar (append) al usuario a los grupos o grupo que se proporcionen con G (group). Es decir, añadirá nuestro usuario al grupo que indiquemos después de G. Y el grupo es sudo
.
El último argumento es el nombre del usuario, así que en un ejemplo esto se vería así:
Después de agregarlo al grupo sudo, lo listamos como se vio más arriba. Lo digo de nuevo, este comando de agregar al usuario fue ejecutado antes del de arriba en donde listamos a los superusuarios; no es un error ni nada de eso.
Ahora veamos cómo quitarle los privilegios a un usuario que hayamos añadido al grupo sudo. El comando es deluser
; el cual sirve para eliminar un usuario (como veremos más abajo) pero también para quitarlo de un grupo (en este caso el grupo es sudo). La sintaxis es:
sudo deluser usuario sudo
En donde usuario
es el nombre del usuario. En este ejemplo le quitamos los privilegios al usuario luis:
En realidad no le estamos quitando privilegios, sino eliminándolo de un grupo. Y este grupo es el grupo sudo.
Por cierto, esto no elimina al usuario; simplemente lo quita del grupo.
El comando para eliminar un usuario es igualmente deluser
. La sintaxis es la siguiente:
sudo deluser usuario
Se ejecuta así:
Ahí nos indica que se ha eliminado; también nos dice que el grupo parzibyte ya no tiene miembros (esto es porque al inicio creamos el usuario parzibyte y a su vez se creó el grupo pero después lo renombramos).
Después de eso, listamos los usuarios y vemos que luis ya no aparece. Por cierto, la carpeta del usuario no se ha eliminado, sigue en /home: para eliminarla simplemente ejecuta:
sudo rm -rf /home/usuario
La opción r
es para que sea recursivo; es decir, que elimine todo el contenido incluso si hay carpetas o archivos dentro (y dentro de ellas más carpetas o archivos); la f
es para forzar. El último argumento es el directorio.
Eso sí, ten cuidado porque no hay forma de recuperar la información. Aquí un ejemplo de la ejecución:
Primero listamos el contenido de /home, luego eliminamos y volvemos a listarlo. Al final, ya no habrá carpeta del usuario.
Únicamente te invito a ver más tutoriales sobre Linux o Administración de servidores; iré escribiendo más tutoriales sobre ello.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios