说到Linux的用户系统,不得不让人联想到:
“超人”
没错就是他,Linux中最厉害的用户,没有之一,维护世界和平,维护系统治安可以对全部用户、全部目录、全部文件等等为所欲为的超级用户
,英文名称root
。
1 Linux用户层级以及组的关系
- 超级管理员:用户名root,对Linux系统具有最高级别权限,可以对系统的任何文件和目录进行操作。
- 用户组:具有唯一GID的多个用户的集合。
- 一般用户:Linux的一般使用用户,具有唯一的UID。
2 GID和UID
- Group Id,即组ID,用来标识用户组的唯一标识符
- User Id,即用户ID,用来标识每个用户的唯一标示符
3 组管理
3.1 添加组
(1)命令:
groupadd [组名]
(2)示例:
[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
groupadd:“ymx”组已存在
(3)常见参数:
group -g [组ID] [组名]
[root@iZ1608aqb7ntn9Z ~]# groupadd -g 1111 g1 [root@iZ1608aqb7ntn9Z ~]# cat /etc/group ...... g1:x:1111:
3.2 删除组
(1)命令:
groupdel [组名]
(2)示例:
[root@iZ1608aqb7ntn9Z ~]# groupdel g1
3.3 查看全部用户组
(1)命令:
cat /etc/group 或使用管道符 cat /etc/group | grep [组名]
(2)示例:
[root@iZ1608aqb7ntn9Z ~]# cat /etc/group # 查看全部组
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
libstoragemgmt:x:995:
printadmin:x:994:
unbound:x:993:
ssh_keys:x:992:
setroubleshoot:x:991:
cockpit-ws:x:990:
cockpit-wsinstance:x:989:
sssd:x:988:
sshd:x:74:
chrony:x:987:
slocate:x:21:
rngd:x:986:
tcpdump:x:72:
nscd:x:28:
admin:x:1000:
mysql:x:1001:
docker:x:985:
cgred:x:984:
super:x:1002:
ymx:x:1003:
[root@iZ1608aqb7ntn9Z ~]# cat /etc/group | grep ymx # 根据管道符查看组
ymx:x:1003:
格式说明: [用户组名称]:[密码]:[GID],例如ymx:x:1003: 的组名称为ymx,密码在其他配置文件中,GID为1003
大家根据命令的使用结果可以大致看出来几个规律,Linux系统中有很多系统默认的组,并且他们的GID都在1000以下,我们自己新加的组GID一般都在1000以上
其次是管道符(后边会专门文章讲解),规律是|后边的值是|前边的查询条件
4 用户管理
4.1 添加用户
(1)命令:
useradd [用户名]
(2)示例:
[root@iZ1608aqb7ntn9Z article]# useradd ymx1
(3)常见参数:
useradd -D : 查看系统创建用户时的默认值
[root@iZ1608aqb7ntn9Z article]# useradd -D GROUP=100 # 表示默认的GID为100 HOME=/home # 表示默认用户目录在/home目录下 INACTIVE=-1 # 表示新用户的密码过期后不会被禁用 EXPIRE= # 密码的过期日期 SHELL=/bin/bash # 默认的shell环境 SKEL=/etc/skel # 将/etc/skel目录下的内容复制到用户的HOME目录下 CREATE_MAIL_SPOOL=yes # 在mail目录下创建一个用于接收邮件的文件
useradd [用户名] -g [组名] 或者 useradd -g [组名] [用户名] : 创建用户时指定组
[root@iZ1608aqb7ntn9Z article]# useradd ymx2 -g ymx [root@iZ1608aqb7ntn9Z article]# useradd -g ymx ymx2 useradd:用户“ymx2”已存在
useradd -d [目录名称] [用户名] : 创建用户时指定用户的home目录
[root@iZ1608aqb7ntn9Z article]# useradd -d /home/yyy3 ymx3 [root@iZ1608aqb7ntn9Z article]# cd /home/ [root@iZ1608aqb7ntn9Z home]# ls admin article mysql ymx1 ymx2 yyy3
- useradd [用户名] -u [UID] :为新用户指定UID
useradd [用户名] -e [过期时间] :为新用户指定过期时间
[root@iZ1608aqb7ntn9Z home]# useradd ymx5 -e 2021-09-01 [root@iZ1608aqb7ntn9Z home]# ls admin article mysql ymx1 ymx4 ymx5 yyy3
passwd : 为用户设置密码
[root@iZ1608aqb7ntn9Z home]# useradd ymx4 [root@iZ1608aqb7ntn9Z home]# passwd ymx4 更改用户 ymx4 的密码 。 新的 密码: # 输入密码时是隐藏的(安全) 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@iZ1608aqb7ntn9Z home]#
4.2 删除用户
(1)命令:
userdel [用户名]
(2)示例:
[root@iZ1608aqb7ntn9Z home]# ls
admin article mysql ymx1 ymx2 ymx4 yyy3
[root@iZ1608aqb7ntn9Z home]# userdel ymx3
[root@iZ1608aqb7ntn9Z home]# ls
admin article mysql ymx1 ymx2 ymx4 yyy3
(3)常见参数:
userdel -r [用户名]: 删除user的信息和所有的目录
[root@iZ1608aqb7ntn9Z home]# ls admin article mysql ymx1 ymx2 ymx4 yyy3 [root@iZ1608aqb7ntn9Z home]# userdel -r ymx2 [root@iZ1608aqb7ntn9Z home]# ls admin article mysql ymx1 ymx4 yyy3
4.3 查看全部用户
(1)命令:
四种方式:
- getent passwd
- cat /etc/shadow
- cat /etc/passwd
- compgen -u
(2)示例:
[root@iZ1608aqb7ntn9Z home]# getent passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# cat /etc/shadow
......
admin:!!:18704:0:99999:7:::
mysql:!!:18704:0:99999:7:::
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:
[root@iZ1608aqb7ntn9Z home]# cat /etc/passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# compgen -u
......
admin
mysql
ymx1
ymx4
ymx5
4.4 切换用户
(1)命令:
su [用户名] 切换到root 直接使用 su
(2)示例:
[root@iZ1608aqb7ntn9Z home]# su ymx1
[ymx1@iZ1608aqb7ntn9Z home]$ who
root pts/0 2021-08-23 10:03 (222.128.60.244)
root pts/1 2021-08-23 10:03 (222.128.60.244
[ymx1@iZ1608aqb7ntn9Z home]$ su
密码:
[root@iZ1608aqb7ntn9Z home]#
注意:区分是root用户还是其他用户,可以用 # 和 $ 来区分,例如[root@iZ1608aqb7ntn9Z home]#代表root用户下的终端,[ymx1@iZ1608aqb7ntn9Z home]$ 则代表普通模式下的终端
(3)常见参数:
su -l [用户名] : 表示重新登录该用户
[root@iZ1608aqb7ntn9Z home]# su -l ymx1 上一次登录:一 8月 23 10:43:12 CST 2021pts/0 上
5 两个重要的配置文件
5.1 /etc/shadow
(1)先看下内容:
[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/shadow
......
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:
(2)作用:
用于存储 Linux 系统中用户的密码信息,又称为“影子文件”
(3)每一行的含义:
- 第一字段:用户名
- 第二字段:密码
- 第三字段:上次修改口令的时间戳
- 第四字段:两次修改口令间隔最少的天数;如果这个字段的值为空,帐号永久可用;
- 第五字段:两次修改口令间隔最多的天数;如果这个字段的值为空,帐号永久可用;
- 第六字段:提前多少天警告用户口令将过期;如果这个字段的值为空,帐号永久可用;
- 第七字段:在口令过期之后多少天禁用此用户;如果这个字段的值为空,帐号永久可用;
- 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
- 第九字段:保留字段,目前为空,以备将来发展之用;
5.2 /etc/password
先看下内容:
[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/passwd
......
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
(2)作用:
用于存储 Linux 系统中用户信息
(3)每一行的含义:
- 第一段:用户名
- 第二段:用户密码,x表示放在 /etc/shadow 中去了
- 第三段:UID,0代表了root
- 第四段:GID
- 第五段:用户的描述介绍,可使用usermod -c 修改
- 第六段:用户的家目录,在创建用户时自动生成在/home/用户名中,可以自定义这个目录。
- 第七段:用户登陆的时候需要启动一个进程