En este artículo conoceremos el uso del comando usermod. Cómo modificar valores de las cuentas de los usuarios e igualmente de los grupos de usuarios.
- Introducción
- Modificar usuarios con usermod
- Cambiar el nombre de cuenta de un usuario
- Cambiar la contraseña de un usuario
- Modificar grupos del usuario
- Modificar el directorio de inicio de un usuario
- Modificar la shell de un usuario
- Modificar la fecha de expiración de la cuenta de usuario
- Bloquear la contraseña de un usuario
- Desbloquear la contraseña de un usuario
- Bloquear la cuenta de un usuario
- Desbloquear la cuenta de un usuario
- Agregar información a la cuenta de usuario
- Cambiar ID de usuario (UID)
- Introducción (Volver al índice General)
En este artículo veremos como modificar usuarios en Linux desde la línea de comando (CLI). Para hacerlo, utilizaremos la herramientausermod
, la cual nos permite modificar todos los parámetros de la cuenta de un usuario creado con anterioridad.Cuando ejecutamos el comando
usermod
, dependiendo de las modificaciones que realicemos, algunos o todos de los siguientes archivos se verán afectados.- /etc/passwd : Almacena información de la cuenta de usuario. Almacena el nombre de cuenta, si tiene contraseña en
/etc/shadow
, UID y GID del usuario, comentarios sobre la cuenta, el directorio de inicio y la shell de inicio. - /etc/shadow : Almacena la contraseña cifrada (hash) de los usuarios e información sobre caducidad y validez de la cuenta.
- /etc/group : Contiene una lista de los grupos existentes en el sistema. Cada usuario del sistema pertenece por lo menos a un grupo, considerándose a este como el grupo primario del usuario. Si es necesario, a los usuarios se les puede asignar a grupos adicionales. Cada línea contiene el nombre del grupo, la contraseña del grupo, el identificador del grupo (GID) y los miembros que lo integran.
- /etc/gshadow : Almacena las contraseñas cifradas (hash) de los grupos e información sobre los miembros normales y administradores del grupo.
- /etc/login.defs : En este archivo se definen las variables que controlan los aspectos de la creación de usuarios.
- Artículos relacionados (Volver al índice General)
En ZeppelinuX hemos publicado los siguientes artículos que pueden que te interesen:
- /etc/passwd : Almacena información de la cuenta de usuario. Almacena el nombre de cuenta, si tiene contraseña en
- Modificar usuarios con usermod (Volver al índice General)
La sintaxis del comando es la siguiente:usermod [options] LOGIN
Veamos todas las opciones que tiene este comando:
- –a, – -append : Agrega al usuario a los grupos complementarios. Usese solo con la opción -G.
- -c, – -comment COMENTARIO : COMENTARIO será el nuevo valor del campo de comentario en el archivo
/etc/passwd
. Normalmente se modifica con la herramientachfn
. - -d, – -home HOME_DIR : HOME_DIR será el nuevo valor para el directorio de inicio del usuario. Si se utiliza conjuntamente con la opción -m, el contenido del directorio de inicio actual se moverá al nuevo directorio de inicio, que se crea si aún no existe.
- -e, – -expiredate EXPIRE_DATE : Establece la fecha en la que expira la cuenta de usuario. La fecha que se especifica en EXPIRE_DATE deberá seguir formato AAAA-MM-DD.
- -f, – -inactive INACTIVE : En INACTIVE se establece el número de días que transcurrirán desde que expira una contraseña hasta que la cuenta se deshabilita permanentemente. Un valor de 0 deshabilita la cuenta tan pronto como la contraseña ha expirado y un valor de -1 deshabilita la función.
- -g, – -gid GROUP : En GROUP se establece el nombre del grupo o el identificador de grupo (GID) del nuevo grupo primario del usuario. El grupo debe existir previamente antes de establecerlo.
- -G, – -groups GROUP1[,GROUP2,…[,GROUPn]]] : Similar a la opción anterior, pero permite introducir varios grupos separados por comas. Los grupos deben existir con anterioridad para poder añadirlo. Si el usuario es actualmente miembro de un grupo que no está en la lista, el usuario será eliminado del grupo. Este comportamiento se puede cambiar utilizando la opción -a, que agrega al usuario a la lista de grupos complementarios actual.
- -l, – -login NEW_LOGIN : Permite cambiar el nombre de cuenta del usuario al establecido en NEW_LOGIN. Probablemente, el nombre del directorio de inicio del usuario deberá cambiarse manualmente para que tenga el nuevo nombre de cuenta.
- -L, – -lock : Bloquea la contraseña del usuario. Esto pone un
!
delante de la contraseña cifrada en el archivo/etc/shadow
, desactivando efectivamente la contraseña. No puede usar esta opción con -p o -U.
Nota: Si lo que queremos es bloquear la cuenta (no solo acceder con una contraseña), tendremos que establecer en la opción -e (o – -expiredate) el valor de EXPIRE_DATE en 1.
- -m, – -move-home : Mueve el contenido del directorio de inicio del usuario a la nueva ubicación. Esta opción solo es válida en combinación con la opción -d (o – -home).
- -o, – -non-unique : Cuando esta opción se usa conjuntamente con la opción -u, permite cambiar el identificador de usuario (UID) a un valor no único.
- -p, – -password PASSWORD : Establece una nueva contraseña de usuario. Hay que tener en cuenta que al pasar la contraseña como opción, esta irá en claro. Tenemos que asegurarnos de que la contraseña cumple con la política de contraseñas del sistema.
- -s, – -shell SHELL : Permite establecer una nueva shell de inicio de sesión del usuario. Dejando este campo en blanco hace que el sistema seleccione la shell de inicio de sesión predeterminada.
- -u, – -uid UID : Establece el nuevo valor numérico del identificador de usuario (UID). Este valor debe ser único, a menos que se utilice la opción -o. El valor no debe ser negativo. Los valores entre 0 y 999 se reservan normalmente para las cuentas de sistema. El buzón de correo del usuario y cualquier archivo que el usuario posea y que se encuentre en el directorio de inicio del usuario cambiará automáticamente al nuevo identificador de usuario (UID) del archivo. La propiedad de los archivos fuera del directorio de inicio del usuario se debe corregir manualmente.
- -U, – -unlock : Desbloquea la contraseña de un usuario. Esto elimina el
!
delante de la contraseña cifrada en el archivo/etc/shadow
. Esta poción no se puede usar con las opciones -p o -L.
Nota: Si deseamos desbloquear la cuenta (no solo acceder con una contraseña), tendremos que establecer en la opción -e (o – -expiredate) el valor de EXPIRE_DATE en, por ejemplo 99999 o en el valor establecido con la variable EXPIRE en el archivo
/etc/default/useradd
. - -Z, – -selinux-user SEUSER : Establece el usuario de SELinux para el inicio de sesión del usuario. El valor predeterminado es dejar este campo en blanco, lo que hace que el sistema seleccione el usuario SELinux predeterminado.
Para ver todas las opciones, puedes usar el comando de ayuda man usermod.
A continuación veremos los usos más comunes del comando
usermod
.
- Cambiar el nombre de cuenta de un usuario (Volver al índice General)
La opción-l
(o también--login
) nos permite cambiar el nombre de la cuenta del usuario. Veamos un ejemplo:$ sudo usermod -l nombre_nuevo nombre_antiguo
Hay que recordar que el nombre del directorio de inicio del usuario habrá que cambiarlo manualmente si queremos que coincida con el nombre de la cuenta. Una forma de cambiar el nombre de la cuenta, directorio de inicio y asignarle como grupo primario uno con el mismo nombre de la cuenta, sería la siguiente.
Supongamos que tenemos al usuario
mortadelo
con grupo primariomortadelo
y directorio de inicio/home/mortadelo
y queremos que la cuenta pase a llamarsefilemon
al igual que su grupo primario y directorio de inicio. Pues bien, ejecutaríamos los siguiente comandos:- Creamos el grupo
filemon
:$ sudo groupadd filemon
- Cambiamos el nombre de cuenta, la añadimos al grupo primario y movemos el directorio de inicio antiguo al nuevo:
$ sudo usermod -l filemon -g filemon -d /home/filemon -m mortadelo
- Finalmente, si no nos interesa conservar el grupo
mortadelo
lo eliminamos:$ sudo groupdel mortadelo
- Creamos el grupo
- Cambiar la contraseña de un usuario (Volver al índice General)
La opción-p
(o también--password
) nos permite asignar una nueva contraseña a los usuarios.$ sudo usermod -p contraseña nombre_usuario
Nota: La opción
-p
permite cambiar la contraseña, pero esta queda en claro en el archivo/etc/shadow
. No se guarda cifrada como en el caso de utilizar el comandopasswd
.Tras ejecutar el comando anterior, si observamos el contenido del archivo
/etc/shadow
veremos que al nuevo usuario se le ha guardado la contraseña en claro:1 2 3 4 5
$ sudo tail /etc/shadow ... ... mortadelo:$6$AvjUziqjdQBOruh9$hGkjpemoxk95nWfKHZ.hl.v2S69dQbE4u.s1cM6WRmaikTzWvx57ZZfaYvpg/y2sJlmnJnQZ.yZetSJTQhl5w0:18669:0:99999:7::: nombre_usuario:contraseña:18670:0:99999:7:::
mortadelo
tiene la contraseña: $6$AvjUziqjdQBOruh9$hGkjpemoxk95nWfKHZ.hl.v2S69dQbE4u.s1cM6WR…5w0nombre_usuario
tiene la contraseña: contraseña.
La forma más segura y cómoda de cambiarle la contraseña a un usuario es mediante el comandopasswd
. Para modificar la contraseña de un usuario solo tenemos que escribir lo siguiente:$ sudo passwd nombre_usuario
Si lo que queremos es cambiar nuestra propia contraseña ejecutaremos el siguiente comando:
$ passwd
Existen otros métodos seguros para generar manualmente el hash de la contraseña y posteriormente utilizar el hash generado con
usermod -p
.En el artículo Crear una contraseña con hash SHA-512 para /etc/shadow, explicamos como generar la contraseña cifrada que luego podremos utilizar con
usermod -p
.Una vez tenemos el hash de la contraseña, podremos utilizarlo con
usermod
:$ sudo usermod -p $6$sW7O8X766h$XQWAyU5WstjNeFGDZdXyOltU32q4uK/9L7QBXTRn0Zdw86D16I//uWiQp6aPHp9z0ww5dg5Yn7vGRPBQZz/9q0 nombre_usuario
- Modificar grupos del usuario (Volver al índice General)
En este punto veremos la forma de cambiar los grupos a los que pertenece un usuario, tanto el grupo primario como los grupos adicionales. Además veremos como añadir al usuario a grupos adicionales.Nota: En todos los casos que veremos a continuación, para poder asignar nuevos grupos, estos deberán existir previamente antes de asignarlos,
usermod
no los crea.- Modificar el grupo primario (Volver al índice General)
La opción-g
(o tambien--gid
) nos permite establecer el nombre del grupo o el identificador de grupo (GID) del nuevo grupo primario del usuario. En el siguiente ejemplo, el usuariomortadelo
tiene como grupo primariomortadelo
y vamos a cambiarselo alatia
.
En primer lugar crearemos el grupolatia
con el siguiente comando:$ sudo groupadd latia
Y a continuación le asignamos a
mortadelo
al grupolatia
con el siguiente comando:$ sudo usermod -g latia mortadelo
Otra forma de asignarlo sería utilizando el identificador de grupo (GID) en lugar del nombre:
$ sudo usermod -g 1017 mortadelo
- Modificar los grupos adicionales (Volver al índice General)
La opción-G
(o también--groups
) nos permite modificar todos los grupos adicionales a los que pertenece el usuario. Si el usuario es miembro de un grupo adicional que no está en la lista de los nuevos grupos adicionales, el usuario será eliminado del grupo.
En el siguiente ejemplo, asignaremos al usuariomortadelo
a los grupos adicionaleslaabuela
yagencia
.
En primer lugar crearemos los gruposla abuela
yagencia
con los siguientes comandos:$ sudo groupadd laabuela
$ sudo groupadd agencia
Y a continuación asignamos a
mortadelo
a los grupos adicionaleslaabuela
yagencia
y será eliminado de aquellos grupos adicionales a los que pertenezca:$ sudo usermod -G laabuela,agencia mortadelo
- Anadir un usuario a un grupo (Volver al índice General)
El siguiente comando es similar al anterior pero con la particularidad de que no se elimina al usuario de los grupos adicionales a los que pertenece.
En el siguiente ejemplo, asignaremos al usuariomortadelo
al grupo adicionaldetectives
.
En primer lugar crearemos el grupodetectives
con el siguiente comando:$ sudo groupadd detectives
Y a continuación asignamos a
mortadelo
al grupo adicionaldetectives
, respetando su pertenencia a los grupos adicionaleslaabuela
yagencia
:$ sudo usermod -a -G detectives mortadelo
- Modificar el grupo primario (Volver al índice General)
- Modificar el directorio de inicio de un usuario (Volver al índice General)
En este punto veremos como cambiar el directorio de inicio de un usuario y a mover el contenido del directorio de inicio antiguo al directorio de inicio nuevo.- Utilizando solo la opción -d (Volver al índice General)
La opción-d
(o también--home
) nos permite cambiar el directorio de inicio de un usuario, perousermod
no lo crea, es decir, en el fichero/etc/passwd
consta como directorio de inicio el nuevo directorio, pero dicho directorio no se crea, no existe a no ser que lo creemos manualmente, copiemos los directorios y archivos contenidos en el skeleton directory y le asignemos los permisos pertinentes.
El comando sería el siguiente:$ sudo usermod -d /directorio/de/inicio usuario
- Utilizando las opciones -d y -m (Volver al índice General)
Si se utiliza conjuntamente con las opciones-d
y-m
, el contenido del directorio de inicio antiguo se moverá al directorio de inicio nuevo, que se crea si aún no existe.conseguimos lo siguiente:
- Creamos el nuevo directorio de inicio.
- movemos el contenido del antiguo directorio de inicio en el nuevo.
- Se asignan los permisos por defecto al nuevo directorio de inicio.
- Se asignan usuario y grupo principal del usuario al nuevo directorio de inicio.
- Se elimina el directorio de inicio antiguo.
El comando sería el siguiente:
$ sudo usermod -d /directorio/de/inicio -m usuario
- Utilizando solo la opción -d (Volver al índice General)
- Modificar la shell de un usuario (Volver al índice General)
La opción-s
(o también--shell
) nos permite cambiar la shell de inicio de un usuario.$ sudo usermod -s /bin/bash usuario
- Modificar la fecha de expiración de la cuenta de usuario (Volver al índice General)
La opción-e
(o también--expiredate
) nos permite modificar la fecha en la que expirará la cuenta del usuario. La fecha indicada deberá cumplir con el formato AAAA-MM-DD. Veamos un ejemplo:$ sudo usermod -e 2021-12-31 usuario
Nota: Este parámetro se puede modificar con la herramienta chage, especialmente diseñada para gestionar parámetros relacionados con la caducidad de la contraseña y de la cuenta de un usuario.
- Bloquear la contraseña de un usuario (Volver al índice General)
La opción-L
(o también--lock
) nos permite bloquear la contraseña del usuario. Esto pone un!
delante de la contraseña cifrada en el archivo/etc/shadow
e impide que podamos iniciar sesión con la contraseña. Esta opción no puede usarse con las opciones-p
o-U
. Veamos un ejemplo:$ sudo usermod -L usuario
- Desbloquear la contraseña de un usuario (Volver al índice General)
La opción-U
(o también--unlock
) nos permte desbloquear la contraseña del usuario. Esto elimina el!
delante de la contraseña cifrada en el archivo/etc/shadow
y nos permite iniciar sesión con la contraseña. Esta opción no puede usarse con las opciones-p
o-L
. Veamos un ejemplo:$ sudo usermod -U usuario
- Bloquear la cuenta de un usuario (Volver al índice General)
Si lo que queremos es bloquear la cuenta, no solo bloquear el acceso con contraseña, tendremos que establecer en la opción-e
(o--expiredate
) un valor de1
. Veamos un ejemplo:$ sudo usermod -e 1 usuario
- Desbloquear la cuenta de un usuario (Volver al índice General)
Si lo que queremos es desbloquear la cuenta, no solo desbloquear el acceso con contraseña, tendremos que establecer en la opción-e
(o--expiredate
) un valor de fecha tipo AAAA-MM-DD para establecer una fecha de expiración, un valor de99999
para que nunca expire o con el valor establecido en la variable EXPIRE en el archivo/etc/default/useradd
. Veamos un ejemplo:$ sudo usermod -e 99999 usuario
- Agregar información a la cuenta de usuario (Volver al índice General)
La opción-c
(o también--comment
) permite modificar el valor del campo de comentario en el archivo/etc/passwd
, aunque normalmente, por comodidad se modifica con la herramientechfn
.- Veamos un ejemplo con
usermod
:$ sudo usermod -c "nombre_y_apellidos" usuario
- Veamos un ejemplo con el comando
chfn
:$ sudo chfn anacleto Cambiando la información de usuario para anacleto Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado Nombre completo []: Anacleto Agente Secreto Número de habitación []: 13 Teléfono del trabajo []: 555-123456 Teléfono de casa []: 555-789012 Otro []: anacleto.ag@email.com
Nota:
chfn
se usa para cambiar la información de finger. Esta información se almacena en el archivo/etc/passwd
y se muestra en el programa finger.
- Veamos un ejemplo con
- Cambiar ID de usuario (UID) (Volver al índice General)
La opción-u
(o también--uid
) nos permite establecer un nuevo valor numérico del identificador de usuario (UID). Este valor debe ser único, a menos que se utilice la opción-o
. El valor no debe ser negativo. Los valores entre 0 y 999 se reservan, normalmente, para las cuentas de sistema. El buzón de correo del usuario y cualquier archivo o directorio que el usuario posea y que se encuentre en el directorio de inicio del usuario cambiará automáticamente al nuevo identificador de usuario (UID). La propiedad de los archivos fuera del directorio de inicio del usuario se debe corregir manualmente. Veamos un ejemplo:$ sudo usermod -u 1007 anacleto
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
Deja una respuesta