用户与组管理
1 何为用户何为组?
1.1 用户和组概念
Authentication:认证
Authorization:授权
Accouting:审计
1.2 用户分类
Linux用户分为管理员和普通用户两种:
用户类别 | 用户ID |
---|---|
管理员 | 0 |
普通用户 | 1-65535 |
其中普通用户又分为系统用户和登录用户两种: | |
用户类别 | 用户ID |
- | - |
系统用户 | 1-999(为守护类进程获取系统资源而完成权限指派的用户 |
登录用户 | 1000-60000(为了完成交互式登录使用的用户) |
1.3 Linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行
root:cat
tom:cat
进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux通过安全上下文的概念完成用户权限的指派。
先判断用户是否是某文件的属主
再判断用户是否属于某个组
最后定其为其他用户
1.4 Linux用户组类别
用户组类别 | 特性 |
---|---|
私有组 | 创建用户时,如果没有为其指定所属的 组系统会自动为其创建一个与用户名相同的组 |
基本组 | 用户的默认组 |
附加组(额外组) | 默认组以外的其它组 |
1 Linux用户和组相关的配置文件
各配置文件说明 | |
---|---|
配置文件 | 作用 |
/etc/passwd | 用户及其属性信息(名称、uid、基本组id等等) |
/etc/group | 组及其属性信息 |
/etc/shadow | 用户密码及其相关属性 |
/etc/gshadow | 组密码及其相关属性。在用户执行基本组切换时使用 |
|配置文件|/etc/passwd|/etc/group|
|-|-|
|第一字段|用户名|组名|
|第二字段|密码占位符|组密码|
|第三字段|UID|GID|
|第四字段|GID|以当前组为附
加组的用户列表(分隔符为逗号)|
|第五字段|用户的描述信息||
|第六字段|用户家目录||
|第七字段|用户的登录shell||
配置文件 | /etc/shadow |
---|---|
第一字段 | 登录名 |
第二字段 | 加密后的密码 |
第三字段 | 最近一次更改密码的日期 |
第四字段 | 密码的最小使用期限 |
第五字段 | 密码的最大使用期限 |
第六字段 | 密码警告时间段 |
第七字段 | 密码禁用期 |
第八字段 | 帐号的过期日期 |
第九字段 | 保留字段 |
2 密码复杂性
密码复杂性策略:
使用数字、大写字母、小写字母及特殊字符中至少3种
足够长
使用随机密码,不要使用有意义的单词或数字
定期更换,不要使用最近曾经使用过的密码
3用户和组相关的管理命令
3.1 用户管理
3.1.1 用户创建命令useradd
-u //语法 useradd [参数] username[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
[root@YL ~]# useradd -u 1000 liu
-g //指定用户所属基本组,可为组名或GID
[root@YL ~]# groupadd ly -g 1001
-G 附加组,可以有多个,用逗号隔开。组groupname必须事先存在
[root@YL ~]# id ll
uid=1001(ll) gid=1002(ll) groups=1002(ll),0(root)
-c 注释信息 passwd中的第五个字段
[root@YL ~]# useradd -G root i -c //root/-i
[root@YL ~]# vim /etc/passwd
[root@YL ~]# tail -1 /etc/passwd
i:x:1002:1003://root/-i:/home/i:/bin/bash
-d 指定用户的家目录。此目录必须不能事先存在
[root@YL ~]# useradd m -d /opt/ly
[root@YL ~]# cd /opt/ly/
[root@YL ly]# pwd
/opt/ly
-s 这里的shell最好使用/etc/shells里面有的shell
[root@YL ~]# useradd y -s /bin/bash
-M 创建用户时不给其创建家目录
[root@YL ~]# useradd -rMs /sbin/nologin abc
-r 添加一个系统用户
[root@YL ~]# useradd -rMs /sbin/nologin abc
3.2 用户删除命令userdel
-r 删除用户的同时删除其家目录(userdel默认不会删除其家目录)
[root@YL ~]# userdel -r i
3.3 查看用户账号的命令id
[root@YL ~]# id ly
uid=1002(ly) gid=1009(ly) groups=1009(ly)
3.4 修改用户帐号属性的命令
-u 查看UID
[root@YL ~]# usermod -u 1003 -g 1010 ly
-g 查看GID
[root@YL ~]# usermod -u 1003 -g 1010 ly
-a - G 不使用-a选项,会覆盖此前的附加组
[root@YL ~]# usermod -a -G m ly
-d -m 改变用户家目录的同时把原来家目录的文件移动到新的家目录中
[root@YL ~]# usermod -md /procc ly
-e 指明用户帐号过期日期
[root@YL ~]# usermod -e 2222-10-29 ly
-f 设定非活动期限
[root@YL ~]# usermod -f 4 ly
-L 锁定帐号
[root@YL ~]# usermod -L ly
[root@YL ~]# usermod -U ly
-U 解锁帐号
[root@YL ~]# usermod -L ly
[root@YL ~]# usermod -U ly
-s SHELL
[root@YL ~]# usermod -s /sbin/bash ly
[root@YL ~]#
4 切换用户命令
切换用户的方式 | 特点 |
---|---|
su USERNAME | 非登录式切换,即不会读取目标用户的配置文件 |
su - USERNAME | 登录式切换,即会读取目标用户的配置文件。完全切换 |
su - | 不指定用户时默认切换至root用户 |
su username |
[root@YL ~]# su ly
[root@YL ~]# su - ll
[ll@YL ~]$ su -
Password:
Last login: Wed Jul 6 08:45:43 CST 2022 on pts/0
Last failed login: Wed Jul 6 08:46:08 CST 2022 on pts/0
There was 1 failed login attempt since the last successful login.
[root@YL ~]#
5 密码管理
5.1 密码管理命令passwd
--stdin 从标准输入获取用户密码
[root@YL ~]# echo "123" | passwd --stdin ly
Changing password for user ly.
passwd: all authentication tokens updated successfully.
-l 锁定用户
[root@YL ~]# passwd -l ly
Locking password for user ly.
```
-u 解锁用户
```
[root@YL ~]# passwd -u ly
Unlocking password for user ly.
passwd: Success
```
-d 删除用户密码
```
[root@YL ~]# passwd -d ly
Removing password for user ly.
```
-n 指定最短使用期限
-x 指定最长使用期限
-w 提前多少天开始警告
-i 非活动期限,密码过期后到禁用前的这段时间
```
[root@YL home]# passwd -n 2 -x 3 -w 3 -i 6 ll
Adjusting aging data for user ll.
passwd: Success
```
#### 5.2 密码生成工具openssl
提取特征码
```
[root@YL ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= fce56e0a835b38d9f3d1958468f3eb58
```
生成密码 openssl passwd -1 -salt string
```
[root@YL ~]# openssl passwd -1 -salt string
Password:
$1$string$4DLezUyHOgnRT3KAmUf7i0
## 6 组管理
```
生成随机数 openssl rand -base64 NUM
num表示随机数的长度
```
[root@YL ~]# openssl rand -base64 6
Z/tu26Sy
```
#### 6.1 创建命令groupadd
```
[root@YL ~]# groupadd -g 1002 liu
[root@YL ~]# groupadd -r y
```
#### 6.2 删除组命令groupdel
```
[root@YL ~]# groupdel y
[root@YL ~]# groupdel liu
```