Aprendizaje del archivo de autenticación de usuario de Linux

uno,/etc/sudoers

/etc/sudoersListas de control de acceso (ACL) utilizadas para administrar operaciones privilegiadas en sistemas Linux. Este archivo especifica qué usuarios, grupos o hosts pueden ejecutar comandos privilegiados y qué comandos pueden ejecutar.

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for the details on how to write a sudoers file.
#

# Override builtin defaults
Defaults    syslog=auth,timestamp_timeout=300,!set_logname
Defaults:admin    lecture=always
Defaults:admin    lecture_file=/etc/sudoers.lecture
Defaults:admin    passwd_timeout=0.5
Defaults:hwnoc !requiretty

# Host alias specification

# Cmnd alias specification
Cmnd_Alias  SHELLS = /bin/sh,/bin/ash,/bin/bsh,/bin/bash,/bin/csh, \
            /bin/ksh,/bin/rsh,/bin/tcsh,/bin/zsh
Cmnd_Alias  VIETC = /usr/sbin/visudo,/usr/sbin/vipw,/usr/sbin/vigr
Cmnd_Alias  USERADD = /usr/sbin/useradd,/usr/sbin/adduser
Cmnd_Alias SUPERMIT = !/usr/bin/sudo *,!/bin/su *,/bin/su -c*,/bin/su [a-zA-Z0-9]*,!/bin/su *root*
Cmnd_Alias SUDOEXEC = /bin/sh [/~.a-zA-z0-9]*, /bin/sh -c*, \
                        /bin/ash [/~.a-zA-z0-9]*, /bin/ash -c*, \
                        /bin/bsh [/~.a-zA-z0-9]*, /bin/bsh -c*, \
                        /bin/bash [/~.a-zA-z0-9]*, /bin/bash -c*, \
                        /bin/csh [/~.a-zA-z0-9]*, /bin/csh -c*, \
                        /bin/ksh [/~.a-zA-z0-9]*, /bin/ksh -c*, \
                        /bin/rsh [/~.a-zA-z0-9]*, /bin/rsh -c*, \
                        /bin/tcsh [/~.a-zA-z0-9]*, /bin/tcsh -c*, \
                        /bin/zsh [/~.a-zA-z0-9]*, /bin/zsh -c*

## settings from ali local

# default
%users  ALL=(users) ALL
root    ALL=(ALL) ALL


Cmnd_Alias WHITELIST1 = /bin/grep
mysql  ALL=(ALL) NOPASSWD:WHITELIST1


Cmnd_Alias WHITELIST2 = /usr/bin/crontab -l -u admin,/usr/bin/crontab -u admin -l
guest  ALL=(ALL) NOPASSWD:WHITELIST2


appadmin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD

%tbops  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC

%tbpe  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC

%tbdba  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC

%tbnoc  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD

%tbscm  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD

%tbdev  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD

%tbtest  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC,!VIETC,!USERADD

# Compatible with the /home/staragent/plugins/osteam.src/osteam.cur/account.sh
Cmnd_Alias ALINOC_CMD = /usr/bin/kill,/usr/sbin/shutdown,/usr/sbin/halt,/usr/sbin/reboot,/bin/sh,/bin/ash,/bin/bsh,/bin/bash,/bin/csh,/bin/ksh,/bin/rsh,/bin/tcsh,/bin/zsh,/usr/bin/passwd,/usr/bin/chsh,/usr/bin/chfn,/usr/bin/su,/bin/su,/usr/sbin/su,/usr/sbin/visudo,/usr/sbin/vipw,/usr/sbin/vigr,/usr/sbin/useradd,/usr/sbin/adduser,/user/sbin/userdel,/user/sbin/usermod,/user/sbin/userpasswd,/user/sbin/groupadd,/user/sbin/groupdel,/user/sbin/groupmod,/usr/bin/sudo*,/bin/su*,/bin/su [a-zA-Z0-9]*,/bin/su *root*,/bin/chmod,/bin/chown,/bin/chattr,/bin/rm,/bin/rmdir,/sbin/rmmod,/sbin/insmod
hwnoc  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD,!ALINOC_CMD


admin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD

%admin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD

1.1 、Defaults

Defina información predeterminada, incluido el usuario predeterminado, el comando predeterminado, el host predeterminado, etc.

格式:Defaults parameter=value

Defaults syslog=auth,timestamp_timeout=300,!set_lognamePor ejemplo, esta regla en el archivo significa que cuando un usuario usa el comando sudo, la información de ejecución del comando sudo se registrará en el registro de seguridad del sistema, con un tiempo de espera de 5 minutos, y la información del nombre de inicio de sesión del usuario actual no ser grabado .

  • syslog: Especifique el nivel de registro y el dispositivo. La autenticación aquí significa registrar la información de ejecución del comando sudo en el registro de seguridad del sistema.
  • timestamp_timeout: Especifique el tiempo de espera para el comando sudo, aquí es 300 segundos, que son 5 minutos.
  • !set_logname: Indica que se deshabilita el registro de la información de inicio de sesión del usuario actual.
格式:Defaults:admin parameter=value
# 针对admin用户设置
Defaults:admin    lecture=always
Defaults:admin    lecture_file=/etc/sudoers.lecture
Defaults:admin    passwd_timeout=0.5

lecture:指定 sudo 命令的提示信息,这里是 always,表示每次使用 sudo 命令时都会提示用户一条信息。
lecture_file:指定 sudo 命令的提示信息来源,这里是 /etc/sudoers.lecture,表示提示信息将从该文件中读取。
passwd_timeout:指定密码的超时时间,这里是 0.5,表示在输入密码后 0.5 秒内必须使用 sudo 命令,否则需要重新输入密码。

# 意味着当名为 admin 的用户使用 sudo 命令时,每次都会收到一条来自 /etc/sudoers.lecture 文件的提示信息,提醒用户操作的风险和注意事项。另外,用户必须在输入密码后 0.5 秒内使用 sudo 命令,否则需要重新输入密码。

Defaults:hwnoc !requiretty

!requiretty:表示不要求用户在 tty 控制台上使用 sudo 命令。

# 通常情况下,sudo 命令要求用户必须在 tty 控制台上输入密码,这样可以确保用户是在本地执行命令,而不是在远程机器上执行。然而,在某些情况下,用户可能需要在无 tty 的情况下使用 sudo 命令,如通过 ssh 等远程连接执行命令。这时就需要通过 !requiretty 参数来禁用 tty 控制台的要求。因此,这条规则意味着当名为 hwnoc 的用户使用 sudo 命令时,不需要在 tty 控制台上输入密码。

1.2 、Cmnd_Alias

Defina alias de comandos, asignando uno o más comandos a un alias.

格式:Cmnd_Alias aliasname=command1,command2,...

Similares a esto son:

  • User_Alias: Defina un alias de usuario y asigne uno o más usuarios a un alias.

  • Runas_Alias: Defina un alias de usuario en ejecución y asigne uno o más usuarios en ejecución a un alias.

  • Host_Alias: Defina un alias de host y asigne uno o más hosts a un alias.

1.3 Restricciones de permisos de usuarios y grupos de usuarios

admin  ALL=(ALL) NOPASSWD:ALL,SUPERMIT,!VIETC,!USERADD

explicar:

  • admin: especifique el nombre de usuario como administrador.
  • TODOS: Especifica que todos los hosts son aplicables a esta regla.
  • (TODOS): Especifica ejecutar el comando como cualquier usuario.
  • NOPASSWD:ALL: Indica que no necesita ingresar una contraseña al ejecutar el comando sudo.
  • SUPERMIT: especifica el alias del comando SUPERMIT, que se puede llamar al ejecutar el comando sudo.
  • !VIETC: Indica que no se permite ejecutar el alias del comando VIETC.
  • !USERADD: Indica que no se permite la ejecución del alias del comando USERADD.

Por lo tanto, esta regla significa que el usuario administrador puede usar el comando sudo en todos los hosts para ejecutar cualquier comando como cualquier usuario sin ingresar una contraseña. Además, el usuario administrador puede utilizar el alias de comando SUPERMIT, pero no puede utilizar los alias de comando VIETC y USERADD para garantizar la seguridad y estabilidad del sistema.

%tbops  ALL=(ALL) ALL,SUPERMIT,!SHELLS,SUDOEXEC

Esta regla significa que los usuarios del grupo de usuarios tbops pueden usar el comando sudo para ejecutar cualquier comando como cualquier usuario en todos los hosts, y también pueden usar el alias del comando SUPERMIT y el alias del comando SUDOEXEC. Sin embargo, los usuarios no pueden ejecutar alias de comandos SHELLS para garantizar la seguridad y estabilidad del sistema.

dos,/etc/passwd

/etc/passwdEs un archivo de configuración de usuario del sistema, que almacena la información básica de todos los usuarios del sistema, y ​​todos los usuarios pueden realizar operaciones de lectura en este archivo.
Un archivo de ejemplo es el siguiente:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

El formato es:

用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录 Shell

La explicación específica es la siguiente:

Campo explicar
nombre de usuario Una cadena que representa la cuenta de usuario, generalmente de hasta 8 caracteres de longitud y que consta de letras y/o números mayúsculas y minúsculas.
contraseña La contraseña de usuario cifrada se almacena, pero debido a riesgos de seguridad, la mayoría de los sistemas Linux ahora utilizan tecnología oculta para almacenar la contraseña de usuario cifrada real en el archivo /etc/shadow.
UID Un número entero utilizado internamente por el sistema para identificar al usuario. En general, tiene una correspondencia uno a uno con el nombre de usuario.
GID Registra los grupos de usuarios a los que pertenece el usuario. Corresponde a un registro en el archivo /etc/group.
Información de usuario Se registra cierta información personal del usuario, como el nombre real del usuario, número de teléfono, dirección, etc. Este campo no tiene ninguna utilidad práctica.
directorio de inicio del usuario El directorio de trabajo inicial del usuario, que es el directorio donde se encuentra el usuario después de iniciar sesión en el sistema.
shell de inicio de sesión El proceso que se inicia después de que el usuario inicia sesión es la interfaz entre el usuario y el sistema Linux.

La diferencia entre el campo de contraseña xy*

x:表示用户密码已经被加密,实际密码存储在 /etc/shadow 文件中。
*:表示密码字段为空,也就是用户无法通过密码登录,比如系统用户或者没有密码的用户

Diferencias entre los distintos /etc/passwd

Nombre del archivo introducir
/etc/passwd Este es el archivo /etc/passwd más común, que se utiliza para almacenar información sobre todas las cuentas de usuario, incluido el nombre de usuario, UID, GID, contraseña, información del usuario, directorio de inicio y programa shell predeterminado.
/etc/passwd- Este es un archivo de respaldo del archivo /etc/passwd. Generalmente, el sistema crea automáticamente este archivo de respaldo cuando el administrador realiza modificaciones en el archivo /etc/passwd.
/etc/passwd+ Este es el archivo /etc/passwd utilizado por algunas distribuciones de Linux (como Gentoo). Es ligeramente diferente del archivo /etc/passwd normal. Generalmente incluye nombre de usuario, UID, GID, información del usuario y directorio de inicio.
/etc/passwd.org Esta es la copia de seguridad del archivo /etc/passwd de algunas distribuciones de Linux (como Debian), generalmente respaldada en el mismo momento que el archivo /etc/passwd cuando se instaló el sistema.
/etc/passwd- Este es el archivo /etc/passwd en el sistema operativo AIX. El formato es ligeramente diferente del archivo /etc/passwd normal. Generalmente incluye nombre de usuario, UID, GID, información del usuario, directorio de inicio, programa de shell predeterminado y vencimiento de la cuenta. tiempo, etc.

Comandos para gestionar archivos /etc/passwd

useradd
Cree el usuario useradd-test, establezca la contraseña en 123 y cree un grupo de usuarios con el mismo nombre que el grupo principal del usuario.

useradd -p 123 -U useradd-test
$ cat /etc/passwd | grep useradd-test
useradd-test:x:1000:1000::/home/useradd-test:/bin/bash

$ cat /etc/shadow | grep useradd-test
useradd-test:123:19562:0:99999:7:::

De lo anterior se puede ver que la contraseña creada por useradd está en texto claro y no se puede cifrar. Para cifrar, debe usar el comando passwd.

passwd
Modificar contraseña de usuario

$ sudo passwd useradd-test
Changing password for user useradd-test.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.
cat /etc/shadow | grep useradd-test
useradd-test:$6$k.sul8dF$pgZaR8zG1BYjIp9vTemeROXhA2npYLqUfblpZnCgChyVtr4yi9QZSyMLOtqyH85b2ONXeMK.RJU1awlDEUMww/:19562:0:99999:7:::

usermodmodificar propiedades

$ usermod -c "useradd test" useradd-test

$ cat /etc/passwd | grep useradd-test
useradd-test:x:1000:1000:useradd test:/home/useradd-test:/bin/bash

usermodparámetros comunes

parámetro Orden significado
-l usermod -l newname oldname Modifique el nombre de usuario del usuario, donde nuevo nombre es el nuevo nombre de usuario y antiguo nombre es el antiguo nombre de usuario.
-c usermod -c "User Info" username Modifique la información de usuario del usuario, donde "Información de usuario" es la información del usuario y nombre de usuario es el nombre del usuario cuya información se va a modificar.
-g usermod -g groupname username Modifique el grupo principal al que pertenece el usuario, donde nombre de grupo es el nombre del grupo de usuarios que se va a cambiar y nombre de usuario es el nombre del usuario que se va a modificar.
-G usermod -G group1,group2 username Agregue usuarios a varios grupos de usuarios, donde grupo1 y grupo2 son los grupos de usuarios que se agregarán y nombre de usuario es el nombre de usuario que se modificará.
-s usermod -s /bin/bash username Modifique el programa shell predeterminado del usuario, donde /bin/bash es el nuevo programa shell y nombre de usuario es el nombre de usuario que se va a modificar.
-d usermod -d /home/newhome username Modifique el directorio de inicio del usuario, donde /home/newhome es el nuevo directorio de inicio y nombre de usuario es el nombre de usuario que se va a modificar.
-e usermod -e 2022-12-31 username Modificar el tiempo de vencimiento de la cuenta de usuario, donde 31 de diciembre de 2022 es la fecha en que vence la cuenta y nombre de usuario es el nombre de usuario a modificar.
-p usermod -p password username Modifique la contraseña del usuario, donde contraseña es la nueva contraseña y nombre de usuario es el nombre de usuario cuya contraseña se va a cambiar. Cabe señalar que este método no puede cifrar la contraseña, por lo que no es muy seguro, se recomienda utilizar el comando passwd para configurar la contraseña.
-u usermod -u uid username Modifique el UID del usuario, donde uid es el nuevo ID de usuario y nombre de usuario es el nombre de usuario a modificar.

userdelborrar cuenta

userdel useradd-test

tres,/etc/shadow

/etc/shadowUn directorio es un directorio de archivos que se utiliza para almacenar información de contraseñas de usuario, también conocidos como "archivos ocultos". Solo el usuario root tiene permiso de lectura para este directorio y otros usuarios no pueden ver ni modificar directamente los archivos en este directorio.
El formato es el siguiente:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

Explicación específica:

Campo significado
Nombre de usuario Este campo especifica el nombre de inicio de sesión del usuario.
Contraseña cifrada (Contraseña) Este campo almacena la contraseña del usuario, cifrada mediante un algoritmo de cifrado.
La hora en que se cambió la contraseña por última vez (Último cambio) Este campo especifica la hora en que se modificó la contraseña por última vez, lo que representa el número de días desde el 1 de enero de 1970.
Duración mínima de la contraseña (días mínimos) Este campo especifica cuántos días deben pasar después de un cambio de contraseña antes de que se pueda cambiar la contraseña nuevamente.
Duración máxima de la contraseña (días máximos) Este campo especifica el período de validez de la contraseña, indicando cuánto tiempo se puede conservar la contraseña desde su última modificación.
Tiempo de advertencia de vencimiento de contraseña (Días de advertencia) Este campo especifica la cantidad de días para recordarle al usuario antes de que caduque la contraseña.
Tiempo de vencimiento de la cuenta (días inactivos) Este campo especifica la cantidad de días después de que el usuario no inicia sesión en el sistema, la cuenta quedará invalidada automáticamente.
Fecha de vencimiento de la cuenta Este campo especifica la fecha de terminación de la cuenta, expresada como el número de días desde el 1 de enero de 1970.

/etc/shadowNeutralizar *la !!diferencia

En el archivo /etc/shadow, los dos caracteres especiales * y!! indican que la cuenta de usuario no puede iniciar sesión en el sistema, pero existen algunas diferencias sutiles entre ellos.

  • *: Si el campo de contraseña en el archivo /etc/shadow es *, significa que la cuenta de usuario ha sido bloqueada y no puede iniciar sesión con la contraseña. Esta situación suele deberse a que un administrador bloquea manualmente la cuenta de usuario.

  • !!: Si el campo de contraseña en el archivo /etc/shadow es !!, significa que la cuenta de usuario ha sido deshabilitada y no puede iniciar sesión con la contraseña. Esta situación generalmente se debe a que el sistema deshabilita automáticamente la cuenta de usuario, como por ejemplo la expiración de la contraseña o que el usuario no inicie sesión en el sistema durante un tiempo prolongado.

需要注意的是,无论是 * 还是 !!,都表示该用户账户无法登录系统,但它们之间的区别在于,* 表示用户账户是被管理员手动锁定的,而 !! 则表示用户账户是被系统自动禁用的。在实际使用中,管理员需要根据实际情况进行相应的处理,以确保系统的安全性和稳定性。

Supongo que te gusta

Origin blog.csdn.net/yuelai_217/article/details/131899584
Recomendado
Clasificación