共计 1661 个字符,预计需要花费 5 分钟才能阅读完成。
说到用户管理,就不得不提到 shadow 这个文件,shadow 有三个功能:
- 隐藏密码
- 扩充密码的功能
- 提供账号管理工具
隐藏密码: 因为 /etc/passwd 和 /etc/group 文件的权限必须是 0644,这意味着所有的用户都能读取到内容,所以为了安全起见,我们通过 shaodw 把用户和组的密码分别隐藏在 /etc/shadow,/etc/gshadow 文件中,且这两个文件只有管理员,也就是 root 能调用
提供账号管理工具 :我们之前所介绍的用户和组管理的相关命令,都是 shadow 所提供的工具
扩充密码功能 :这个扩充密码功能就是除了密码之外的额外功能,如,密码的有效期限,设置群组管理员(组长)等,这些都是记录在 /etc/shadow,/etc/gshadow 文件中
/etc/shadow: 存储用户密码及密码额外功能的文件
文件内容:root:$6$T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO...::0:99999:7:::
bin:*:18027:0:99999:7:::
/etc/shadow 文件的格式与 /etc/passwd 类似,也是每一行代表一个账号的数据,使用:进行分隔.
内容详解
USERNAME:PASSWORD:LAST_CHANGED:MIN_DAYS:MAX_DAYS:WARNNING:EXPIRES:INVALID:RESERVED
1、USERNAME:用户账号名称。2、PASSWORD:加密后的密码。3、LAST_CHANGED:密码最后一次修改的日期。4、MIN_DAYS:密码修改的最小间隔天数。5、MAX_DAYS:密码修改的最大天数。6、WARNNING:密码过期前警告的天数。7、EXPIRES:密码过期的日期
8、INVALID: 账号失效日期
9、RESERVED:保留位,未定义功能
这里面我们所提到的日期都是从 1970 年 1 月 1 日起经过的天数,所以我们看到的不是日期的格式,而是一组数字,我们接下来看下另一个文件
/etc/gshadow: 存储组密码及密码额外功能的文件
文件内容:root:::
bin:::
daemon:::
内容详解
GROUPNAME:PASSWORD:ADMINISTRATORS:MEMBERS
GROUPNAME: 组名
PASSWORD:组密码
ADMINISTRATORS:组长
MEMBERS:组成员
除此之外用户管理还有一个简单的方法,那就是以 root 用户身份登录图形界面
cockpit
# systemctl start cockpit
http://localhost:9090
管理密码的有效期限
Shadow 除了会把密码数据隐藏到其他文件、提供许多账号管理工具外,还允许你为账号或密码设置有效期限,以提高 Linux 的安全性。目前的 Shadow 可以设置下列两种期限:
密码过期
一旦超过密码过期日期,用户成功的登录 Linux 时,会强迫用户设置一个新的密码。设置完毕后,才会开启用户的 Shell 程序。设置密码过期的目的,在于提高 Linux 的安全性。
账号过期
若超过账号过期日期,Linux 会禁止用户登录系统,即使输入正确的密码,也无法登录。当账号过期时,Linux 会提示用户联系管理员修改账号过期日期。
Your account has expired; please contact your system administrator
我们可以使用 chage 命令来查看或调整这些相关的期限
- chage 命令
[root@zutuanxue ~]# chage -l hello
最近一次密码修改时间:从不
密码过期时间:从不
密码失效时间:从不
帐户过期时间:从不
两次改变密码之间相距的最小天数:0
两次改变密码之间相距的最大天数:99999
在密码过期之前警告的天数:7
chage
-m 设置密码修改的最小天数
-M 设置密码修改的最大天数
-d 设置密码最后修改日期
-I 设置密码过期后,锁定账号的天数
-E 设置账号过期日期,0= 立即过期,-1= 永不过期
-W 设置密码过期前的警告天数
-l 查看指定用户的相关信息
-h 帮助