# 用户和用户组管理
Linux
系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
# 用户
每个用户账号都拥有一个惟一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
当前系统中所有用户的信息都存储在 /etc/passwd
文件中。
该文件中的每一行的内容都包含七列,分别以冒号进行隔开。
root:x:0:0:root:/root:/bin/bash
# 用户名 : 用户密码占位符 : 用户编号 : 用户组编号 : 用户注释信息 : 用户主目录 : Shell 类型
当前系统中所有用户的密码信息都被存储在 /etc/shadow
文件中。
其中的内容与用户信息文件的内容行行对应,同样每行七列,每列以冒号隔开。
root::::::::
# 账户名称 : 加密后的密码 : 最近改动密码的日期 : 密码不可被变更的天数 : 密码需要重新变更的天数 : 密码过期预警天数 : 密码过期的宽恕时间 : 账号失效日期 : 保留的
# USERADD
useradd
命令用于 Linux
中创建的新的系统用户。
# 语法
useradd [选项] [要创建的用户名]
# 常用选项
名称 | 描述 |
---|---|
-c comment | 指定一段注释性描述 |
-d 目录 | 指定用户主目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录 |
-g 用户组 | 指定用户所属的用户组 |
-G 用户组,用户组 | 指定用户所属的附加组 |
-s Shell 文件 | 指定用户的登录 Shell |
-u 用户号 | 指定用户的用户号,如果同时有 -o 选项,则可以重复使用其他用户的标识号 |
# 实例
新建了一个用户 anani
,该用户的登录 Shell
是 /bin/bash
,它属于 group
用户组,同时又属于 adm
和 root
用户组,其中 group
用户组是其主组。
useradd -s /bin/bash -g group -G adm,root anani
# USERDEL
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将 /etc/passwd
等系统文件中的该用户记录删除,必要时还删除用户的主目录。
userdel
可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
# 语法
userdel [-r] [用户帐号]
使用 -r
参数会删除用户登入目录以及目录中所有文件。
# USERMOD
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录 Shell
等。
修改已有用户的信息使用 usermod
命令。
# 语法
usermod [选项] [用户帐号]
# 常用选项
名称 | 描述 |
---|---|
-l<帐号名称> | 修改用户帐号名称 |
-c<备注> | 修改用户帐号的备注文字 |
-g<群组> | 修改用户所属的群组 |
-d<登入目录> | 修改用户登入时的目录 |
-e<有效期限> | 修改帐号的有效期限 |
-s<shell> | 修改用户登入后所使用的 Shell |
-G<群组> | 修改用户所属的附加群组 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该帐号 |
-u<uid> | 修改用户 ID |
-L | 锁定用户密码,使密码无效 |
-U | 解除密码锁定 |
# 实例
改变用户的 uid
。
usermod -u 777 root
# PASSWD
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的 Shell
命令是 passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
# 语法
passwd [选项] [用户帐号]
# 常用选项
名称 | 描述 |
---|---|
-f | 强制执行 |
-S | 显示密码信息 |
-d | 删除密码 |
-l | 停止账号使用 |
-u | 启用已被停止的账户 |
-g | 修改群组密码 |
-x | 设置密码的有效期 |
-i | 过期后停止用户账号 |
-k | 更新只能发送在过期之后 |
# 实例
修改用户密码。
$ passed anani # 修改用户 anani 的密码
Enter new UNIX password: # 输入新密码,输入的密码无回显
Retype new UNIX password: # 确认密码
passwd: password updated successfully
# 用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同 Linux
系统对用户组的规定有所不同,如 Linux
下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group
文件的更新。
该文件中的每一行的内容都包含四列,分别以冒号进行隔开。
root:x:0:
# 组名称 : 组密码占位符 : 组编号(root 所在组号为 0) : 组中的用户(仅一个与组名相同的用户或无用户时为空,多个用户则以逗号隔开)
组号从 1 到 499 属于系统预留的组编号,一般会被分配给安装在系统中的软件或服务,比如 MySQL。
当前系统中用户组的密码信息存储在 /etc/gshadow
文件中。
该文件中的内容与用户组信息文件中的内容行行对应,同样每行有四列,每列以冒号分隔开。
root:*::
# 组名称 : 组密码(*、!或为空皆表示无密码) : 组管理者(为空则表示组内用户都可以管理) : 组中的用户(仅一个与组名相同的用户或无用户时为空,多个用户则以逗号隔开)
# GROUPADD
groupadd
命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
# 语法
groupadd [选项] [新建工作组的组名]
# 常用选项
名称 | 描述 |
---|---|
-g | 指定新建工作组的 ID |
-r | 创建系统工作组,系统工作组的组 ID 小于 500 |
-K | 覆盖配置文件 “/ect/login.defs” |
-o | 允许添加组 ID 号不唯一的工作组 |
# 实例
建立一个组 anani
,并设置组 ID 加入系统。
groupadd -g 333 anani
# GROUPDEL
需要从系统上删除群组时,可用 groupdel
(group delete) 指令来完成这项工作。
倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
# 语法
groupdel [群组名称]
# 实例
删除一个群组 anani
。
groupdel anani
# GROUPMOD
需要更改群组的识别码或名称时,可用 groupmod
指令来完成这项工作。
# 语法
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
# 常用选项
名称 | 描述 |
---|---|
-g <群组识别码> | 设置欲使用的群组识别码 |
-o | 重复使用群组识别码 |
-n <新群组名称> | 设置欲使用的群组名称 |
# 实例
修改组名 anani
为 sharon
。
groupmod -n sharon anani
# GPASSWD
gpasswd
命令是 Linux
下工作组文件 /etc/group
和 /etc/gshadow
管理工具。
# 语法
gpasswd [选项] [要管理的工作组]
# 常用选项
名称 | 描述 |
---|---|
-a | 添加用户到组 |
-d | 从组删除用户 |
-A | 指定管理员 |
-M | 指定组成员和 -A 的用途差不多 |
-r | 删除密码 |
-R | 限制用户登入组,只有组中的成员才可以用 newgrp 加入该组 |
# 实例
添加一个用户到一个组,同时保留以前添加的组。
gpasswd -a user_name group_name
如果一个用户同时属于多个用户组,那么用户可以使用 newgrp <groupName>
在用户组之间切换,以便具有其他用户组的权限。