Linux 用户和用户组管理
简介
Linux 系统是一个多用户多任务的操作系统,任何一个使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并对用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
要想实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除、修改以及用户密码的管理。
用户组管理。
注意三个文件
| 文件 | 作用 |
|---|---|
| /etc/passwd | 储存用户的关键信息 |
| /etc/group | 储存用户组的关键信息 |
| /etc/shadow | 储存用户的密码信息 |
用户管理
添加用户
- 常用语法:#useradd 【选项】【用户名】
- 常用选项:
- -g:表示指定用户的用户主组,选项的值可以是用户组的 id ,也可以是组名
- -G:表示指定用户的用户附加组,选项的值可以是用户组的 id ,也可以是组名
- -u:uid ,用户的 id (用户的标识符),系统默认会从 500 之后按顺序分配 uid ,如果不想使用系统分配的,可以通过该选项自定义(类似于腾讯 QQ 的自选靓号情况)
- -c:comment ,添加注释
案例一:
创建用户 niuniu ,不带任何选项
#useradd niuniu
验证是否成功:
- 验证 /etc/passwd 的最后一行,查看是否有 niuniu 的信息;
- 验证是否存在家目录(在 Centos 下创建好用户之后随之产生一个同名家目录);
- 扩展:认识 passwd 文件

文件结构:
用户名 : 密码 : 用户ID : 用户组ID : 注释 : 家目录 : 解释器 shell
- 用户名:创建新用户名称,后期登陆的时候需要输入;
- 密码:此密码位置一般情况都是 “ x ” ,表示密码的站位;
- 用户 ID:用户的识别符;
- 用户组 ID:该用户所属的主组 ID;
- 注释:解释该用户是做什么用的;
- 家目录:用户登录进入系统之后默认的位置;
- 解释器 shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;
注意:在不添加选项的时候,执行 useradd 之后会执行一系列的操作
- 创建同名的家目录;
- 创建同名的用户组;
案例二:
添加选项,创建用户 xiaok ,让 xiaok 属于1003 主组 ,附加组1002


修改用户
- 常用语法:#usermod 【选项】【用户名】
- usermod:user modify ,用户修改
- 常用选项:
- -g:表示指定用户的用户主组,选项的值可以是用户组的 id ,也可以是组名
- -G:表示指定用户的用户附加组,选项的值可以是用户组的 id ,也可以是组名
- -u:uid ,用户的 id (用户的标识符),系统默认会从 500 之后按顺序分配 uid ,如果不想使用系统分配的,可以通过该选项自定义(类似于腾讯 QQ 的自选靓号情况)
- -c:comment ,添加注释
- -l:修改用户名
- 常用语法:#usermod 【选项】【用户名】
案例一:
修改 xiaok 用户主组为 1002 ,附加组改为 1003
语法:#usermod -g 1002 -G 1003


案例二:
修改 xiaok 用户的用户名,改为 yyyym
#usermod -l 【新的用户名】 【旧的用户名】
语法:#usermod -l yyyym xiaok

案例:
设置 manman 用户的密码。

注意:在设置密码的时候是没有任何输入提示的,放心输入,确保两次输入的密码一致,按下回车即可。

注意事项:
- 从 root 往普通用户切换不需要密码,但是反之则需要 root 密码;
- 切换普通用户之后前后的工作路径是不变的;
- 普通用户没有办法访问 root 用户家目录,但是反之则可以。
案例:
删除 manman 用户
#userdel manman

补充:启动中的用户无法删除成功,这时候只要 kill 掉它即可。
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的用户进行集中管理。不同 Linux 系统对用户组的规定会有所不同,如 Linux 下的用户输入与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组用户组的添加、删除和修改。组的添加、删除和修改实际上就是对 /etc/group 文件的更新。
- 扩展:认识 group 文件

文件结构:
用户组名 : 密码 : 用户组 ID : 组内用户名
密码:x 表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码。
组内用户名:表示附加组是该组的用户名称。
- 用户组添加
- 常用语法:#groupadd 【选项】【用户组名】
- 常用选项:
- -g:类似用户添加里的 “ -u ” ,-g 表示选择自己设置一个自定义的用户组 ID 数字,如果自己不指定,则默认从 500 之后递增。
案例
使用 groupadd 指令创建一个新的用户组,命名为 administrators
#groupadd -g 501 administrators

- 用户组修改
- 常用语法:#groupmod 【选项】【用户组名】
- 常用选项:
- -g:类似用户修改里的 “ -u ” , -g 表示选择自己设置一个自定义的用户组 ID 数字
- -n:类似用户修改里的 “ -l ” ,表示设置新的用户组的名称
案例:
修改 administrators 用户组,将 ID 从 501 改为 520 ,并将名称改为 admins

- 用户组删除
- 常用语法:#groupdel 【用户组名】

注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移除所有用户。