5.2 Lección 1
Certificación: |
Linux Essentials |
---|---|
Versión: |
1.6 |
Tema: |
5 Seguridad y permisos de archivos |
Objetivo: |
5.2 Creando usuarios y grupos |
Lección: |
1 de 1 |
Introducción
Administrar usuarios y grupos en un equipo con Linux es uno de los aspectos clave de la administración del sistema. De hecho, Linux es un sistema operativo multiusuario en el que varios de estos pueden usar la misma máquina al mismo tiempo.
La información sobre usuarios y grupos se almacena en cuatro archivos dentro del árbol de directorios /etc/
:
/etc/passwd
-
Es un archivo de siete campos delimitados por dos puntos que contiene información básica sobre los usuarios.
/etc/group
-
Es un archivo de cuatro campos delimitados por dos puntos que contienen información básica sobre grupos.
/etc/shadow
-
Es un archivo de nueve campos delimitados por dos puntos que contienen contraseñas cifradas de los usuarios.
/etc/gshadow
-
Es un archivo de cuatro archivos delimitados por dos puntos que contienen contraseñas cifradas de los grupos.
Todos estos archivos se actualizan mediante un conjunto de herramientas de línea de comandos para la administración de usuarios y grupos, las cuales discutiremos más adelante en esta lección. También se pueden administrar mediante aplicaciones gráficas según la distribución que proporcionan interfaces más simples e inmediatas.
Warning
|
Aunque los archivos son texto sin formato, no los edite directamente. Utilice siempre las herramientas proporcionadas con su distribución para este propósito. |
El archivo /etc/passwd
/etc/passwd
es un archivo legible por todos (world-readable) que contiene una lista de usuarios en cada línea:
frank:x:1001:1001::/home/frank:/bin/bash
Cada línea constante de siete campos delimitados por dos puntos:
- Username
-
El nombre utilizado cuando el usuario inicia sesión en el sistema.
- Password
-
La contraseña cifrada (o una
x
si se usan contraseñas ocultas). - User ID (UID)
-
El número de ID asignado al usuario en el sistema.
- Group ID (GID)
-
El número de grupo primario del usuario en el sistema.
- GECOS
-
Un campo de comentario opcional, que se utiliza para agregar información adicional sobre el usuario (como el nombre completo). El campo puede contener múltiples entradas separadas por comas.
- Home directory
-
La ruta absoluta del directorio de inicio del usuario.
- Shell
-
La ruta absoluta del programa que se inicia automáticamente cuando el usuario inicia sesión en el sistema (generalmente un shell interactivo como
/bin/bash
).
El archivo /etc/group
/etc/group
es un archivo legible en todos (world-readable) que contiene una lista de grupos, cada uno en una línea separada:
developer:x:1002:
Cada línea constante de cuatro campos delimitados por dos puntos:
- Group Name
-
El nombre del grupo.
- Group Password
-
La contraseña cifrada del grupo (o una
x
si se usan contraseñas ocultas). - Group ID (GID)
-
El número de identificación asignado al grupo en el sistema.
- Member list
-
Una lista delimitada por comas de los usuarios que pertenecen al grupo, excepto aquellos para quienes este es el grupo primario.
El archivo /etc/shadow
/etc/shadow
es un archivo legible solo por usuarios root y usuarios con privilegios de root. Además contiene las contraseñas cifradas de los usuarios seperadas por una línea
frank:$6$i9gjM4Md4MuelZCd$7jJa8Cd2bbADFH4dwtfvTvJLOYCCCBf/.jYbK1IMYx7Wh4fErXcc2xQVU2N1gb97yIYaiqH.jjJammzof2Jfr/:18029:0:99999:7:::
Cada línea consta de nueve campos delimitados por dos puntos:
- Username
-
El nombre utilizado cuando el usuario inicia sesión en el sistema.
- Encrypted password
-
La contraseña cifrada del usuario (si el valor es
!
, La cuenta está bloqueada). - Date of last password change
-
La fecha del último cambio de contraseña, como número de días desde 01/01/1970. Un valor de
0
significa que el usuario debe cambiar la contraseña en el siguiente acceso. - Minimum password age
-
El número mínimo de días después de un cambio de contraseña que debe pasar antes de que el usuario pueda cambiarla nuevamente.
- Maximum password age
-
El número máximo de días que deben transcurrir antes de que se requiera un cambio de contraseña.
- Password warning period
-
El número de días antes de que caduque la contraseña, durante los cuales se advierte al usuario que se debe cambiarla.
- Password inactivity period
-
El número de días después de que caduca una contraseña durante el cual el usuario debe actualizarla. Después de este período, si el usuario no cambia la contraseña, la cuenta se deshabilitará.
- Account expiration date
-
La fecha, como número de días desde el 01/01/1970 en que se deshabilitará la cuenta de usuario. Un campo vacío significa que la cuenta de usuario nunca caducará.
- A reserved field
-
Un campo reservado para uso futuro.
El archivo /etc/gshadow
/etc/gshadow
es un archivo legible solo por root y por usuarios con privilegios de root que contiene contraseñas cifradas para grupos, cada uno en una línea separada:
developer:$6$7QUIhUX1WdO6$H7kOYgsboLkDseFHpk04lwAtweSUQHipoxIgo83QNDxYtYwgmZTCU0qSCuCkErmyR263rvHiLctZVDR7Ya9Ai1::
Cada línea constante de cuatro campos delimitados por dos puntos:
- Group name
-
El nombre del grupo.
- Encrypted password
-
La contraseña cifrada para el grupo (se usa cuando un usuario que no es miembro del grupo, desea unirse al grupo usando el comando
newgrp
, si la contraseña comienza con!
. Nadie puede acceder al grupo connewgrp
). - Group administrators
-
Una lista delimitada por comas de los administradores del grupo (pueden cambiar la contraseña del grupo y pueden agregar o eliminar miembros del grupo con el comando
gpasswd
). - Group members
-
Una lista delimitada por comas de los miembros del grupo.
Ahora que hemos visto dónde se almacena la información de usuarios y grupos, hablemos de las herramientas de línea de comandos más importantes para actualizar estos archivos.
Agregar y eliminar cuentas de usuario
En Linux, puede agregar una nueva cuenta de usuario con el comando useradd
y puede eliminar una cuenta de usuario con el comando userdel
.
Si desea crear una nueva cuenta de usuario llamada frank
con una configuración predeterminada, puede ejecutar lo siguiente:
# useradd frank
Después de crear el nuevo usuario, puede establecer una contraseña usando passwd
:
# passwd frank Changing password for user frank. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Ambos comandos requieren autorización de root. Cuando ejecuta el comando useradd
, la información del usuario, así como del grupo es almacenada y las bases de datos del grupo se actualizan para la cuenta de usuario recién creada. Si se especifica, se crea el directorio de inicio del nuevo usuario y un grupo con el mismo nombre de la cuenta.
Tip
|
Recuerde que siempre puede usar la utilidad
o
para ver información básica sobre la nueva cuenta |
Las opciones más importantes que se aplican al comando useradd
son:
-c
-
Crea una nueva cuenta de usuario con comentarios personalizados (por ejemplo, nombre completo).
-d
-
Crea una nueva cuenta de usuario con un directorio de inicio personalizado.
-e
-
Crea una nueva cuenta de usuario estableciendo una fecha específica en la que se deshabilitará.
-f
-
Crea una nueva cuenta de usuario estableciendo el número de días después de que caduque la contraseña durante los cuales el usuario debe actualizar la contraseña.
-g
-
Crea una nueva cuenta de usuario con un GID específico
-G
-
Crea una nueva cuenta de usuario agregándola a múltiples grupos secundarios.
-m
-
Crea una nueva cuenta de usuario con su directorio de inicio.
-M
-
Crea una nueva cuenta de usuario sin su directorio de inicio.
-s
-
Crea una nueva cuenta de usuario con un shell de inicio de sesión específico.
-u
-
Crea una nueva cuenta de usuario con un UID específico.
Una vez que se crea la nueva cuenta de usuario, puede usar los comandos id
y groups
para averiguar su UID, GID y los grupos a los que pertenece.
# id frank uid=1000(frank) gid=1000(frank) groups=1000(frank) # groups frank frank : frank
Tip
|
Recuerde verificar y eventualmente editar el archivo |
Si desea eliminar una cuenta de usuario, puede usar el comando userdel
. En particular, este comando actualiza la información almacenada en las bases de datos de la cuenta, eliminando todas las entradas que se refieren al usuario especificado. La opción -r
también elimina el directorio de inicio del usuario y todos sus contenidos, junto con la cola de correo del usuario. Otros archivos, ubicados en otro lugar, deben buscarse y eliminarse manualmente.
# userdel -r frank
Como antes, usted necesita autorización de root para eliminar cuentas de usuario.
El directorio skel
Cuando agrega una nueva cuenta de usuario, incluso al crear su directorio de inicio, el directorio de inicio recién creado se llena con archivos y carpetas que se copian del directorio de 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 hogar. Por lo tanto, si desea personalizar los archivos y carpetas que se crean automáticamente en el directorio de inicio de las nuevas cuentas de usuario, debe agregar estos nuevos archivos y carpetas al directorio de skel.
Tip
|
Tenga en cuenta que los archivos de perfil que generalmente se encuentran en el directorio de skel son archivos ocultos. Por lo tanto, si desea enumerar todos los archivos y carpetas en el directorio skel que se copiarán en el directorio de inicio de los usuarios (recién creados), debe usar el comando |
Agregar y eliminar grupos
En cuanto a la gestión de grupos, puede agregar o eliminar grupos utilizando los comandos groupadd
y groupdel
.
Si desea crear un nuevo grupo llamado desarrollador
, puede ejecutar el siguiente comando como root:
# groupadd -g 1090 developer
La opción -g
de este comando crea un grupo con un GID específico.
Si desea eliminar el grupo desarrollador
, puede ejecutar lo siguiente:
# groupdel developer
Warning
|
Recuerde que cuando agrega una nueva cuenta de usuario, el grupo primario y los grupos secundarios a los que pertenece deben existir antes de iniciar el comando |
El comando passwd
Este comando se usa principalmente para cambiar la contraseña de un usuario. Cualquier usuario puede cambiar su contraseña, pero solo el usuario root puede cambiar la contraseña de cualquier usuario.
Dependiendo de la opción passwd
utilizada, puede controlar aspectos específicos del envejecimiento de la contraseña:
-d
-
Elimina la contraseña de una cuenta de usuario (deshabilitando así al usuario).
-e
-
Fuerza a la cuenta de usuario a cambiar la contraseña.
-l
-
Bloquea la cuenta de usuario (la contraseña cifrada tiene el prefijo de un signo de exclamación).
-u
-
Desbloquea la cuenta de usuario (elimina el signo de exclamación).
-S
-
Muestra información sobre el estado de la contraseña para una cuenta específica.
Estas opciones están disponibles solo para root. Para ver la lista completa de opciones, consulte las páginas del manual.
Ejercicios guiados
-
Para cada una de las siguientes entradas, indique el archivo al que hace referencia:
-
developer:x:1010:frank,grace,dave
-
root:x:0:0:root:/root:/bin/bash
-
henry:$1$.AbCdEfGh123456789A1b2C3d4.:18015:20:90:5:30::
-
henry:x:1000:1000:User Henry:/home/henry:/bin/bash
-
staff:!:dave:carol,emma
-
-
Observe el siguiente resultado para responder las siguientes siete preguntas:
# cat /etc/passwd | tail -3 dave:x:1050:1050:User Dave:/home/dave:/bin/bash carol:x:1051:1015:User Carol:/home/carol:/bin/sh henry:x:1052:1005:User Henry:/home/henry:/bin/tcsh # cat /etc/group | tail -3 web_admin:x:1005:frank,emma web_developer:x:1010:grace,kevin,christian dave:x:1050: # cat /etc/shadow | tail -3 dave:$6$AbCdEfGh123456789A1b2C3D4e5F6G7h8i9:0:20:90:7:30:: carol:$6$q1w2e3r4t5y6u7i8AbcDeFgHiLmNoPqRsTu:18015:0:60:7::: henry:!$6$123456789aBcDeFgHa1B2c3d4E5f6g7H8I9:18015:0:20:5::: # cat /etc/gshadow | tail -3 web_admin:!:frank:frank,emma web_developer:!:kevin:grace,kevin,christian dave:!::
-
¿Cuál es el ID de usuario (UID) y el ID de grupo (GID) de
carol
? -
¿Qué shell está configurado para
dave
yhenry
? -
¿Cuál es el nombre del grupo principal de
henry
? -
¿Cuáles son los miembros del grupo
web_developer
? ¿Cuáles de estos son administradores de grupo? -
¿Qué usuario no puede iniciar sesión en el sistema?
-
¿Qué usuario debe cambiar la contraseña la próxima vez que inicie sesión en el sistema?
-
¿Cuántos días deben pasar antes de que se requiera un cambio de contraseña para
carol
?
-
Ejercicios exploratorios
-
Trabajando como root, ejecute el comando
useradd -m dave
para agregar una nueva cuenta de usuario. ¿Qué operaciones realiza este comando? Suponga queCREATE_HOME
yUSERGROUPS_ENAB
en/etc/login.defs
están configuradas enyes
. -
Ahora que ha creado la cuenta
dave
, ¿puede este usuario iniciar sesión en el sistema? -
Identifique el ID de usuario (UID) y el ID de grupo (GID) de
dave
y todos los miembros del grupodave
. -
Cree los grupos
sys_admin
,web_admin
ydb_admin
e identifique sus ID de grupo (GID).Agregue una nueva cuenta de usuario llamada `carol` con UID 1035 y configure `sys_admin` como su grupo principal y `web_admin` y `db_admin` como sus grupos secundarios.
-
Elimine las cuentas de usuario
dave
ycarol
y los grupossys_admin
,web_admin
ydb_admin
que haya creado previamente. -
Ejecute el comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
y describa el resultado que le da en términos de permisos de archivo. ¿Cuál de estos cuatro archivos está sombreado (shadowed) por razones de seguridad? Suponga que su sistema usa contraseñas ocultas. -
Ejecute el comando
ls -l /usr/bin/passwd
. ¿Qué bit especial se establece y cuál es su significado?
Resumen
En esta lección usted aprendió:
-
Los fundamentos de la gestión de usuarios y grupos en Linux.
-
Administrar información de usuarios y grupos almacenada en contraseñas y bases de datos grupales.
-
Mantener el directorio skel.
-
Agregar y eliminar cuentas de usuario.
-
Agregar y eliminar cuentas grupales.
-
Cambiar la contraseña de las cuentas de usuario.
Los siguientes comandos se discutieron en esta lección:
useradd
-
Crear una nueva cuenta de usuario
groupadd
-
Creae una nueva cuenta de grupo.
userdel
-
Eliminar una cuenta de usuario.
groupdel
-
Eliminar una cuenta grupal.
passwd
-
Cambiar la contraseña de las cuentas de usuario y controle todos los aspectos del antigüedad de la contraseña.
Respuestas a los ejercicios guiados
-
Para cada una de las siguientes entradas, indique el archivo al que hace referencia:
-
developer:x:1010:frank,grace,dave
/etc/group
-
root:x:0:0:root:/root:/bin/bash
/etc/passwd
-
henry:$1$.AbCdEfGh123456789A1b2C3d4.:18015:20:90:5:30::
/etc/shadow
-
henry:x:1000:1000:User Henry:/home/henry:/bin/bash
/etc/passwd
-
staff:!:dave:carol,emma
/etc/gshadow
-
-
Observe el siguiente resultado para responder las siguientes siete preguntas:
# cat /etc/passwd | tail -3 dave:x:1050:1050:User Dave:/home/dave:/bin/bash carol:x:1051:1015:User Carol:/home/carol:/bin/sh henry:x:1052:1005:User Henry:/home/henry:/bin/tcsh # cat /etc/group | tail -3 web_admin:x:1005:frank,emma web_developer:x:1010:grace,kevin,christian dave:x:1050: # cat /etc/shadow | tail -3 dave:$6$AbCdEfGh123456789A1b2C3D4e5F6G7h8i9:0:20:90:7:30:: carol:$6$q1w2e3r4t5y6u7i8AbcDeFgHiLmNoPqRsTu:18015:0:60:7::: henry:!$6$123456789aBcDeFgHa1B2c3d4E5f6g7H8I9:18015:0:20:5::: # cat /etc/gshadow | tail -3 web_admin:!:frank:frank,emma web_developer:!:kevin:grace,kevin,christian dave:!::
-
¿Cuál es el ID de usuario (UID) y el ID de grupo (GID) de
carol
?El UID es 1051 y el GID es 1015 (los campos tercero y cuarto en
/etc/passwd
). -
¿Qué shell está configurado para
dave
yhenry
?dave
usa /bin/bash yhenry
usa /bin/tcsh (el séptimo campo en/etc/passwd
). -
¿Cuál es el nombre del grupo principal de
henry
?El nombre del grupo es
web_admin
(el primer campo en/etc/group
). -
¿Cuáles son los miembros del grupo
web_developer
? ¿Cuáles de estos son administradores de grupo?Los miembros son
grace
,kevin
ychristian
(el cuarto campo en/etc/group
), pero solokevin
es el administrador del grupo (el tercer campo en/etc/gshadow
). -
¿Qué usuario no puede iniciar sesión en el sistema?
La cuenta de usuario
henry
está bloqueada (tiene un signo de exclamación delante de hash de contraseña en/etc/shadow
). -
¿Qué usuario debe cambiar la contraseña la próxima vez que inicie sesión en el sistema?
Si el tercer campo (Fecha del último cambio de contraseña) en
/etc/shadow
es 0, el usuario debe cambiar su contraseña la próxima vez que inicie sesión en el sistema. Por lo tanto,dave
deberá cambiarla. -
¿Cuántos días deben pasar antes de que se requiera un cambio de contraseña para
carol
?60 días (el quinto campo en
/etc/shadow
).
-
Respuestas a los ejercicios exploratorios
-
Trabajando como root, ejecute el comando
useradd -m dave
para agregar una nueva cuenta de usuario. ¿Qué operaciones realiza este comando? Suponga queCREATE_HOME
yUSERGROUPS_ENAB
en/etc/login.defs
están configuradas enyes
.El comando agrega un nuevo usuario, llamado
dave
a la lista de usuarios en el sistema. Se crea el directorio de inicio dedave
(por defecto/home/dave
) y los archivos y directorios contenidos en el directorio skel se copian en el directorio de inicio. Finalmente, se crea un nuevo grupo con el mismo nombre de la cuenta de usuario. -
Ahora que ha creado la cuenta
dave
, ¿puede este usuario iniciar sesión en el sistema?No, porque la cuenta
dave
está bloqueada (vea el signo de exclamación en/etc/shadow
).# cat /etc/shadow | grep dave dave:!:18015:0:99999:7:::
Si configura una contraseña para
dave
, la cuenta se desbloqueará. Puede hacer esto usando el comandopasswd
.# passwd dave Changing password for user dave. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
Identifique el ID de usuario (UID) y el ID de grupo (GID) de
dave
y todos los miembros del grupodave
.# cat /etc/passwd | grep dave dave:x:1015:1019::/home/dave:/bin/sh # cat /etc/group | grep 1019 dave:x:1019:
El UID y el GID de
dave
son 1015 y 1019 respectivamente (los campos tercero y cuarto en/etc/passwd
) y el grupodave
no tiene miembros (el cuarto campo en/etc/group
está vacío). -
Cree los grupos
sys_admin
,web_admin
ydb_admin
e identifique sus ID de grupo (GID).# groupadd sys_admin # groupadd web_admin # groupadd db_admin # cat /etc/group | grep admin sys_admin:x:1020: web_admin:x:1021: db_admin:x:1022:
Los GID para los grupos
sys_admin
,web_admin
ydb_admin
son 1020, 1021 y 1022 respectivamente.Agregue una nueva cuenta de usuario llamada `carol` con UID 1035 y configure `sys_admin` como su grupo principal y `web_admin` y `db_admin` como sus grupos secundarios.
# useradd -u 1035 -g 1020 -G web_admin,db_admin carol # id carol uid=1035(carol) gid=1020(sys_admin) groups=1020(sys_admin),1021(web_admin),1022(db_admin)
-
Elimine las cuentas de usuario
dave
ycarol
y los grupossys_admin
,web_admin
ydb_admin
que haya creado previamente.# userdel -r dave # userdel -r carol # groupdel sys_admin # groupdel web_admin # groupdel db_admin
-
Ejecute el comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
y describa el resultado que le da en términos de permisos de archivo. ¿Cuál de estos cuatro archivos está sombreado por razones de seguridad? Suponga que su sistema usa contraseñas ocultas.# ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow -rw-r--r-- 1 root root 853 mag 1 08:00 /etc/group -rw-r----- 1 root shadow 1203 mag 1 08:00 /etc/gshadow -rw-r--r-- 1 root root 1354 mag 1 08:00 /etc/passwd -rw-r----- 1 root shadow 1563 mag 1 08:00 /etc/shadow
Los archivos
/etc/passwd
y/etc/group
son legibles en todo el mundo y están sombreados por razones de seguridad. Cuando se utilizan contraseñas ocultas, puede ver unax
en el segundo campo de estos archivos porque las contraseñas cifradas para usuarios y grupos se almacenan en/etc/shadow
y/etc/gshadow
, que solo pueden leerse root y en algunos sistemas, también por miembros que pertenecen al gruposhadow
. -
Ejecute el comando
ls -l /usr/bin/passwd
. ¿Qué bit especial se establece y cuál es su significado?# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
El comando
passwd
tiene el bit SUID establecido (el cuarto carácter de esta línea), lo que significa que el comando se ejecuta con los privilegios del propietario del archivo (root). Así es como los usuarios comunes pueden cambiar su contraseña.