用户管理 *
useradd 命令添加用户,会在/etc/passwd生成用户信息,信息分为7列,被6个冒号隔开
第一列 username (login name)
第二列 密码,但是该列已经被移除,用x表示,密码信息已经存放在了/etc/shadow文件
第三列 用户的UID (user ID),和身份证号差不多,绝对不能重复
第四列 用户所属组的ID
第五列 描述信息,邮箱,电话等
第六列 用户的家目录信息
第七列 用户的登录shell
用户增删改查
1、 创建用户 useradd
$ useradd user1 -u 5000 -d /user1 -s /bin/sh
# 常用参数
-d 新账户的主目录
-s 新账户的登录 shell
-u 新账户的用户 ID
-g 新账户主组的名称或 ID
-G 新账户的附加组列表
2、修改用户 usermod
$ usermod user1 -u 5001 -d /home/user1 -s /bin/bash
3、 查看user(/etec/passwd)
$ id user1
4、删除用户 userdel
# 使用userdel命令实际就是删除文件/etc/passwd、/etc/shadow以及/etc/group中对应的信息,userdel默认不会删除用户家目录和邮箱文件(/var/spool/mail/目录下)
$ userdel user1
$ userdel -r userdel # 彻底删除用户
rhce 考题:
用户组管理 *
用户组分为 primary group(主要组),private group(私有组),attached group(附加组),由于任何用户都必须依赖于用户组才能存在,所以创建用户没有指定用户组(primary group)时,系统会为该用户创建个一同名的组,这个组叫做该用户的private group(私有组),私有组的意义就在于让用户属于一个用户组
文件/etc/group存放户组的信息
$ cat /etc/group
dockerroot:x:993:
influxdb:x:992:
每个冒号分割了个内容:
第一列表示组名
第二列表示组密码,x表示密码存放在/etc/gshadows⽂件⾥
第三列表示组ID
第四列表示"组成员"
用户组增删改查
①⽤户组的添加
$ groupadd group1
②⽤户组的删除
$ groupdel group1
③⽤户组的查看
$ grep group1 /etc/group
group1:x:1001:
⑤用户组的修改
$ groupmod group1 -g 1002
$ grep group1 /etc/group
group1:x:1002:
用户与用户组关联
/etc/passwd 的第四列GID表示该用户属于的primary group(主要组),一个用户只可以属于一个primarygroup,但是可以同时属于多个attached group
# 创建用户指定 primary group 和 attached group
$ useradd user1 -g group1 -G group2
$ id user1
uid=1001(user1) gid=1002(group1) groups=1002(group1),1003(group2)
# 修改用户 attached group
$ usermod user1 -G group3
$ id user1
uid=1001(user1) gid=1002(group1) groups=1002(group1),1004(group3)
# 添加用户 attached group
$ usermod user1 -aG group2
$ id user1
uid=1001(user1) gid=1002(group1) groups=1002(group1),1003(group2),1004(group3)
用户密码管理passwd/chage *
/etc/shadow存放的是密码信息,每列密码信息都被冒号分割开来
# cat /etc/shadow
user2:$6$90Q11.N4g4t5X07I4hqp/:19485:0:99999:7:::user1:!!:19487:0:99999:7:::
第1列 username
第2列 密码(非明文)
第3列 上次修改密码的时间
第4列 密码最小有效期(0 -> 无限次修改 1 -> 使用1天后才能修改)
第5列 密码的最大有效期(默认是99999,表示密码99999天就会失效)
第6列 密码到期前提前多少天提示
第7列 密码到期后宽限日期
第8列 表示账号失效日期
第9列 保留
passwd 命令 (-d、-e、-l、-u )
# 修改用户密码(root可以修改其他普通用户密码,普通用户只能修改自己的密码)
$ passwd user1
$ grep user1 /etc/shadow
user1:$3Gan/Lmj9yT7.wfbyWHHUsDYbljfN91:19487:0:99999:7:::
# -d 删除用户密码
$ passwd -d user1
$ grep user1 /etc/shadow
user1::19487:0:99999:7:::
# -e 设置密码过期,表示该⽤户下次登录必须修改密码
$ passwd -e user1
# -l 锁定用户密码,当账号被锁定了,除了root之外,任何其它⽤户不能切换到被锁定的账号
# -u 解锁
$ passwd -l user1
$ passwd -u user1
# 非交付式修改用户密码方式
$ echo 123 | passwd --stdin user1
chage 命令
常用参数:
-d 设置最近一次密码
-E 帐户过期时间
-I 过期I天数后,设定密码为失效状态
-m 两次改变密码之间相距的最小天数
-M 两次改变密码之间相距的最大天数
-W 密码过期提前通知天数
$ chage -d 1300 -m 2 -M 20 -W 10 -I 4 -E 2023-5-20 user1
用户组密码管理
对于任何一个用户来说,创建的文件,默认的拥有者就是该用户,默认的所属组是该用户的primary group,newgrp groupname,能让用户临时的切换到另外一个组,那么切换成功之后,该用户创建的文件就都属于切换后的组:
$ id
uid=1001(user1) gid=1002(group1) groups=1002(group1),1003(group2)
$ touch a.txt
$ newgrp group2
$ touch b.txt
$ ls -l
-rw-r--r-- 1 user1 group1 0 May 11 00:59 a.txt
-rw-r--r-- 1 user1 group2 0 May 11 00:59 b.txt
gpasswd groupname 创建用户组密码,组密码的作用是让那些不属于该组的用户,可以切换到该组的一种方式,只要提供正确的组密码,即可切换成功
$ gpasswd group2
id
uid=5011(user2) gid=5011(user2) groups=5011(user2)
$ touch 1.txt
$ newgrp group2
Password:
$ touch 2.txt
$ ls -l
-rw-rw-r-- 1 user2 user2 0 May 11 01:07 1.txt
-rw-r--r-- 1 user2 group2 0 May 11 01:07 2.txt