107.1 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
107 Tareas Administrativas |
Objetivo: |
107.1 Administrar cuentas de usuarios, grupos y archivos del sistema relacionados. |
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 funcionalidades 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
) -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 aprendiste:
-
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 2019-12-31 kevin # chage -l kevin | grep "Account expires" Account expires : dec 31, 2019
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