Linux平台下用户基本管理机制及原理剖析(二)
在前面的博客中,我们对虚拟环境下用户的新建、查看、删除以及用户组的新建和管理有了一定的了解,这篇文章我们
接着了解虚拟环境下的用户信息的更改、用户认证信息的查看,用户密码的管理以及用户授权。
1.用户信息的更改
更改用户信息我们用到的命令是chmod,chmod搭配不同的参数即可更改对应的用户信息,详细参数情况可参照下表
命 令 + 参 数 + 用 户 名 | 功 能 |
usermod -l 新用户名 原名 | 更改当前的用命名 |
usermod -u uid 用户名 | 更改用户的uid |
usermod -g gid 用户名 | 更改用户的初始组 |
usermod -G gid 用户名 | 更改用户的附加组 |
usermod -aG gid 用户名 | 添加用户的附加组 |
usermod -G " " 用户名 | 删除用户所有附加组的身份 |
usermod -c "abc" 用户名 | 指定用户说明文字 |
usermod -d /home/lee 用户名 | 更改用户家目录的指向 |
usermod -md /home/lee 用户名 | 更改用户的家目录 |
usermod -s /bin/sh 用户名 | 更改用户的shell |
usermod -L 用户名 | 冻结用户 |
usermod -U 用户名 |
解锁用户 |
为了验证上述命令及参数,我们需要新建用户来完成实验:
再新建用户之前,我们依旧对/etc/passwd、/etc/group和/home/进行监视,
watch -n 1 'tail -n 3 /etc/passwd /etc/group;ls -l /home/'
新建名为tom、harry的用户,新建名为shengchan、jishu的用户组,其他各个信息默认。
useradd tom ##新建用户tom
useradd harry ##新建用户harry
groupadd jishu ##新建一个组名为jishu
groupadd shengchan ##新建一个组名为shengchan
更改tom的用户名为wen;更改wen的uid为123;更改wen的初始组为jishu;
usermod -l wen tom ##更改tom的用户名为wen
usermod -u 123 wen ##更改wen的uid为123
usermod -g jishu wen ##更改wen的初始组为jishu
更改harry的附加组为shengchan;添加harry的附加组为jishu.
usermod -G shengchan harry ##更改harry的附加组为shengchan
usermod -aG jishu harry ##增加harry的份附加组为jishu
清空harry的附加组;指定wen的说明为Mr.wen;更改wen的shell类型;
usermod -G " " harry ##清空harry的附加组
usermod -c "Mr.wen" ##指定wen的说明为Mr.wen
usermod -s /bin/sh wen ##更改wen的shell
你对用户的说明在你登陆时可以直观地看到:
更改用户家目录的指向可以看到,只有指向变了,家目录里并没有相应的目录:
usermod -d /home/hahaha wen ##更改用户家目录的指向
更改家目录,可以看到家目录有相应的文件目录:
usermod -md /home/heihei wen ##更改用户的家目录
用usermod -L 冻结用户;用usermod -U 来解锁用户。
usermod -L wen ##冻结wen用户
usermod -U wen ##解锁wen用户
冻结后,就不能再登陆界面正常登陆,用root用户登陆,解锁后即可重新在登陆界面进行登陆。
2.用户认证信息的查看
记录用户的登陆信息的文件为/etc/shadow
我们查看/etc/shadow的后五行,可以看到用户的认证信息总共9列:
以harry为例:
字 段 | 含 义 |
[1] | 用户名 |
[2] | 用户的密码加密字段 |
[3] | 用户密码最后一期被更改后已经使用的时间(从1970-01-01开始,1970-01-01是Unix起源,计算机元年) |
[4] | 用户密码最短有效期:密码最少多少天之后可以修改 |
[5] | 用户密码最长有效期:密码多少天之后必须修改(例子中99999就是表明可以一直不用修改密码) |
[6] | 密码警告期限:密码修改之前几天提醒我修改(例子中是7天之前) |
[7] | 要是没有修改延长几天 |
[8] | 无论怎样到这个时间过期 |
[9] |
保留字段,目前无含义 |
3.用户密码的管理
查看wen的用户密码信息:passwd -S wen
特别注意的是,SHA512表示的是加密类型
更改(设置)密码,以wen为例:passwd wen,然后两次输入想要设定的密码,看到successfully字样,完成设置。
passwd 和对应的参数表示不同的功能:
passwd -l wen ##在用户密码前面加上“!!”
passwd -u wen ##解除用户密码前加的“!!”
usermod -L wen ##在用户密码前面加上“!”
usermod -U wen ##解除用户密码前加的“!”
passwd -d wen ##清空wen的密码
说明:passwd -l和usermod -L 都可以用来冻结用户,但是冻结的程度不同
同理:passwd -u 和 usermod -U都可以用来解锁用户。
注意, 普通用户该密码时:
1.必须知道当前用户的原始密码;
2.密码不能和帐号名称相似;
3.密码不能是纯数字或纯字母;
4.密码不是有序字母和数字组合。
4.用户认证信息的更改:
1.用户密码最后一次被更改的时间
passwd -e wen ##将用户最后一次更改密码后的时间置零
chage -d 0 wen 用户在登陆时会被强制改密码
##两个命令功能类似
2.用户密码最短有效期
passwd -n 1 wen ##wen用户在一天之内不能修改密码
chage -m 1 wen
3.用户密码最长有效期
passwd -x 30 wen ##wen用户在30天内必须改密码
chage -M 30 wen
4.密码警告期限
passwd -w 2 wen ##密码过期前两天有警告输出
chage -W 2 wen
5.用户非活跃天数
passwd -i 1 wen ##密码过期后的一天内仍可登陆
chage -I 1 wen
6.用户到期日
chage -E 2019-01-15 ##用户在2019-01-15会被冻结
依次运行上述代码,可得到以下结果:
5.用户授权(权限下放)
首先我们要了解到,权限下放文件是/etc/sudoers。
和大多数文件一样,此文件可以用vim直接编辑,但是不提供语法检测
也可以使用visudo来编辑此文件,visudo是提供语法检测的
我们以给wen新建用户和删除用户的权限来进行操作:
visudo ##打开并编辑sudoers文件
输入":set nu“ 来标注行号——>输入“:100“来定位到100行——>按i进入insert编辑模式
输入如下内容来定义新的权限:
## Allow wen to run useradd and userdel(对即将编辑的内容作以解释)
wen localhost=(root) /usr/sbin/useradd ##wen用户可以在localhost主机
以root用户的身份执行useradd命令
wen localhost=(root) NOPAAWD: /usr/sbin/useradd ##wen用户可以在localhost主机
以root用户的身份免密执行useradd命令
编辑好后按Esc退出insert模式,然后按:wq退出保存。如果输入的有问题,会提醒你有错误,此时按e继续编辑。
下面试一试授权的结果:
如果我们删除授权的文件内容,那么会出现什么结果: