linux-用户与组管理

62 min read

一、介绍

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代表占位符,用户组可以设置密码,但是大部分情况不需要设置