107.1 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
107 Tareas administrativas |
Objetivo: |
107.1 Administrar cuentas de usuario y de grupo y los archivos de sistema relacionados con ellas |
Lección: |
1 de 2 |
Introducción
La administración de usuarios y grupos es una parte muy importante del trabajo de cualquier administrador de sistemas. Las modernas distribuciones de Linux implementan interfaces gráficas que permiten gestionar todas las actividades relacionadas con este aspecto de forma rápida y sencilla. Estas interfaces son diferentes entre sí en términos de diseños gráficos, no obstante las características siguen siendo las mismas. Con estas herramientas se pueden ver, editar, añadir y eliminar usuarios y grupos locales. Sin embargo, para una gestión más avanzada es necesario trabajar a través de la línea de comandos.
Agregando cuentas de usuario
En Linux, puedes añadir una nueva cuenta de usuario con el comando useradd
. Por ejemplo, con privilegios de root, puedes crear una nueva cuenta de usuario llamada Michael
con una configuración por defecto, usando lo siguiente:
# useradd michael
Cuando se ejecuta el comando useradd
, la información de usuario y grupo almacenada en las bases de datos de contraseñas y grupos se actualiza para la cuenta de usuario recién creada, y si se especifica, también se crea el directorio principal del nuevo usuario. Adicionalmente se crea un grupo con el mismo nombre de la nueva cuenta de usuario.
Una vez que haya creado el nuevo usuario, puede establecer su contraseña usando el comando passwd
. Puede revisar su ID de usuario (UID), ID de grupo (GID) y los grupos a los que pertenece a través de los comandos id
y groups
.
# passwd michael Changing password for user michael. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. # id michael uid=1000(michael) gid=100(michael) groups=100(michael) # groups michael michael : michael
Note
|
Recuerde que cualquier usuario puede revisar su UID, GID y los grupos a los que pertenece simplemente usando los comandos |
Las opciones más importantes que se aplican al comando useradd
son:
-c
-
Crear una nueva cuenta de usuario con comentarios personalizados (por ejemplo, el nombre completo del usuario).
-d
-
Crear una nueva cuenta de usuario con un directorio de inicio específico.
-e
-
Crear una nueva cuenta de usuario estableciendo una fecha específica en la que se desactivará.
-f
-
Crear una nueva cuenta de usuario estableciendo el número de días después de que expire una contraseña, durante los cuales el usuario debe actualizarla (de lo contrario, la cuenta se desactivará).
-g
-
Crear una nueva cuenta de usuario con un GID específico.
-G
-
Crear una nueva cuenta de usuario añadiéndola a múltiples grupos secundarios.
-k
-
Crear una nueva cuenta de usuario copiando los archivos del "skel" de un directorio personalizado específico (esta opción sólo es válida si se especifica la opción "m" o "crear casa").
-m
-
Crear una nueva cuenta de usuario con su directorio principal (si no existe).
-M
-
Crear una nueva cuenta de usuario sin su directorio principal.
-s
-
Crear una nueva cuenta de usuario con un shell de acceso específico.
-u
-
Crear una nueva cuenta de usuario con un UID específico.
Vea las páginas de man del comando useradd
para la lista completa de opciones.
Modificación de las cuentas de usuario
En ocasiones es necesario cambiar un atributo de una cuenta de usuario existente, como también el nombre de usuario, el shell, la fecha de caducidad de la contraseña, etc. En tales casos, necesitas usar el comando usermod
.
# usermod -s /bin/tcsh michael # usermod -c "Michael User Account" michael
Al igual que con el comando useradd
, el comando usermod
requiere privilegios de root.
En los ejemplos anteriores, primero se cambia el shell de inicio de sesión de michael
y luego se añade una breve descripción a esta cuenta de usuario.
Recuerda que puedes modificar varios atributos a la vez, especificándolos en un solo comando.
Las opciones más importantes que se aplican al comando `usermod' son:
-c
-
Agrega un breve comentario a la cuenta de usuario.
-d
-
Cambiar el directorio principal de la cuenta de usuario. Cuando se usa con la opción
-m
, los contenidos del directorio principal actual se mueven al nuevo directorio principal, que a su vez se crea de no ser existente. -e
-
Establece la fecha de expiración de la cuenta de usuario.
-f
-
Establece el número de días después de que una contraseña expira, durante los cuales el usuario debe actualizar la contraseña (de lo contrario la cuenta se desactivará).
-g
-
Cambia el grupo primario de la cuenta de usuario (el grupo debe existir).
-G
-
Añade grupos secundarios a la cuenta de usuario especificada. Cada grupo debe existir y debe estar separado del siguiente por una coma, sin espacios en blanco. Si se usa sola, esta opción elimina todos los grupos existentes a los que el usuario pertenece, mientras que cuando se usa con la opción
-a
, simplemente añade nuevos grupos secundarios a los ya existentes. -l
-
Cambia el nombre de usuario de la cuenta de usuario especificada.
-L
-
Bloquea la cuenta de usuario especificada. Esto pone un signo de exclamación delante de la contraseña encriptada dentro del archivo
/etc/shadow
, deshabilitando así el acceso con una contraseña para ese usuario. -s
-
Cambia el shell de acceso de la cuenta de usuario especificada.
-u
-
Cambia el UID de la cuenta de usuario especificada.
-U
-
Desbloquea la cuenta de usuario especificada. Esto elimina el signo de exclamación delante de la contraseña cifrada con el archivo
/etc/shadow
.
Observe las páginas de man del comando usermod
para la lista completa de opciones.
Tip
|
Recuerde que cuando cambie el nombre de inicio de sesión de una cuenta de usuario, probablemente deba cambiar el nombre del directorio principal de ese usuario junto con otros elementos relacionados con el usuario, por ejemplo, los archivos de la cola de correo. Recuerde también que cuando cambie el UID de una cuenta de usuario, probablemente debería corregir la propiedad de los archivos y directorios fuera del directorio principal del usuario (el ID de usuario se cambia automáticamente para el buzón de correo del usuario y para todos los archivos que son propiedad del usuario y que se encuentran en el directorio principal del usuario). |
Eliminando cuentas de usuario
Si quieres borrar una cuenta de usuario, puedes usar el comando userdel
. En particular, este comando actualiza la información almacenada en las bases de datos de las cuentas, borrando todas las entradas referentes al usuario especificado. La opción -r
también elimina el directorio principal del usuario y todos sus contenidos, junto con el spool de correo del usuario. Otros archivos, localizados en otros lugares, deben ser buscados y eliminados manualmente.
# userdel -r michael
En cuanto a useradd
y usermod
, necesitas el privilegio de root para borrar cuentas de usuario.
=== Agregando, modificando y eliminando grupos
Al igual que con la gestión de usuarios, puede añadir, modificar y eliminar grupos usando los comandos groupadd
, groupmod
y groupdel
con privilegios de root. Si quiere crear un nuevo grupo llamado developer
, puede ejecutar el siguiente comando:
# groupadd -g 1090 developer
La opción -g
de este comando crea un grupo con un GID específico.
Warning
|
Recuerde que cuando añade una nueva cuenta de usuario, el grupo primario y los grupos secundarios a los que pertenece deben existir antes de lanzar el comando |
Si luego deseas renombrar el grupo de developer
a web-developer
y cambiar su GID, puedes ejecutar lo siguiente:
# groupmod -n web-developer -g 1050 developer
Tip
|
Recuerde que si cambia el GID usando la opción |
Finalmente, si quieres borrar el grupo de web-developer
, puedes ejecutar lo siguiente:
# groupdel web-developer
No se puede eliminar un grupo si es el grupo principal de una cuenta de usuario. Por lo tanto, debe eliminar el usuario antes de eliminar el grupo. En cuanto a los usuarios, si elimina un grupo, los archivos pertenecientes a ese grupo permanecen en su sistema de archivos y no se eliminan ni se asignan a otro grupo.
El directorio skel
Cuando añades una nueva cuenta de usuario, incluso creando su directorio principal, el directorio principal recién creado se carga de archivos y carpetas que se copian del directorio skel (por defecto /etc/skel
). La idea detrás de esto es simple: un administrador del sistema quiere agregar nuevos usuarios que tengan los mismos archivos y directorios en su carpeta principal. Por lo tanto, si desea personalizar los archivos y carpetas que se crean automáticamente en el directorio principal, debe añadir estos nuevos archivos y carpetas al directorio skel.
Tip
|
Recuerde que si desea listar todos los archivos y directorios en el directorio skel, debe usar el comando |
El archivo /etc/login.defs
En Linux, el archivo /etc/login.defs
especifica los parámetros de configuración que controlan la creación de usuarios y grupos. Además, los comandos mostrados en las secciones anteriores toman por defecto valores de este archivo.
Las directivas más importantes son:
UID_MIN
yUID_MAX
-
El rango de ID de usuario que puede ser asignado a los nuevos usuarios ordinarios.
GID_MIN
yGID_MAX
-
El rango de ID de grupo que puede ser asignado a nuevos grupos ordinarios.
CREATE_HOME
-
Especifica si un directorio principal debe ser creado por defecto para los nuevos usuarios.
USERGROUPS_ENAB
-
Especifica si el sistema debe crear por defecto un nuevo grupo para cada nueva cuenta de usuario con su mismo nombre, y a su vez al eliminar la cuenta también se debe eliminar el grupo principal del usuario si ya no contiene miembros.
MAIL_DIR
-
El directorio de la cola de correo.
PASS_MAX_DAYS
-
El número máximo de días que una contraseña puede ser usada.
PASS_MIN_DAYS
-
El número mínimo de días permitido entre los cambios de contraseña.
PASS_MIN_LEN
-
La longitud mínima aceptable de la contraseña.
PASS_WARN_AGE
-
El número de días de advertencia antes de que una contraseña expire.
Tip
|
Cuando administre usuarios y grupos, compruebe siempre este archivo para ver y eventualmente cambiar el comportamiento por defecto del sistema (si fuese necesario). |
El comando passwd
Este comando se utiliza principalmente para cambiar la contraseña de un usuario. Como se describió anteriormente, cualquier usuario puede cambiar su propia contraseña, pero sólo root puede cambiar la contraseña de cualquier usuario. Esto sucede porque el comando passwd
tiene el bit SUID puesto (una s
en el lugar del flag ejecutable para el propietario), lo que significa que se ejecuta con los privilegios del propietario del archivo (por lo tanto, root).
# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
Dependiendo de las opciones de passwd
utilizadas, puedes controlar aspectos específicos del envejecimiento de las contraseñas tales como:
-d
-
Borrar la contraseña de una cuenta de usuario (deshabilitando así al usuario).
-e
-
Forzar a la cuenta de usuario a cambiar la contraseña.
-i
-
Establecer el número de días de inactividad después de que una contraseña expire, durante los cuales el usuario debe actualizar la contraseña (de lo contrario, la cuenta será desactivada).
-l
-
Bloquea la cuenta de usuario (la contraseña cifrada se prefija con un signo de exclamación en el archivo
/etc/shadow
). -n
-
Establece la duración mínima de la contraseña.
-S
-
Información de salida sobre el estado de la contraseña de una cuenta de usuario específica.
-u
-
Desbloquea la cuenta de usuario (el signo de exclamación se elimina del campo de la contraseña en el archivo
/etc/shadow
). -x
-
Establece la duración máxima de la contraseña.
-w
-
Determina el número de días de advertencia antes de que la contraseña expire, durante los cuales se advierte al usuario que debe cambiarla.
Note
|
Los grupos también pueden tener una contraseña, que puede ser establecida usando el comando |
El comando chage
Este comando determinado como “change age”, se usa para cambiar el período de la contraseña de un usuario. El comando chage
está restringido a root, excepto la opción -l
, que puede ser usada por usuarios ordinarios para listar el tiempo de su contraseña.
Las otras opciones que se aplican al comando chage
son:
-d
-
Establece el último cambio de contraseña para una cuenta de usuario.
-E
-
Establece la fecha de caducidad de una cuenta de usuario.
-I
-
Establece el número de días de inactividad después de que una contraseña expira, durante los cuales el usuario deberá actualizarla (de lo contrario la cuenta será desactivada).
-m
-
Establece la duración mínima de la contraseña para una cuenta de usuario.
-M
-
Establece la duración máxima de la contraseña para una cuenta de usuario.
-W
-
Establece el número de días de advertencia antes que la contraseña expire, durante los cuales se le advierte al usuario que deberá cambiarla.
Ejercicios guiados
-
Para cada uno de los siguientes comandos, identifique el propósito correspondiente:
usermod -L
passwd -u
chage -E
groupdel
useradd -s
groupadd -g
userdel -r
usermod -l
groupmod -n
useradd -m
-
Para cada uno de los siguientes comandos
passwd
, identifique el correspondiente comandochage
:passwd -n
passwd -x
passwd -w
passwd -i
passwd -S
-
Explique en detalle el propósito de los comandos en la pregunta anterior:
-
¿Qué comandos puedes usar para bloquear una cuenta de usuario? ¿Y qué comandos para desbloquearla?
Ejercicios de exploración
-
Usando el comando
groupadd
, crea los grupos deadministrators
ydevelopers
. Asume que estás trabajando como root. -
Ahora que ha creado estos grupos, ejecute el siguiente comando:
useradd -G administrators, developers kevin
. ¿Qué operaciones realiza este comando? Asume queCREATE_HOME
yUSERGROUPS_ENAB
están configurados enyes
en el archivo/etc/login.defs
. -
Crea un nuevo grupo llamado
designers
, renómbrelo aweb-designers
y añada este nuevo grupo a los grupos secundarios de la cuenta de usuariokevin
. Identifica todos los grupos a los que pertenecekevin
y sus identificaciones. -
Elimina sólo el grupo de
developers
de los grupos secundarios dekevin
. -
Establezca la contraseña de la cuenta de usuario
kevin
. -
Usando el comando
chage
, primero compruebe la fecha de caducidad de la cuenta de usuariokevin
y luego cámbiela al 31 de diciembre de 2022. ¿Qué otro comando puedes usar para cambiar la fecha de caducidad de una cuenta de usuario? -
Añade una nueva cuenta de usuario llamada
emma
con el UID 1050 y establezcaadministrators
como su grupo primario ydevelopers
yweb-designers
como sus grupos secundarios. -
Cambie el shell de inicio de sesión de
emma
a/bin/sh
. -
Elimina las cuentas de usuario
emma
ykevin
y los grupos deadministrators
,developers
yweb-designers
Resumen
En esta lección aprendió:
-
Los fundamentos de la gestión de usuarios y grupos en Linux.
-
Agregar, modificar y eliminar cuentas de usuario.
-
Agregar, modificar y eliminar cuentas de grupo.
-
Mantener el directorio del esqueleto.
-
Editar el archivo que controla la creación de usuarios y grupos.
-
Cambiar las contraseñas de las cuentas de usuario.
-
Cambiar la información sobre la antigüedad de las contraseñas de las cuentas de usuario.
Los siguientes archivos y comandos fueron discutidos en esta lección:
useradd
-
Crear una nueva cuenta de usuario.
usermod
-
Modificar una cuenta de usuario.
userdel
-
Eliminar una cuenta de usuario.
groupadd
-
Crear una nueva cuenta de grupo.
groupmod
-
Modificar una cuenta de grupo.
groupdel
-
Eliminar una cuenta de grupo.
passwd
-
Cambiar la contraseña de las cuentas de usuario y controlar todos los aspectos del envejecimiento de la contraseña.
chage
-
Cambiar la información de caducidad de la contraseña del usuario.
/etc/skel
-
La ubicación por defecto del directorio skel.
/etc/login.defs
-
El archivo que controla la creación de usuarios y grupos proporciona valores por defecto para varios parámetros de la cuenta de usuario.
Respuesta a los ejercicios guiados
-
Para cada uno de los siguientes comandos, identifique el propósito correspondiente:
usermod -L
Bloquea una cuenta de usuario.
passwd -u
Desbloquea una cuenta de usuario.
chage -E
Establece la fecha de caducidad de una cuenta de usuario.
groupdel
Elimina un grupo.
useradd -s
Crea una nueva cuenta de usuario con un nombre de usuario específico.
groupadd -g
Crea un nuevo grupo con un GID específico.
userdel -r
Elimina una cuenta de usuario, su directorio principal, su contenido y el spool de correo del usuario.
usermod -l
Cambia el nombre de usuario de una cuenta.
groupmod -n
Cambia el nombre del grupo.
useradd -m
Crea una nueva cuenta de usuario y su directorio de inicio
-
Para cada uno de los siguientes comandos
passwd
, identifique el comando correspondientechage
:passwd -n
chage -m
passwd -x
chage -M
passwd -w
chage -W
passwd -i
chage -I
passwd -S
chage -l
-
Explique en detalle el propósito de los comandos en la pregunta anterior:
En Linux, puede usar el comando
passwd -n
(ochage -m
) para establecer el número mínimo de días entre cambios de contraseña, el comandopasswd -x
(ochage -M
) para establecer el número máximo de días durante los cuales una contraseña es válida, el comandopasswd -w
(ochage -W
) para establecer el número de días de advertencia antes de que la contraseña expire, el comandopasswd -i
(ochage -I
) para establecer el número de días de inactividad durante los cuales el usuario debe cambiar la contraseña y el comandopasswd -S
(ochage -l
) para mostrar una breve información sobre la contraseña de la cuenta de usuario. -
¿Qué comandos puedes usar para bloquear una cuenta de usuario? ¿Y qué comandos para desbloquearla?
Si quieres bloquear una cuenta de usuario, puedes usar uno de estos comandos:
usermod -L
,usermod --lock
ypasswd -l
. En cambio, si quieres desbloquearla, puedes usarusermod -U
,usermod --unlock
ypasswd -u
.
Respuestas a los ejercicios de exploración
-
Usando el comando
groupadd
, crea los grupos deadministrators
ydevelopers
. Asume que estás trabajando como root.# groupadd administrators # groupadd developers
-
Ahora que ha creado estos grupos, ejecute el siguiente comando:
useradd -G administrators, developers kevin
. ¿Qué operaciones realiza este comando? Asume queCREATE_HOME
yUSERGROUPS_ENAB
están configurados enyes
en el archivo/etc/login.defs
.El comando añade un nuevo usuario, llamado
kevin
a la lista de usuarios del sistema, crea su directorio principal (CREATE_HOME
está establecido enyes
y por lo tanto puedes omitir la opción -m) y crea un nuevo grupo, llamadokevin
, como el grupo principal de esta cuenta de usuario (USERGROUPS_ENAB
está establecido enyes
). Finalmente, los archivos y carpetas dentro del directorio skel se copian al directorio principal dekevin
. -
Crea un nuevo grupo llamado
designers
, renómbrelo aweb-designers
y añada este nuevo grupo a los grupos secundarios de la cuenta de usuariokevin
. Identifique todos los grupos a los que pertenecekevin
y sus identificaciones.# groupadd designers # groupmod -n web-designers designers # usermod -a -G web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1029(developers),1031(web-designers)
-
Elimine sólo el grupo de "developers" de los grupos secundarios de
kevin
.<<<<<# usermod -G administrators,web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1031(web-designers)
El comando
usermod
no tiene la opción de eliminar sólo un grupo; por lo tanto, es necesario especificar todos los grupos secundarios a los que pertenece el usuario. -
Establezca la contraseña de la cuenta de usuario
kevin
.# passwd kevin Changing password for user kevin. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
Usando el comando
chage
, primero compruebe la fecha de caducidad de la cuenta de usuariokevin
y luego cámbiela al 31 de diciembre de 2022. ¿Qué otro comando puedes usar para cambiar la fecha de caducidad de una cuenta de usuario?# chage -l kevin | grep "Account expires" Account expires : never # chage -E 2022-12-31 kevin # chage -l kevin | grep "Account expires" Account expires : dec 31, 2022
El comando
usermod
con la opción-e
es equivalente achage -E
. -
Añade una nueva cuenta de usuario llamada
emma
con el UID 1050 y estableceadministrators
como su grupo primario ydevelopers
yweb-designers
como sus grupos secundarios.# useradd -u 1050 -g administrators -G developers,web-designers emma # id emma uid=1050(emma) gid=1028(administrators) groups=1028(administrators),1029(developers),1031(web-designers)
-
Cambie el shell de inicio de sesión de
emma
a/bin/sh
.# usermod -s /bin/sh emma
-
Elimina las cuentas de usuario
emma
ykevin
y los grupos deadministrators
,developers
yweb-designers
# userdel -r emma # userdel -r kevin # groupdel administrators # groupdel developers # groupdel web-designers