一、介绍
1. 用户说明
在系统管理员的工作中,很重要的一环就是管理用户账号,任何一个要使用系统资源的用户,都必须向管理员申请用户账号,然后以这个账号身份进入系统。所以必须清楚如何管理好系统用户账号。
2. 概念说明
**UID(User IDentification):**每个用户都有一个对应的UID,UID在系统中是唯一的
GID(Group IDentification):每个用户在创建时都会为这个用户创建一个默认组(主组),组会对应一个GID,用户必须属于一个且只有一个主组。主组以外的组属于用户的附加组。
注意:一个用户只有一个主组,但可以属于0或者多个附加组
3. 相关配置文件
/etc/passwd # 存储用户关键信息 /etc/shadow # 存储用户密码信息 /etc/group # 存储用户组关键信息
二、用户管理
1. 创建用户
命令 | 说明 |
---|---|
useradd 【选项】 用户名 | 创建用户 |
useradd命令选项:
选项 | 说明 |
---|---|
-d | 指定某个目录成为家目录(务必使用绝对路径)。默认会创建一个和用户名相同的家目录 |
-g | 后面接组名,指定用户所属的用户组,默认不指定会自动创建一个和用户名同名的用户组 |
-u | 后面接UID。指定一个特定的UID给这个账号 |
-M | 强制不创建用户家目录 |
-c | 添加用户注释 |
示例:
示例一:默认值建立一个用户 [root@itcast ~]# useradd hello1 [root@itcast ~]# ll -d /home/hello1/ drwx------. 3 hello1 hello1 74 3月 12 17:34 /home/hello1/ # 默认会建立用户家目录 查看创建效果: [root@itcast ~]# grep hello1 /etc/passwd /etc/passwd:hello1:x:1001:1001::/home/hello1:/bin/bash 示例二:指定UID创建用户,UID必须是系统中不存在的 [root@itcast ~]# useradd -u 1100 hello2 [root@itcast ~]# grep hello2 /etc/passwd hello2:x:1100:1100::/home/hello2:/bin/bash
认识/etc/passwd文件:
与用户账号相关的文件
[root@itcast ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...省略... itcast:x:1000:1000:itcast:/home/itcast:/bin/bash hello1:x:1001:1001::/home/hello1:/bin/bash hello2:x:1100:1100::/home/hello2:/bin/bash #用户名:密码:UID:GID:注释:家目录:解释器
查看用户UID和对应组的GID:
[root@itcast ~]# id hello1 uid=1001(hello1) gid=1001(hello1) 组=1001(hello1)
2. 设置密码
linux不允许没有密码的用户登录到系统,因此前面创建的用户目前处于锁定状态,需要设置密码才能登录系统
命令 | 说明 |
---|---|
passwd 【用户名】 | 设置密码或修改密码,不指定用户名表示修改当前用户密码 |
示例:
# 设置hello1的密码 [root@itcast ~]# passwd hello1 更改用户 hello1 的密码 。 新的 密码: 无效的密码: 密码少于 8 个字符 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 #说明:在设置密码时,没有任何输入提示,确保两次输入密码一致,按下回车即可。
**认识/etc/shadow文件:**与用户密码相关的文件
[root@itcast ~]# cat /etc/shadow root:$6$3NGfAb6CfFX2kGp7$Nlr8CjkaaX/6Ipv941vtzMqjy/wvqhGEYZ7ijH04fL92561qBzBP6Q64dZiKlQyPdufA8mvL68mKm472MMOEl0:17957:0:99999:7::: bin:*:16231:0:99999:7::: ...省略... itcast:$6$zXmpvSEl5crBcOUS$1TkFprm592Hgh65MGbc99VtYLjSn1tXXDH6owE3KhCRte2OKkx5TpEfXexxvveOkApUG7faAWARI2byqSErUa0:17957:0:99999:7::: hello1:$6$8qS2vBwO$WfyvthDD7mkTASVIbrrOK4y7bYoileSCI6.fgJ.rqlCvqPh50/nOZcoJfYS08ZyVf8nuaCfgF60VxLpOOI0XZ.:17967:0:99999:7::: hello2:$6$tZVAwr.v$jiDW7iMPCOeKiQkf4aOAelpjJF/a5ZLiERPOmpQLbPSIC2PmfjkRh2Yv153QCn79J1RM.47RcDhuWjTwahaOe0:17967:0:99999:7::: hello3:!!:17967:0:99999:7::: # 说明:hello1、hello2设置了密码,hello3没有设置密码
3. 修改用户信息
命令 | 说明 |
---|---|
usermod [选项] 用户名 | 修改用户信息 |
usermod选项说明:
选项 | 说明 |
---|---|
-g | 修改用户对应的用户组,选项值可以是GID,也可以是组名 |
-G | 修改用户对应的附加组 |
-u | 修改用户的UID |
-l(小写) | 修改用户名 |
-c | 修改用户注释 |
-d | 修改用户家目录 |
-s | 修改用户登录使用的shell |
示例:
示例一:修改hello1用户组为1000 [root@itcast ~]# id hello1 uid=1001(hello1) gid=1001(hello1) 组=1001(hello1) [root@itcast ~]# usermod -g 1000 hello1 [root@itcast ~]# id hello1 uid=1001(hello1) gid=1000(itcast) 组=1000(itcast) 示例二:修改hello1用户名为helloworld1 [root@itcast ~]# usermod -l helloworld1 hello1 [root@itcast ~]# grep helloworld1 /etc/passwd helloworld1:x:1001:1000::/home/hello1:/bin/bash
4. 删除用户
命令 | 说明 |
---|---|
userdel 【选项】 用户名 | 删除用户 |
userdel选项:
选项 | 说明 |
---|---|
-r | 删除用户的同时删除其家目录 |
示例:
[root@itcast ~]# userdel -r hello3 [root@itcast ~]# id hello3 id: hello3: no such us
注意:已经登录的用户删除的时候回提示删除失败,解决办法
[root@itcast home]# userdel -r hello2 userdel: user hello2 is currently used by process 113380 #解决办法1:强制杀死对应用户的进程 [root@itcast home]# ps -ef | grep hello2 root 113379 113334 0 19:38 pts/1 00:00:00 su hello2 hello2 113380 113379 0 19:38 pts/1 00:00:00 bash root 113472 113411 0 19:42 pts/1 00:00:00 grep --color=auto hello2 [root@itcast ~]# kill -9 113380 [root@itcast ~]# 已杀死 (core dumped) [root@itcast ~]# userdel -r hello2 [root@itcast ~]# id hello2 id: hello2: no such user #解决办法2: 在登录需要删除的⽤户之后,按下快捷键“ctrl+d”进行对当前⽤户的注销,随后退 回到上一个用户(root)此时就可以对需要删除的⽤户进行删除操作。
三、组管理
每个用户都有一个用户组(主组).
用户组的管理涉及组的添加、删除和修改
1. 用户组添加
命令 | 说明 |
---|---|
groupadd 【选项】 组名 | 创建组 |
groupadd选项说明:
选项 | 说明 |
---|---|
-g | 设置GID。不写会设置默认GID |
示例:
[root@itcast ~]# groupadd admins [root@itcast ~]# tail -1 /etc/group admins:x:1003:
2. 用户组修改
命令 | 说明 |
---|---|
groupmod 【选项】 组名 | 修改组信息 |
groupmod选项说明:
选项 | 说明 |
---|---|
-g | 设置自定义一个的GID |
-n | 设置新的组名称 |
示例:
# 修改admins用户组。将UID改为520,将名称改为admin [root@itcast ~]# groupmod -g 520 -n admin admins [root@itcast ~]# grep admin /etc/group admin:x:520:
3. 用户组删除
命令 | 说明 |
---|---|
groupdel 组名 | 删除组 |
示例:
[root@itcast ~]# groupdel admin
4. 组文件说明
与用户组相关的文件/etc/group
[root@itcast ~]# cat /etc/group root:x:0: bin:x:1: ...省略... itcast:x:1000:itcast 组名 :密码:GID:组内用户 # 说明: 密码x代表占位符,用户组可以设置密码,但是大部分情况不需要设置