Cada usuario en Linux tiene una identificación de usuario única (UID ), que es un número entero ordinario y un nombre de usuario asociado. Los usuarios inician sesión con sus nombres de usuario, pero el sistema utiliza los UID asociados. Cada cuenta de usuario también tiene un directorio de inicio y un shell de inicio de sesión. Cuando los usuarios inician sesión, se colocan en su directorio de inicio y se ejecuta su shell de inicio de sesión. Toda esta información de la cuenta de usuario se almacena en el /etc/passwd archivo.
Cada usuario también pertenece a uno o más grupos. Se pueden asignar diferentes usuarios a un mismo grupo. Se puede otorgar acceso a un grupo y a todos los miembros del grupo se les otorgan los mismos privilegios de acceso. Cada cuenta de grupo en Linux tiene una ID de grupo única (GID ) y un nombre de grupo asociado. La información del grupo se almacena en /etc/group archivo.
RedHat Linux utiliza un esquema de grupo privado de usuarios (UPG) . Cuando se agrega una nueva cuenta de usuario, también se crea un nuevo grupo privado de usuarios. El grupo privado de usuarios tiene el mismo nombre que el usuario y el nuevo usuario es el único miembro de este grupo.
Tanto los usuarios como los grupos usan contraseñas ocultas. Las contraseñas se cifran y almacenan en diferentes archivos, /etc/shadow para usuarios y /etc/gshadow para grupos La seguridad mejora al almacenar contraseñas cifradas en archivos "sombra", ya que estos archivos solo los puede leer el usuario root. El uso de contraseñas ocultas también proporciona parámetros de caducidad de contraseñas y permite aplicar políticas de seguridad mediante el archivo /etc/login.defs. Solo el usuario raíz puede agregar, modificar o eliminar cuentas de usuarios y grupos.
Archivos de configuración de usuarios y grupos
/etc/contraseña
Cuando se agrega un nuevo usuario, la información se almacena como una sola línea separada por dos puntos en /etc/passwd. Aquí hay un ejemplo de una entrada en este archivo:
# tail -1 /etc/passwd test:x:1001:1001:test user:/home/test:/bin/bash
A continuación se describe esta entrada:
Campo | Descripción |
---|---|
prueba | Nombre de usuario |
x | Indica que se utilizan contraseñas ocultas |
1001 | UID, estos comienzan con 1000 y se incrementan en 1 por cada usuario recién agregado. Los UID por debajo de 1000 están reservados para uso del sistema. |
1001 | GID del grupo principal del usuario. Estos comienzan con 1000 y aumentan en 1 para cada nuevo grupo. Los usuarios pueden pertenecer a más de un grupo. |
usuario de prueba | Información de GECOS (General Electric Comprehensive Operating System), utilizada únicamente con fines informativos, como el nombre completo |
/inicio/prueba | Directorio de inicio para este usuario |
/bin/bash | Shell predeterminado para este usuario |
/etc/sombra
Con las contraseñas ocultas, se agrega automáticamente una nueva entrada a /etc/shadow cuando se crea un nuevo usuario. Este archivo solo puede ser visto por root. Aquí hay un ejemplo de una entrada en este archivo:
# tail -1 /etc/shadow test:$6$XBCDBQ...:17610:0:99999:7:::
A continuación se describe esta entrada:
Campo | Descripción |
---|---|
prueba | Nombre de usuario |
$6$XBCDBQ… | Valor de contraseña con hash (se muestra el valor parcial). La contraseña de texto sin formato en sí no se almacena en el disco. Un algoritmo crea una cadena única a partir de una contraseña. |
17610 | Número de días desde que se cambió la contraseña (contados en días desde el 1 de enero de 1970). |
0 | Número de días que deben pasar antes de que el usuario deba cambiar la contraseña. |
99999 | Número máximo de días desde que se cambió la contraseña que se puede usar la contraseña. Después de esta cantidad de días, la contraseña debe ser cambiada por el usuario. |
7 | Número de días antes de la fecha de vencimiento en que se advierte al usuario sobre la política de cambio de contraseña pendiente. Si la contraseña no se cambia después de esta cantidad de días, la cuenta de usuario se bloquea. |
El siguiente campo está vacío pero se utiliza para almacenar la última fecha en que se bloqueó la cuenta (contados en días desde el 1 de enero de 1970). El último campo también está vacío pero no se usa.
/etc/grupo
Debido a que Oracle Linux utiliza un esquema UPG, se crea automáticamente una nueva entrada en /etc/group cuando se agrega un nuevo usuario. El nombre del grupo es el mismo que el nombre de usuario. Aquí hay un ejemplo de una entrada en este archivo:
# tail -1 /etc/group test:x:1000:test
A continuación se describe esta entrada:
Campo | Descripción |
---|---|
prueba | Nombre del grupo |
x | Indica que se utilizan contraseñas ocultas |
1000 | GID |
prueba | Lista de usuarios que son miembros del grupo |
Cada grupo puede tener varios usuarios. Los usuarios también pueden pertenecer a más de un grupo. El GID almacenado en la entrada del usuario en /etc/passwd es el grupo principal del usuario.
/etc/gshadow
Las contraseñas de grupo cifradas se almacenan en este archivo. Sin embargo, las contraseñas de grupo rara vez se utilizan. Aquí hay un ejemplo de una entrada en este archivo:
# tail -1 /etc/gshadow test:!!::test
A continuación se describe esta entrada:
Campo | Descripción |
---|---|
prueba | Nombre del grupo |
x | Contraseña cifrada. Los !! Indica que la cuenta está bloqueada. |
oráculo | Lista de usuarios que son miembros del grupo |
Los dos últimos campos se utilizan para designar administradores y miembros.
Agregar una cuenta de usuario
añadir usuario
Utilice el comando useradd para agregar una cuenta de usuario. La sintaxis es:
# useradd [options] user_name
Al crear un nuevo usuario sin ninguna opción, se aplican las configuraciones predeterminadas. Ejemplo:
# useradd john # tail -1 /etc/passwd john:x:501:501::/home/john:/bin/bash
También por defecto, useradd crea una cuenta de usuario bloqueada. Para desbloquear la cuenta y asignar una contraseña, ejecute el comando passwd user_name como root. Ejemplo:
# passwd john
El comando passwd nombre_usuario le solicita una nueva contraseña. Dependiendo de la complejidad de la contraseña, es posible que se le notifique que la contraseña es incorrecta (demasiado corta o demasiado simple). Vuelva a ingresar la misma contraseña para continuar y desbloquear la cuenta de usuario. El mismo comando passwd se usa para cambiar una contraseña. El usuario raíz siempre puede cambiar la contraseña de un usuario. Se solicita a los usuarios que introduzcan primero la contraseña actual.
Configuración predeterminada
La configuración predeterminada para un nuevo usuario se puede ver y modificar mediante la opción -D. Ejemplo:
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
El INACTIVO La directiva establece el número de días después de que caduca una contraseña hasta que se bloquea la cuenta. Un valor de 0 bloquea la cuenta tan pronto como caduca la contraseña. Un valor de -1 deshabilita la característica. Contenidos del SKEL (/etc/skel de forma predeterminada) se copian en el directorio de inicio de un nuevo usuario cuando se crea la cuenta de usuario. La configuración predeterminada se almacena en /etc/default/useradd . Las siguientes opciones, usadas con –D, cambian los valores predeterminados del comando useradd:
- -b inicio_predeterminado :El prefijo de ruta inicial para el directorio de inicio de un nuevo usuario
- -e default_expire_date :La fecha en la que se deshabilita la cuenta de usuario
- -f predeterminado_inactivo :el número de días después de que caduque una contraseña antes de que se bloquee la cuenta
- -g grupo_predeterminado :el nombre o ID del grupo para el grupo inicial de un nuevo usuario
- -s default_shell :El shell de inicio de sesión del nuevo usuario
Por ejemplo, para cambiar el shell de inicio de sesión de un nuevo usuario al shell Bourne, ingrese lo siguiente:
# useradd –D –s /bin/sh user_name
Opciones de agregar usuario
Hay varias opciones disponibles para el comando useradd para anular la configuración predeterminada. Las siguientes son algunas de las opciones más utilizadas:
- -c comentario :la información GECOS del nuevo usuario, como el nombre completo
- -d home_dir :El prefijo de ruta inicial para el directorio de inicio de un nuevo usuario
- -e fecha_de_caduca :La fecha (formato AAAA-MM-DD) cuando la cuenta de usuario está deshabilitada
- -g grupo_inicial :El nombre del grupo o el número del grupo de inicio de sesión inicial del usuario. El nombre del grupo debe existir. Un número de grupo debe hacer referencia a un grupo ya existente.
- grupo -G :una lista de grupos secundarios de los que el usuario también es miembro. Cada grupo está separado del siguiente por una coma, sin espacios en blanco intermedios.
- -p contraseña :establezca la contraseña del nuevo usuario.
- concha -s :El nombre del shell de inicio de sesión del usuario
Por ejemplo, para crear un nuevo nombre de usuario de "john", e incluir el nombre del usuario y cambiar el shell de inicio de sesión al shell C, ingrese lo siguiente:
# useradd –c "John Smith" –s /bin/csh john
inicio de sesión Shell
Cuando agrega una nueva cuenta de usuario, al usuario se le otorga acceso de shell de manera predeterminada. Puede crear una cuenta de usuario con shell nologin para ejecutar un servicio como SMTP, FTP o ejecutar un servidor web, por ejemplo. Un usuario sin un shell de inicio de sesión no puede iniciar sesión en un sistema y, por lo tanto, no puede ejecutar ningún comando de forma interactiva en el sistema. Sin embargo, los procesos pueden ejecutarse como ese usuario.
El inicio de sesión como usuario con un shell nologin se rechaza cortésmente y se muestra un mensaje que indica que la cuenta no está disponible. Si el archivo /etc/nologin.txt existe, nologin muestra el contenido del archivo en lugar del mensaje predeterminado. Para crear un usuario nologin, primero asegúrese de que nologin exista en /etc/shells archivo:
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash
Para agregar un nuevo usuario llamado prueba sin acceso de shell:
# useradd -s /sbin/nologin test
Intentando iniciar sesión como muestra de prueba de usuario:
# su – test This account is currently not available.
Modificación o eliminación de cuentas de usuario
modo de usuario
Utilice el comando usermod para modificar una cuenta de usuario existente. La sintaxis es:
# usermod [options] user_name
Uno de los usos más comunes del comando usermod es agregar un usuario a otro grupo (secundario). Usa el –a y –G seguidas de una lista separada por comas de los grupos secundarios a los que agregar el usuario. El siguiente ejemplo enumera el contenido de /etc/group antes y después de modificar un usuario y agregarlo a un grupo secundario:
# grep 1017 /etc/group students:x:1017:
# usermod –aG 1017 mary # grep 1017 /etc/group students:x:1017:mary
del usuario
Utilice el comando userdel para eliminar una cuenta de usuario. Ejemplo:
# userdel john
Administración de cuentas de grupo
añadir grupo
Utilice el comando groupadd para agregar una cuenta de grupo. La sintaxis es:
# groupadd [options] group_name
modificación de grupo
Utilice el comando groupmod para modificar una cuenta de grupo. La sintaxis es:
# groupmod [options] group_name
grupodel
Utilice el comando groupdel para eliminar una cuenta de grupo. La sintaxis es:
# groupdel group_name
Puede eliminar grupos incluso si hay miembros en el grupo. No puede eliminar el grupo principal de ningún usuario existente. Debe eliminar al usuario antes de eliminar el grupo.
contraseña g
Utilice el comando gpasswd para administrar /etc/group y /etc/gshadow. Cada grupo puede tener administradores, miembros y una contraseña. La sintaxis es:
# gpasswd [options] group_name
grupos
El comando de grupos muestra los grupos a los que pertenece un usuario. El siguiente ejemplo ilustra que el usuario oráculo pertenece a dos grupos, oráculo (grupo principal) y estudiantes (grupo secundario):
$ grep oracle /etc/passwd oracle:x:1000:1000:Oracle Student:/home/oracle/bin/bash
$ grep oracle /etc/group oracle:x:1000: students:x:1056:student1,student2,oracle
El comando de grupos (registrado como Oracle) verifica estas membresías de grupo.
$ whoami oracle $ groups oracle students
nuevo grupo
El comando newgrp ejecuta un nuevo shell y cambia la identificación de grupo real de un usuario. El siguiente ejemplo ilustra el ID de grupo antes y después de ejecutar el comando. También ilustra que se ejecuta un nuevo shell.
$ id uid=1000(oracle) gid=1000(oracle) groups=1000(oracle),1066(students)...
Tenga en cuenta que el gid es igual a 1000 (oráculo).
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20411 pts/0 00:00:00 ps
$ newgrp students
$ id uid=1000(oracle) gid=1066(students) groups=1000(oracle),1066(students)...
Tenga en cuenta que el gid ahora es igual a 1066 (estudiantes). También tenga en cuenta que se ejecutó un nuevo shell:
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20464 pts/0 00:00:00 bash 20486 pts/0 00:00:00 ps
El comando newgrp no reconoce los números de ID de grupo y solo puede cambiar el nombre real de su grupo a un grupo del que sea miembro. Ejecutar el comando sin un argumento establece la identificación del grupo real en el grupo principal del usuario.
Configuración de contraseña
La caducidad de la contraseña requiere que los usuarios cambien su contraseña periódicamente. Utilice el comando chage para configurar la caducidad de la contraseña. La sintaxis es:
# chage [options] user_name
Ingrese el comando chage, seguido de un nombre de usuario, para mostrar los valores de vencimiento de la contraseña existente y realizar modificaciones. Por ejemplo, para mostrar y cambiar valores para el usuario john, escriba (como usuario root):
# chage john Changing the aging information for john Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2018-03-24]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
La información sobre la caducidad de la contraseña se almacena en el archivo /etc/shadow. Para ver la entrada del usuario john antes de realizar cambios:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:0:99999:7:::
Cambiar el valor de antigüedad mínima de la contraseña a 14 y el valor de antigüedad máxima de la contraseña a 30 significa que en 14 días el usuario tiene 30 días para cambiar su contraseña. La nueva entrada aparece como:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:14:30:7:::
Con base en esta información, se advierte al usuario que cambie su contraseña siete días antes de la fecha de vencimiento de la contraseña. La directiva INACTIVE se utiliza para establecer el número de días de inactividad después de que una contraseña haya caducado antes de que se bloquee la cuenta de usuario. Establecer INACTIVO en -1 deshabilita esta característica.
Opciones de cambio
Hay varias opciones disponibles para el comando cambiar. Para enumerar la información de antigüedad:
# chage -l john Last password change : Mar 24, 2018 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Para obligar a un usuario a establecer una nueva contraseña inmediatamente (forzar la caducidad inmediata), establezca el último valor de cambio de contraseña en 0. Ejemplo:
# chage –d 0 john
Después de iniciar sesión, se le pide al usuario que cambie su contraseña.
configuración de autenticación
El algoritmo hash de contraseña de usuario de Linux también es configurable. Utilice el comando authconfig para determinar el algoritmo actual que se está utilizando o para configurarlo en algo diferente. Para determinar el algoritmo actual:
# authconfig --test | grep hashing password hashing algorithm is sha512
Para cambiar el algoritmo, utilice –passalgo opción con uno de los siguientes como parámetro:descifrar , grancripta , md5 , sha256 , o sha512 , seguido de –update opción. Por ejemplo, para cambiar el algoritmo a MD5:
# authconfig --passalgo=md5 --updateCentOS/RHEL:Gestión de la caducidad de la contraseña para usuarios que utilizan chage (con ejemplos prácticos)
Comprensión del archivo /etc/login.defs