用户信息的更改
方式:
usermod 参数 用户
-l 新用户名 原用户名 更改用户名
-u 更改用户uid
-g 更改用户gid
-G 更改用户附加组
-aG 添加多个用户附加组(系统默认只能有一个附加组)
-c 更改用户说明
-d 更改用户家目录
-s 更改用户shell
-L 冻结帐号(冻结后其他用户不能切换到被冻结的帐号)
-U 解锁帐号
实践:
新建用户userli
将用户名userli修改为studnet
[root@foundation74 kiosk]# usermod -l student userli
//在/etc/passwd下查看用户信息
student:x:1001:1001::/home/userli:/bin/bash ##用户名被修改
将用户id改为1002
[root@foundation74 kiosk]# usermod -u 1002 student
//在/etc/passwd下查看用户信息
student:x:1002:1001::/home/userli:/bin/bash ##用户id被修改
将用户组id修改为1000
[root@foundation74 kiosk]# usermod -g 1000 student
//在/etc/passwd下查看用户信息
student:x:1002:1000::/home/userli:/bin/bash ##用户组id被修改
修改附加组id为1234
[root@foundation74 kiosk]# usermod -G 1234 student
//在/etc/group下查看用户组信息
groupli:x:1234:student ##在1234的附加组下看到了student
为用户体添加多个附加组
[root@foundation74 kiosk]# usermod -G 1001 student ##直接使用-g命令,会覆盖前面的附加组
[root@foundation74 kiosk]# id student
uid=1002(student) gid=1000(kiosk) groups=1000(kiosk),1001(userli) ##1234被覆盖
使用 -aG 命令
[root@foundation74 kiosk]# usermod -aG 1234 student
[root@foundation74 kiosk]# id student
uid=1002(student) gid=1000(kiosk) groups=1000(kiosk),1234(groupli),1001(userli) ##添加多个附加组成功
更改用户说明
[root@foundation74 kiosk]# usermod -c "hello world" student
//在/etc/passwd下查看用户信息
student:x:1002:1000:hello world:/home/userli:/bin/bash
修改用户家目录
[root@foundation74 kiosk]# usermod -d /home/userlee student
//在/etc/passwd下查看用户信息
student:x:1002:1000:hello world:/home/userlee:/bin/bash
修改用户shell
[root@foundation74 kiosk]# cat /etc/shells ##首先查看用户shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
修改shell
[root@foundation74 kiosk]# usermod -s /bin/sh student
student:x:1002:1000:hello world:/home/userlee:/bin/sh
2.给用户授权
意义:管理员作为特权用户,很容易误操作造成不必要的损失。所以健康的管理方法是在Linux服务架构好后,可授权普通用户协助完成日常管理。
过程:
1.以useradd命令为例,首先找到which useradd 命令在系统中的位置
2.在系统中超级用户可以下放给普通用户不能执行的操作给普通用户
下放权力的配置文件:/etc/sudoers
3.超级用户执行visudo进入编辑/etc/sudoers模式
## Allow root to run any commands anywhere
root ALL=(ALL) ALL ##找到root这一行
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
//在root ALL=(ALL) ALL 后添加
kiosk foundation74.ilt.example.com = (root) NOPASSWD: /usr/sbin/useradd
1 2 3 4
字段1:获得权限的用户
字段2: 主机名= (获得到的用户身份)命名
字段3:NOPASSWD表示用户调用sudo命令是不需要自己的密码
字段4:赋予给用户的命令(命令的绝对路径)
配置完毕后,如果想知道哪些命令是你当前用户能够执行或禁止的,可以切换至该用户身份,然后通过sudo -l查看,切换到kiosk用户
[kiosk@foundation74 ~]$ sudo -l
Matching Defaults entries for kiosk on this host:
...
User kiosk may run the following commands on this host:
(root) NOPASSWD: /usr/sbin/useradd ##可以使用useradd命令
...
/usr/local/bin/rht-vmctl, /usr/local/bin/rht-vmsetkeyboard
下面以kiosk身份执行useradd
[kiosk@foundation74 ~]$ sudo useradd newli ##以kiosk的身份执行useradd
[kiosk@foundation74 ~]$ tail -n 1 /etc/passwd
newli:x:1006:1006::/home/newli:/bin/bash ##成功,Amazing!
3.用户认证信息的控制
1.查看用户认证信息:
cat /etc/shadow
2./etc/shadow 的内容分析:
以我的一个kiosk用户为例:
kiosk:$6$muzBVJVz$F8SHsxbuBAtgywfyrxyLogLzl9xeEc7v4GQvc6.WtjWv0/tuRpiHUBd6s9axR/FdZiWvC5oW0PwI2cR8KHwym.:17888:0:99999:7:::
/etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割;我们以如下的例子说明:
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段,目前为空,以备将来Linux发展之用;
3.修改/etc/shadow的信息
方式:通过 chage 命令可以查看和修改 /etc/shadow 文件的第三个字段到第八个字段的密码状态
chage -m 6 username 最短有效期
chage -M 10 username 最长有效期
chage -W 2 username 警告期
chage -I 3 username 非活跃天数
chage -E '2018-1-1' username 帐号到期日期
chage -d 0 username 最后一次密码修改的时间
实践:
分别执行以下命令,并查看/etc/shadow文件
175 cat /etc/shadow
176 chage -m 6 studnet ## 修改最短有效期为6
177 chage -m 6 student
178 chage -M 10000 student ##修改最长有效期为10000
179 chage -W 10 student ##修改警告期为10天
180 chage -I 3 student ##修改非活跃天数为3天
181 chage -E '2019-12-30' student ##修改帐号到期日期为2019-12-30
182 chage -d 0 student ##修改最后一次密码修改的时间
//查看/etc/shadow文件
student:$6$N.Z7zZ10$BtzsxNmtPcw4mGf3keoybZYToqE/x3BGH9g1Gn5zqJGgR780OPbI/a.dSsF/
TAjFo.J0oGsx86x0l8Ww1z3MC1:17900:6:10000:10:3:18260: ##对应信息都被改变
1 2 3 4 5 6
标注字段说明:
标注字段1(17900):从1970年01月01日算起至修改的天数间隔
标注字段2(6):修改最短有效期为6
标注字段3(10000):改最长有效期为10000
标注字段4(10):修改警告期为10天
标注字段5(3):修改非活跃天数为3天
标注字段6(18260):从1970年的1月1日开始至2019-12-30的天数
重点注意:chage -d 0 student 命令
##这个命令主要用于强制用户在第一次登录时必须修改密码。
从普通用户登陆该用户时,先输入之前的密码,系统在提示要修改密码,修改8为位密码,再次输入
[kiosk@foundation74 ~]$ su - student
Password:
You are required to change your password immediately (root enforced) ##强制修改密码
Changing password for student.
(current) UNIX password: ##输入之前的密码
New password: ##输入新密码
Retype new password:
Last login: Fri Jan 4 11:13:36 CST 2019 on pts/3
[student@foundation74 ~]$ ##切换成功