零、概览
文件位置 | 内容 | 格式 |
---|---|---|
/etc/passwd | 存储用户信息 | 用户名:密码占位符:用户编号(uid):归属组编号(gid):用户描述(可为空):家目录:shell路径 |
/etc/shadow | 存储用户的密码信息 | 用户名:加密后的密码:上次修改密码日期:密码策略(4个数字):账号失效日期:保留位 |
/etc/group | 存储用户组信息 | 组名:密码位:组编号:组内成员 |
/etc/gshadow | 存储组的密码信息 | 组名:密码:组管理员:组内成员 |
/etc/sudoers | 配置命令执行权限 | 用户名:权限定义:权限(sudo) |
一、/etc/passwd
该文件是用户信息配置文件,存储了用户的基本信息,所有用户对该文件有读权限。
部分内容如下:
每行代表一个用户,每个用户有7个字段,其格式如下:
用户名:密码占位符:用户编号(uid):归属组编号(gid):用户描述(可为空):家目录:shell路径
其中,
用户编号:
系统用户:0-999(0为root用户)
普通用户:1000-65535(2.6.x 内核之前)、1000--1(2.6.x 内核之后)
密码占位符:以前的系统,用户加密形式的密码就在这里,但由于所有用户都可以读该文件,存在密码泄漏的风险,所以后来把用户加密形式的密码单独存在了/etc/shadow文件中,并且只有root用户才可以读该文件,保证了密码的安全性。而/etc/passwd中的这个位置用"x"占位,表示该用户有密码。
二、/etc/shadow
该文件只有 root 用户有读权限,保证了密码不被其他用户看到。
该文件部分内容如下:
每行代表一个用户,每个用户有9个字段,其格式如下:
用户名:加密后的密码:上次修改密码日期:密码策略(4个字段):账号失效日期:保留位
其中,
加密后的密码:如用户没有密码,则用“*”或“!!”表示,此时账户不能登录
上次修改密码日期: 修改日期,距1970-01-01的天数,使用命令:
date -d “1970-01-01 <num_of_days> day”可以查看,如:
date -d “1970-01-01 18755 days”
密码策略:包括4个字段,分别为
密码不可修改的天数:密码需要重新修改的天数:密码过期前提示的天数:密码过期后宽限的天数
其中,
密码不可修改的天数:密码修改后,在该天数内不可再次修改
密码需要重新修改的天数:密码修改后,在该天数以后需要重新修改,否组过期
密码过期前提示的天数:密码快过期该天数前会提示用户,你的密码还有n天过期,请修改密码。
密码过期后宽限的天数:用户密码过期后,该天数内还可以登录系统,还可以修改密码,过后就不登录了。
账号失效日期:不论密码是否过期,该日期后,用户不能登录。
保留位:为后续新功能保留。
三、/etc/group
部分内容如下:
每行代表一个组,每个组有4个字段,其格式如下:
组名:组密码占位符:组ID:组中用户(多个用户用","隔开)
其中,
组密码占位符:和用户密码占位符一样,加密形式的密码单独存放在/etc/gshadow文件中。
组中用户:如果该组是某用户的初始组,则改用户不写在这里
四、/etc/gshadow
该文件只有 root 用户有读权限,保证了密码不被其他用户看到。
部分内容如下:
每行代表一个组,每个组有4个字段,其格式如下:
组名:加密后的组密码:组管理员:组中用户(多个用户用","隔开)
其中,
加密后的组密码:如果没有密码,用"!"表示。
组管理员:组管理员用户名,可为空。
五、/etc/sudoers
由于涉及sudo权限的赋予,该文件只有 root 及同组用户有读权限。
该文件内容如下:
翻译及说明如下:
#
# This file MUST be edited with the 'visudo' command as root.
# 这个文件必须是'root'用户以'visudo'命令进行编辑
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
# 请考虑在/etc/sudoers.d/中添加本地内容而不是直接修改该文件。
#
# See the man page for details on how to write a sudoers file.
# 有关如何编写sudoers文件的详细信息,请参阅手册页。(使用命令 man sudoers)
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# 主机别名规范
# User alias specification
# 用户别名规范
# Cmnd alias specification
# 驱动命令别名规范
# User privilege specification
# 用户权限规范
# 语法:
# 用户或用户组 登录的主机=(可以变换的身份)可以执行的命令
# 说明:
# 加“%”代表用户组
# 命令部分(等号后面)可以有其他的格式,如下面例子:
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, LOCATE, DRIVERS
# 允许sys用户组中的用户使用NETWORKING等所有别名(别名在上方别名规范中配置)中配置的命令
#
# %wheel ALL=(ALL) NOPASSWD: ALL
# 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
#
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
# 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# 允许root用户执行任意路径下的任意命令
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
# admin组的成员可以获得root权限
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
# 允许sudo组的成员执行任何命令
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d