Linux系统中的用户管理
/etc/passwd | 用户信息库 |
---|---|
/etc/group | 组信息库 |
/home/用户同名目录 | 默认用户家目录 |
/etc/skel/所有文件 | 用户环境配置文件模板 |
/etc/shadow | 用户认证信息 |
/etc/gshadow | 组认证信息 |
id | 查看指定用户信息 |
---|---|
id -u | 查看用户uid |
id -g | 查看用户gid |
id -G | 查看用户所在的所有组id |
id -n | 显示名字而不显示id |
id -a | 显示用户所有id信息 |
示例
[root@localhost ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@localhost ~]# id -u student
1000
[root@localhost ~]# id -g student
1000
[root@localhost ~]# id -G student
1000 10
[root@localhost ~]# id -a student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@localhost ~]# id -Gn student
student wheel
gnome-session-quit ##注销当前用户 --force 强制注销不提示
用户切换
su | 只切换用户身份,不切换用户环境 |
---|---|
su - | 切换用户身份以及用户环境 |
注意:每次su切换到其他用户操作后必须退出,然后再次切换到其他用户,执行时高级用户切换到低级用户时不需要密码,低级用户切换到高级用户需要,平级用户之间切换也需要密码。
用户和用户组的建立及删除
useradd | 用于建立用户,建立用户时读取/etc/login.defs文件内容确定规则 |
---|---|
userdel -r | 删除关于用户的一切 |
useradd -u | 指定用户的uid |
useradd -g | 指定用户的初始gid |
useradd -G | 指定用户的附加组 |
useradd -c | 指定用户的说明 |
useradd -d | 指定用户的家目录,默认为/home/username |
useradd -s | 指定用户默认的shell |
useradd -M | 建立用户时不建立用户的家目录 |
groupadd 和groupdel用于用户组的建立和删除
groupadd -g 指定建立用用户组的组id
示例:该示例使用命令 watch -n 1 ‘tail -n 3 /etc/passwd /etc/group ; ls -l /home’ 进行实验结果的观察
[root@localhost ~]# useradd -u 1234 ahtl
[root@localhost ~]# userdel -r ahtl
[root@localhost ~]# groupadd -g 1111 ahtm
[root@localhost ~]# useradd -g 1111 ahtm
[root@localhost ~]# useradd -G 72 ahtt
[root@localhost ~]# id ahtt
uid=1002(ahtt) gid=1002(ahtt) groups=1002(ahtt),72(tcpdump)
usermod | 更改用户的信息 |
---|---|
usermod -l | 修改用户名称 |
usermod -u | 修改用户uid |
usermod -g | 修改用户gid |
usermod -aG | 指定用户附加组 |
usermod -c | 修改用户说明 |
usermod -d | 更改家目录指向 |
usermod -md | 修改用户家目录,默认为/home/username |
usermod -s | 修改shell的类型 #/sbin/nologin 不能登录 |
用户认证文件的内容分析
/etc/shadow #用户认证信息文件
示例 qwer:!!:18174:0:99999:7:::
[1][2][3][4][5][6][7][8][9]
【1】用户名称
【2】用户密码
【3】密码最近一次修改距离1970.1.1时间
【4】密码最短有效期
【5】密码最长有效期
【6】密码到期前警告
【7】密码非活跃天数
【8】密码到期日
【9】用户自定义列,目前没有启用
用户认证管理
passwd | 可以管理用户的密码也可以管理密码的属性,但不是所有属性都能去修改 |
---|---|
passwd -e + username | 密码已经使用时间修改成0,用户在登录时会被强制改密码 |
passwd -n 1 +username | 设置最短有效期为1天,用户在1天之内不能修改密码 |
passwd -x 30 +username | 设置最长有效期设置为30天,30天内必须改密码 |
passwd -l +username | 对账号进行冻结,会将/etc/shadow第二列前面加上!使密码失效 |
passwd -u +username | 对用户密码进行解锁 |
passwd -S +username | 对账号密码进行查看 |
passwd -w +username | 设置密码的提前警告期 |
passwd -i +username | 设置密码的非活跃天数 |
passwd -d +username | 删除用户密码 |
[root@localhost ~]# passwd -e qwer
Expiring password for user qwer.
passwd: Success
[root@localhost ~]# tail -n 1 /etc/shadow
qwer:!!:0:0:99999:7:::
[root@localhost ~]# passwd -n 1 qwer
Adjusting aging data for user qwer.
passwd: Success
[root@localhost ~]# tail -n 1 /etc/shadow
qwer:!!:0:1:99999:7:::
[root@localhost ~]# passwd -x 30 qwer
Adjusting aging data for user qwer.
passwd: Success
[root@localhost ~]# tail -n 1 /etc/shadow
qwer:!!:0:1:30:7:::
[root@localhost ~]# passwd -S qwer
qwer LK 1969-12-31 1 30 7 -1 (Password locked.)
[root@localhost ~]# passwd -w 5 qwer
Adjusting aging data for user qwer.
passwd: Success
[root@localhost ~]# passwd -i 5 qwer
Adjusting aging data for user qwer.
passwd: Success
[root@localhost ~]# passwd -d qwer
Removing password for user qwer.
passwd: Success
注意:
普通用户修改密码时
(1)必须知道用户的原始密码
(2)密码不能和帐号名称相似
(3)密码不能是有序的数字或者有序的纯字母
(4)密码如果是纯数字或者字母的话需要>8
chage | 可以修改密码的所有属性,但是不能修改密码 |
---|---|
-l | 列出该帐号 |
-d | 后接天数,修改密码最后一次被修改时间 |
-E | 后接日期,修改shadow的第八字段(帐号失效日期),格式:YYYY-MM-DD |
-I | 后接天数,修改shadw的第七字段(密码失效日期) |
-m | 后接天数,修改shadow的第四字段(密码最短保留天数) |
-M | 后接天数,修改shadow的第五字段(密码多久需要进行更改) |
-W | 后接天数,修改shadow的第六字段(密码过期的警告日期) |
[root@localhost ~]# chage -l qwer
Last password change : Oct 07, 2019
Password expires : Nov 06, 2019
Password inactive : Nov 11, 2019
Account expires : never
Minimum number of days between password change : 1
Maximum number of days between password change : 30
Number of days of warning before password expires : 5
[root@localhost ~]# chage -d 0 qwer
[root@localhost ~]# chage -E "2019-11-11" qwer
[root@localhost ~]# chage -m 5 qwer
[root@localhost ~]# chage -M 30 qwer
[root@localhost ~]# chage -W 10 qwer
[root@localhost ~]# chage -l qwer
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : Nov 11, 2019
Minimum number of days between password change : 5
Maximum number of days between password change : 30
Number of days of warning before password expires : 10
sudo能把某些超级权限针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su来说,还是比较安全的。
流程:当前用户切换到root,然后以root身份执行命令,执行完毕后,直接退回当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers进行授权。如果用vim来编辑这个文件的话,不提供语法的检测,所以我们使用visudo,提供语法的检测。visudo 100行左右(行业规范)。
[root@localhost ~]# su - qwer
[qwer@localhost ~]$ sudo useradd test
sudo: Account or password is expired, reset your password and try again
New password:
Retype new password:
[qwer@localhost ~]$ id test
uid=1003(test) gid=1003(test) groups=1003(test)
[qwer@localhost ~]$ sudo userdel test