学习目标

  1. 清楚linux系统中与用户与组相关的文件是哪些
  2. 能够对系统用户进行添加修改删除等操作
  3. 能够对系统组进行添加删除修改等操作

一、介绍

1. 用户说明

在系统管理员的工作中,很重要的一环就是管理用户账号,任何一个要使用系统资源的用户,都必须向管理员申请用户账号,然后以这个账号身份进入系统。所以必须清楚如何管理好系统用户账号。

2. 概念说明

UID(User IDentification):每个用户都有一个对应的UID,UID在系统中是唯一的

GID(Group IDentification):每个用户在创建时都会为这个用户创建一个默认组(主组),组会对应一个GID,用户必须属于一个且只有一个主组。主组以外的组属于用户的附加组。

注意:一个用户只有一个主组,但可以属于0或者多个附加组

3. 相关配置文件

  1. /etc/passwd # 存储用户关键信息
  2. /etc/shadow # 存储用户密码信息
  3. /etc/group # 存储用户组关键信息

二、用户管理

1. 创建用户

命令 说明
useradd 【选项】 用户名 创建用户

useradd命令选项:

选项 说明
-d 指定某个目录成为家目录(务必使用绝对路径)。默认会创建一个和用户名相同的家目录
-g 后面接组名,指定用户所属的用户组,默认不指定会自动创建一个和用户名同名的用户组
-u 后面接UID。指定一个特定的UID给这个账号
-M 强制不创建用户家目录
-c 添加用户注释

示例:

  1. 示例一:默认值建立一个用户
  2. [root@itcast ~]# useradd hello1
  3. [root@itcast ~]# ll -d /home/hello1/
  4. drwx------. 3 hello1 hello1 74 3 12 17:34 /home/hello1/ # 默认会建立用户家目录
  5. 查看创建效果:
  6. [root@itcast ~]# grep hello1 /etc/passwd
  7. /etc/passwd:hello1:x:1001:1001::/home/hello1:/bin/bash
  8. 示例二:指定UID创建用户,UID必须是系统中不存在的
  9. [root@itcast ~]# useradd -u 1100 hello2
  10. [root@itcast ~]# grep hello2 /etc/passwd
  11. hello2:x:1100:1100::/home/hello2:/bin/bash

认识/etc/passwd文件:

与用户账号相关的文件

  1. [root@itcast ~]# cat /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. ...省略...
  5. itcast:x:1000:1000:itcast:/home/itcast:/bin/bash
  6. hello1:x:1001:1001::/home/hello1:/bin/bash
  7. hello2:x:1100:1100::/home/hello2:/bin/bash
  8. #用户名:密码:UID:GID:注释:家目录:解释器

查看用户UID和对应组的GID:

  1. [root@itcast ~]# id hello1
  2. uid=1001(hello1) gid=1001(hello1) 组=1001(hello1)

2. 设置密码

linux不允许没有密码的用户登录到系统,因此前面创建的用户目前处于锁定状态,需要设置密码才能登录系统

命令 说明
passwd 【用户名】 设置密码或修改密码,不指定用户名表示修改当前用户密码

示例:

  1. # 设置hello1的密码
  2. [root@itcast ~]# passwd hello1
  3. 更改用户 hello1 的密码
  4. 新的 密码:
  5. 无效的密码: 密码少于 8 个字符
  6. 重新输入新的 密码:
  7. passwd:所有的身份验证令牌已经成功更新。
  8. #说明:在设置密码时,没有任何输入提示,确保两次输入密码一致,按下回车即可。

认识/etc/shadow文件:与用户密码相关的文件

  1. [root@itcast ~]# cat /etc/shadow
  2. root:$6$3NGfAb6CfFX2kGp7$Nlr8CjkaaX/6Ipv941vtzMqjy/wvqhGEYZ7ijH04fL92561qBzBP6Q64dZiKlQyPdufA8mvL68mKm472MMOEl0:17957:0:99999:7:::
  3. bin:*:16231:0:99999:7:::
  4. ...省略...
  5. itcast:$6$zXmpvSEl5crBcOUS$1TkFprm592Hgh65MGbc99VtYLjSn1tXXDH6owE3KhCRte2OKkx5TpEfXexxvveOkApUG7faAWARI2byqSErUa0:17957:0:99999:7:::
  6. hello1:$6$8qS2vBwO$WfyvthDD7mkTASVIbrrOK4y7bYoileSCI6.fgJ.rqlCvqPh50/nOZcoJfYS08ZyVf8nuaCfgF60VxLpOOI0XZ.:17967:0:99999:7:::
  7. hello2:$6$tZVAwr.v$jiDW7iMPCOeKiQkf4aOAelpjJF/a5ZLiERPOmpQLbPSIC2PmfjkRh2Yv153QCn79J1RM.47RcDhuWjTwahaOe0:17967:0:99999:7:::
  8. hello3:!!:17967:0:99999:7:::
  9. # 说明:hello1、hello2设置了密码,hello3没有设置密码

3. 修改用户信息

命令 说明
usermod [选项] 用户名 修改用户信息

usermod选项说明:

选项 说明
-g 修改用户对应的用户组,选项值可以是GID,也可以是组名
-G 修改用户对应的附加组
-u 修改用户的UID
-l(小写) 修改用户名
-c 修改用户注释
-d 修改用户家目录
-s 修改用户登录使用的shell

示例:

  1. 示例一:修改hello1用户组为1000
  2. [root@itcast ~]# id hello1
  3. uid=1001(hello1) gid=1001(hello1) 组=1001(hello1)
  4. [root@itcast ~]# usermod -g 1000 hello1
  5. [root@itcast ~]# id hello1
  6. uid=1001(hello1) gid=1000(itcast) 组=1000(itcast)
  7. 示例二:修改hello1用户名为helloworld1
  8. [root@itcast ~]# usermod -l helloworld1 hello1
  9. [root@itcast ~]# grep helloworld1 /etc/passwd
  10. helloworld1:x:1001:1000::/home/hello1:/bin/bash

4. 删除用户

命令 说明
userdel 【选项】 用户名 删除用户

userdel选项:

选项 说明
-r 删除用户的同时删除其家目录

示例:

  1. [root@itcast ~]# userdel -r hello3
  2. [root@itcast ~]# id hello3
  3. id: hello3: no such us

注意:已经登录的用户删除的时候回提示删除失败,解决办法

  1. [root@itcast home]# userdel -r hello2
  2. userdel: user hello2 is currently used by process 113380
  3. #解决办法1:强制杀死对应用户的进程
  4. [root@itcast home]# ps -ef | grep hello2
  5. root 113379 113334 0 19:38 pts/1 00:00:00 su hello2
  6. hello2 113380 113379 0 19:38 pts/1 00:00:00 bash
  7. root 113472 113411 0 19:42 pts/1 00:00:00 grep --color=auto hello2
  8. [root@itcast ~]# kill -9 113380
  9. [root@itcast ~]# 已杀死 (core dumped)
  10. [root@itcast ~]# userdel -r hello2
  11. [root@itcast ~]# id hello2
  12. id: hello2: no such user
  13. #解决办法2:
  14. 在登录需要删除的⽤户之后,按下快捷键“ctrl+d”进行对当前⽤户的注销,随后退
  15. 回到上一个用户(root)此时就可以对需要删除的⽤户进行删除操作。

三、组管理

每个用户都有一个用户组(主组).

用户组的管理涉及组的添加、删除和修改

1. 用户组添加

命令 说明
groupadd 【选项】 组名 创建组

groupadd选项说明:

选项 说明
-g 设置GID。不写会设置默认GID

示例:

  1. [root@itcast ~]# groupadd admins
  2. [root@itcast ~]# tail -1 /etc/group
  3. admins:x:1003:

2. 用户组修改

命令 说明
groupmod 【选项】 组名 修改组信息

groupmod选项说明:

选项 说明
-g 设置自定义一个的GID
-n 设置新的组名称

示例:

  1. # 修改admins用户组。将UID改为520,将名称改为admin
  2. [root@itcast ~]# groupmod -g 520 -n admin admins
  3. [root@itcast ~]# grep admin /etc/group
  4. admin:x:520:

3. 用户组删除

命令 说明
groupdel 组名 删除组

示例:

  1. [root@itcast ~]# groupdel admin

4. 组文件说明

与用户组相关的文件/etc/group

  1. [root@itcast ~]# cat /etc/group
  2. root:x:0:
  3. bin:x:1:
  4. ...省略...
  5. itcast:x:1000:itcast
  6. 组名 :密码:GID:组内用户
  7. # 说明:
  8. 密码x代表占位符,用户组可以设置密码,但是大部分情况不需要设置