1. 用户&用户组
Linux 是多用户多任务操作系统,Linux 系统支持多个用户在同一时间内登录,不同用户可以在权限允许范围内执行不同的任务,并且互不影响。
用户和用户组的对应关系:
- 一对一:一个用户可以存在一个用户组中,是组中唯一的成员
- 一对多:一个用户可以存在多个用户组中,此用户具有这个组的共同权限
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
- 多对多:多个用户可以存在多个组中
2. 用户管理
Linux 常用的用户管理命令:useradd
,usermod
,userdel
,passwd
命令 | 描述 |
---|---|
useradd | 创建用户 |
usermod | 修改用户 |
userdel | 删除用户 |
passwd | 修改用户密码 |
2.1 useradd
语法格式:useradd [选项] 用户名
功能描述:新建用户,自建的用户UID自1000开始自增
选项参数:
选项 | 描述 |
---|---|
-u UID | 指定用户的 UID |
-d 主目录 | 指定用户的主目录(绝对路径) |
-c 用户说明 | 指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置 |
-g 组名 | 指定用户的初始组 |
-G 组名 | 指定用户的附加组 |
-s shell | 指定用户的登录 Shell,默认是 /bin/bash |
-e 曰期 | 指定用户的失效曰期,格式为 “YYYY-MM-DD”(同等与 /etc/shadow 文件的第八个字段) |
-o | 允许创建的用户的 UID 相同 |
-m | 建立用户时强制建立用户的家目录(默认选项) |
-r | 创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户 |
🌟 默认配置:使用 useradd -D
可以查看新建用户的默认值
[root@joel ~]# useradd -D
# 新建用户的默认组
GROUP=100
# 用户主目录的默认位置
HOME=/home
# 设置密码过期后的宽限天数,-1为永久有效
INACTIVE=-1
# 设置密码的失效时间,空表示永久有效
EXPIRE=
# 设置新建用户默认Shell都是/bin/bash
SHELL=/bin/bash
# 设置新建用户后,在用户主目录需要拷入的配置文件
SKEL=/etc/skel
# 设置给新用户建立邮箱文件,邮箱位于/var/spool/mail/
CREATE_MAIL_SPOOL=yes
🌟 扩展命令:useradd -D [选项] 参数
(修改配置文件)
- -b HOME:设置创建用户的主目录位置(绝对路径),例如
useradd -D -b /home
- -e EXPIRE:设置密码失效时间,格式为 yyyy-MM-dd,例如
useradd -D -e 2021-11-12
- -f INACTIVE:设置密码过期的宽限天数,例如
useradd -D -f 7
- -g GROUP:设置新用户所在初始组
- -s SHELL:设置新用户的默认shell
案例演示:
新建一个用户JOEL时:
- 会在
/etc/passwd
文件中创建一行与 JOEL 用户相关的数据- 会在
/etc/shadow
文件中创建一条与 JOEL 用户相关的密码信息- 会在
/etc/group
文件中创建一条与 JOEL 同名的用户组- 会在
/etc/gshadow
文件中创建一条与 新用户组相关的密码信息- 会在
/var/spod/mail/
路径下与 JOEL 同名的邮箱- 会将
/etc/skel
目录中的配置文件复制到 JOEL 用户的主目录中/home/JOEL
[root@joel ~]# useradd JOEL
[root@joel ~]# grep "JOEL" /etc/passwd /etc/shadow /etc/group /etc/gshadow
# 1001代表UID,1002代表GID,/home/JOEL代表用户主目录,/bin/bash代表用户的登录Shell
/etc/passwd:JOEL:x:1001:1002::/home/JOEL:/bin/bash
# 没设密码,所以是!!,99999代表密码有效天数,7代表密码过期后的宽限天数
/etc/shadow:JOEL:!!:18943:0:99999:7:::
/etc/group:JOEL:x:1002:
/etc/gshadow:JOEL:!::
2.2 usermod
语法格式:usermod [选项] 用户名
功能描述:新建用户,自建的用户UID自1000开始自增
选项参数:
选项 | 描述 |
---|---|
-c | 修改用户的说明信息 |
-d | 修改用户的主目录 |
-e | 修改用户的失效日期 |
-g | 修改用户的初始组 |
-u | 修改用户的UID |
-G | 修改用户的附加组 |
-I | 修改用户的名称 |
-L | 临时锁定(Lock)用户 |
-U | 解锁(Unlock)用户 |
-s | 修改用户的登录 Shell |
案例演示:
# 将JOEL添加到admin用户组中
[root@joel ~]# usermode -G amdin JOEL
[root@joel ~]# grep "JOEL" /etc/passwd
JOEL:x:1001:1002::/home/JOEL:/bin/bash
[root@joel ~]# grep "admin" /etc/group
admin:x:1000:JOEL
2.3 userdel
语法格式:userdel [选项] 用户名
功能描述:删除用户
选项参数:
选项 | 描述 |
---|---|
-r | 在删除用户时删除用户的主目录 |
案例演示:
[root@joel ~]# userdel -r JOEL
2.4 passwd
语法格式:passwd [选项] 用户名
功能描述:设置用户密码
选项参数:
选项 | 描述 |
---|---|
-S | 查询用户密码状态, /etc/shadow 文件中此用户密码的内容 |
-l | 暂时锁定用户,在 /etc/shadow 文件中指定用户的加密密码串前添加 “!” |
-u | 解锁用户 |
–stdin | 将通过管道符输出的数据作为用户的密码 |
-n | 设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段 |
-x | 设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段 |
-w | 设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段 |
-i | 设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段 |
案例演示:
[root@joel ~]# passwd admin
Changing password for user admin.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
Sorry, passwords do not match.
[root@joel ~]# passwd -S admin
# 用户名、密码、设定时间、警告时间、密码有效期、密码宽限时间、密码不失效
admin LK 2021-11-06 0 99999 7 -1 (Password locked.)
3. 用户组管理
Linux 常用的用户组管理命令:groupadd
,groupmod
,groupdel
,gpasswd
3.1 groupadd
语法格式:groupadd [选项] 用户组名
功能描述:添加用户组
选项参数:
选项 | 描述 |
---|---|
-g | 指定GID |
-r | 创建系统群组 |
案例演示:
[root@joel ~]# groupadd -g 1003 groupdemo
[root@joel ~]# grep "groupdemo" /etc/group
groupdemo:x:1003:
3.2 groupmod
语法格式:groupmod [选项] 用户组名
功能描述:修改用户组
选项参数:
选项 | 描述 |
---|---|
-g | 修改GID |
-n | 修改用户组名 |
案例演示:
[root@joel ~]# groupmod -n grouptest groupdemo
[root@joel ~]# grep "grouptest" /etc/group
grouptest:x:1003:
3.3 groupdel
语法格式:groupdel 用户组名
功能描述:删除用户组
案例演示:
[root@joel ~]# groupdel grouptest
[root@joel ~]# grep "grouptest" /etc/group
3.4 gpasswd
语法格式:gpasswd [选项] 用户组名
功能描述:用户组配置,配置一个组管理员,代替root完成组内用户管理
选项参数:
选项 | 描述 |
---|---|
选项为空时,表示给群组设置密码,仅 root 用户可用 | |
-A user1,… | 将群组的控制权交给 user1,… 等用户管理,也就是说,设置 user1,… 等用户为群组的管理员,仅 root 用户可用 |
-M user1,… | 将 user1,… 加入到此群组中,仅 root 用户可用 |
-r | 移除群组的密码,仅 root 用户可用 |
-R | 让群组的密码失效,仅 root 用户可用 |
-a user | 将 user 用户加入到群组中 |
-d user | 将 user 用户从群组中移除 |
案例演示:
[root@joel ~]# groupadd groupdemo
# 设置密码
[root@joel ~]# gpasswd groupdemo
Changing the password for group groupdemo
New Password:
Re-enter new password:
[root@joel ~]# useradd groupdemouser1
# 将groupdemouser1设为groupdemo的管理员
[root@joel ~]# gpasswd -A groupdemouser1 groupdemo
[root@joel ~]# grep "groupdemouser1" /etc/group /etc/gshadow
/etc/group:groupdemouser1:x:1003:
/etc/gshadow:groupdemo:$6$aiKcsEFQv$WA28tABqOdTnjz67I91CyZiME0okjes2V/mzyZj/e7FtbbLLvJrD4gPinJu8C.sa8.mmX9xUnPbdJC7XVQe7t/:groupdemouser1:
/etc/gshadow:groupdemouser1:!::
[root@joel ~]# useradd groupdemouser2
[root@joel ~]# su groupdemouser1
[groupdemouser1@joel root]$ gpasswd -a groupdemouser2 groupdemo
Adding user groupdemouser2 to group groupdemo
[groupdemouser1@joel root]$ grep "groupdemouser2" /etc/group
groupdemo:x:1002:groupdemouser2
groupdemouser2:x:1004: