Linux用户和组

1 用户

1.1 用户分类

1
2
3
4
5
6
7
8
超级用户 --- root --- UID=0

普通用户 --- UID=1000-60000
- 可以登录到系统,权限比管理低,只能对自己目录下的文件进行访问和修改
- 受限于配置文件 --- login.defs

系统用户/伪用户 --- UID=1-999
- 不能登录系统,与系统和程序服务相关

1.2 用户信息文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/etc/passwd --- 任何人都能够查看 --- 不安全
demo:x:1000:1000:demo:/home/demo:/bin/bash
1 2 3 4 5 6 7

1.用户名
2.废弃的密码位 --- /etc/shadow
3.UID --- 用户标识号
4.GID --- 组标识号
- 先有组?先有用户? --- 先有组
5.备注
6.家目录
7.命令解释器 --- 默认是/bin/bash
/sbin/nologin --- 无法登录


+ 存在安全隐患?
- 相同UID用户需要注意

1.3 用户密码信息文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/etc/shadow --- 密码相关的信息 --- 只有root用户才能查看

demo:$6$UpnHW79goTN.....: :0:99999:7: : :
1 2 3 4 5 6 7 8 9

1.用户名
2.加密的密码位。
- $6 sha512 $5 sha256 $1 md5
- !!或者* --- 该用户无法使用并且没有配置密码
- !$6$UpnHW79goTN..... 或者 !!$6$UpnHW79goTN..... --- 该用户已禁用
3.最后一次修改时间。 --- 时间天数 1970.1.1开始计算
4.最小修改密码时间间隔。 --- 0 随时都可以修改
5.密码有效期
6.密码需要变更前的警告天数
7.密码过期后的宽限天数
8.账户失效时间
9.保留位

+ 存在安全隐患?
- 存在密码位为空的用户需要注意

1.4 用户命令操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
useradd
useradd [参数] [用户名]
选项:
-u(UID):手工指定用户ID
-d [家目录]:手工指定用户的家目录
-M:不创建家目录
-c [用户说明]:手工指定的用户说明(用户备注信息)
-g [组名]:手工指定用户的初始组
-G [组名]:指定用户的附属组
-s(shell):手工指定用户的登录shell。默认是/bin/bash

userdel
userdel [-r] 用户名
-r 删除用户的同时删除用户家目录



passwd
passwd [选项] [用户名]
选项:
-S:查询用户密码的密码状态,仅root用户可用
-l:暂时锁定用户,仅root用户可用
- !!
-u:解锁用户,仅root用户可用

usermod
usermod [选项] [用户名]
选项:
-u(UID)修改用户的UID号
-c(用户说明)修改用户的说明信息
-G(组名)修改用户的附属组
-L(Lock)临时锁定用户
- !
-U(Unlock)解锁用户锁定

chage
chage [选项] [用户名]
选项:
-d (日期) 修改密码最后一次更改日期(shadow[3]字段)
-m (天数) 两次密码修改间隔(shadow[4]字段)
-M (天数) 密码有效期(shadow[5]字段)
-W (天数) 密码过期前的警告天数(shadow[6]字段)
-I (天数) 密码过期后宽限天数(shadow[7]字段)
-E (日期) 账号失效时间(shadow[8]字段)
 
id
id [用户名]

su
su [选项] [用户名]
选项:
-c 仅执行一次命令,而不切换用户身份
- 只使用 ‘ - ’ 代表连用户的环境变量一起切换 --- 1.家目录会变成该用户的家目录;2. echo $PATH 环境变量也随着变化


sudo 命令 --- 通过管理员的权限来执行
- 如何让普通用户能够使用sudo命令
vim /etc/sudoers
root ALL=(ALL) ALL
demo ALL=(ALL) ALL
保存退出

2 用户组

2.1 用户组分类

1
2
3
4
5
管理员组:root GID=0
普通组:GID=1-60000
系统组(1-999)和登录组(1000-60000)

- 注意点!!! --- 每个用户都必须要有 主组 ,但是附属组可有可无

2.2 用户组信息文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/etc/group  --- 用户组文件
demo:x:1000:demo
1 2 3 4

1.组名
2.废弃密码位
3.组标识号
4.组内用户

- wheel组 --- 管理员组
+ 只要用户加入到该组,就具有sudo的使用权
- 两个已被封禁的权限
+ 1.无需密码使用su切换管理员 | 2.无需密码使用sudo命令


+ 安全风险
- 需要关注wheel组是否存在用户
- 是否存在与wheel组GID一致的用户组

2.3 用户组密码信息文件

1
2
3
4
5
6
7
8
9
10
+ 了解
/etc/gshadow

demo:!!: :demo
1 2 3 4

1.组名
2.加密的密码位
3.组管理员
4.组中的附加用户

2.4 用户组命令操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
groupadd是添加用户组的命令
用法:groupadd [选项] 组
选项:
-f, --force 如果组已经存在则成功退出并且如果 GID 已经存在则取消
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
- groupadd os66 -g 10 -o 创建OS66组并设置GID为10


groupmod(选项)(参数)
选项
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
- groupmod os61 -g 10 -o 修改OS61组的GID值为10


groupdel 命令用于删除群组。
1.语法:
groupdel [群组名称]
2.功能:需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
3.常用范例:
例一:删除一个群组
命令:groupdel lty

gpasswd命令用于管理/etc/group和/etc/gshadow。每个组都可以有管理员、成员和密码。
设置组密码:gpasswd 组名
Changing the password for group 组名
New Password:
Re-enter new password:
选项详解:
-a : 添加用户到组 //gpasswd -a userA groupB
-d : 从组删除用户
-A:指定管理员 //gpasswd -A userA groupA
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。