第3章
Linux的权限用户(组)管理基本操作




第3章Linux的权限用户(组)管理基本操作

3.1实 验 目 的
掌握使用命令创建和修改权限用户(组)属性信息的方法。
3.2实 验 环 境
一台已安装好VMware软件的主机,虚拟机系统为CentOS 7。
3.3预 备 知 识
3.3.1与权限用户(组)管理相关的文件

与权限用户(组)管理相关的文件有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/login.defs、/etc/default/useradd等,用于对权限用户设置和登录项目进行控制。
(1) /etc/passwd是一个文本文件,它包含一个系统账户列表,给出每个账户一些有用的信息,例如用户ID、组ID、 家目录、shell等,每一行包含一条记录。
(2) /etc/shadow是影子化了的密码文件,它包含系统账户的密码信息和可选的年龄信息。此文件的每行包括9个字段,使用半角冒号 (“: ”)分隔。此文件的组成信息及顺序如下: 
登录名: 加密了的密码: 最后一次更改密码的日期: 密码的最小年龄: 最大密码年龄: 密码警告时间段: 密码禁用期: 账户过期日期: 保留字段。
(3) /etc/group是一个ASCII码的文件,它定义了权限用户所属的组。文件中每行包括一条记录。其格式如下: 

group_name:passwd:GID:user_list

其中,passwd为(加密的)组密码,若该字段为空,则不需要密码。组内所有成员的用户名,以半角逗号分隔。
(4) /etc/gshadow是影子化了的组文件,包含组账户信息,类似于shadow文件。
(5) /etc/login.defs是针对影子密码的配置文件(与影子密码配套使用)。
(6) /etc/default/useradd是useradd命令默认参数的配置文件。
上述文件不建议手动修改,可以通过使用下面的命令达到修改相应文件的目的,以实现账户的管理。
3.3.2权限用户管理命令
权限用户管理的命令主要有useradd、userdel和usermod 3个。它们分别用于权限用户的建立、权限用户的删除和权限用户属性的修改。另外,还有一个命令su用于运行替换权限用户和组标识、替换shell等操作。
1. useradd
功能: 创建一个新权限用户或更新默认新权限用户信息。
语法: useradd [选项] 登录

useradd -D

useradd -D [选项]



第
3
章
Linux的权限用户(组)管理基本操作

Linux操作系统原理实践教程
useradd的常用选项及说明如表31所示。


表31useradd的常用选项及说明




常 用 选 项
选 项 说 明
b,basedir BASE_DIR新账户的主目录的基目录
d,homedir HOME_DIR新账户的主目录
D,defaults显示或更改默认的useradd配置
e,expiredate EXPIRE_DATE新账户的过期日期
f,inactive INACTIVE新账户的密码不活动期
g,gid GROUP新账户主组的名称或ID
G,groups GROUPS新账户的附加组列表
o,nonunique允许使用重复的UID创建权限用户
s,shell SHELL新账户的登录shell
u,uid UID新账户的用户ID
U,usergroup创建与权限用户同名的组

注意,用户名不能超过32个字符长。
2. userdel
功能: 删除权限用户账户和相关文件。
语法: userdel [选项] 登录
userdel的常用选项及说明如表32所示。


表32userdel的常用选项及说明



常 用 选 项
选项说明

f,force强制删除权限用户账户,甚至权限用户仍然在登录状态。注意: 此选项危险,可能会破坏系统的稳定性
r,remove删除主目录和邮件池

3.  usermod
功能: 修改一个权限用户账户信息。
语法: usermod [选项] 登录
usermod的常用选项及说明如表33所示。


表33usermod的常用选项及说明



常 用 选 项
说明

d,home HOME_DIR权限用户的新主目录
e,expiredate EXPIRE_DATE设定账户过期的日期为EXPIRE_DATE
f,inactive INACTIVE过期INACTIVE天数后,设定密码为失效状态
g,gid GROUP强制使用GROUP为新主组
G,groups GROUPS新的附加组列表GROUPS
a,append GROUP将权限用户追加至上边G中提到的附加组中,并不从其他组中删除此权限用户
l,login LOGIN新的登录名称
L,lock锁定权限用户账号
m,movehome将目录内容移至新位置(仅与d一起使用)
o,nonunique允许使用重复的(非唯一的)UID
p,password PASSWORD将加密过的密码(PASSWORD)设为新密码
s,shell SHELL该权限用户账号的新登录shell
u,uid UID权限用户账号的新UID
U,unlock解锁权限用户账号

注意,如果要更改权限用户的ID、用户名或主目录,需要确保在执行命令时,权限用户没有运行任何进程。
4. su
功能: 用于将当前权限用户修改为有效权限用户的标识(即实现用户切换的功能)。
语法: su [OPTION]... [-] [USER [ARG]...]
su的常用选项及说明如表34所示。


表34su的常用选项及说明



常 用 选 项
选 项 说 明

单个视为l如果未指定USER,将假定为root
m, p,preserveenvironment不重置环境变量
g,group<组>指定主组
G,suppgroup<组>指定一个辅助组
c,command<命令>使用c向shell传递一条命令
s,shell<shell>若/etc/shells允许,则运行shell

3.3.3权限用户组管理命令
权限用户组管理命令主要有groupadd、groupdel和groupmod等,分别用于组的创建、组的删除和组的属性修改。
1. groupadd
功能: 创建一个新组。
语法: groupadd [选项] 组
groupadd的常用选项及说明如表35所示。


表35groupadd的常用选项及说明




常 用 选 项
选 项 说 明
f,force如果组已经存在则退出,如果GID已经存在则取消g
g,gid GID为新组使用GID
K,key KEY=VALUE不使用/etc/login.defs中的默认值
o,nonunique允许创建有重复GID的组

组名最长为32个字符。
2.  groupdel
功能: 删除一个组。
语法: groupdel [选项] GROUP
注意,在使用此选项删除一个组时,不能移除现有权限用户的主组。在移除此组之前,必须先移除此用户,再手动检查所有文件系统,以确保没有遗留的属于此组的文件。
3.  groupmod
功能: 修改组的属性信息。
语法: groupmod [选项] 组
groupmod的常用选项及说明如表36所示。


表36groupmod的常用选项及说明



常 用 选 项
选 项 说 明

g,gid GID将组ID改为GID
n,newname NEW_GROUP改名为NEW_GROUP
o,nonunique允许使用重复的GID

3.3.4密码管理命令
密码管理的命令包括passwd和chage两个。其中,passwd用于修改权限用户的密码; chage用于更改权限用户密码过期的信息(使用的天数)。
1. passwd
功能: 更新权限用户的口令。
语法: passwd [选项...] <账号名称>
passwd的常用选项及说明如表37所示。


表37passwd的常用选项及说明



常 用 选 项
选 项 说 明

k,keeptokens保持身份验证令牌不过期
d,delete删除已命名账号的密码(仅限root用户)
l,lock锁定指名账户的密码(仅限 root 用户)
u,unlock解锁指名账户的密码(仅限 root 用户)
续表


常 用 选 项
选 项 说 明

e,expire终止指名账户的密码(仅限root用户)
f,force强制执行操作
x,maximum=DAYS密码的最长有效时限(仅限root用户)
n,minimum=DAYS密码的最短有效时限(仅限root用户)
w,warning=DAYS在密码过期前多少天开始提醒用户(仅限root用户)
i,inactive=DAYS当密码过期后经过多少天该账号会被禁用(仅限root用户)
S,status报告已命名账号的密码状态(仅限root用户)
stdin从标准输入读取令牌(仅限root用户)

2. chage
功能: 更改权限用户密码过期的信息。
语法: chage [选项] 登录
chage的主要选项如表38所示。


表38chage的主要选项及说明



主 要 选 项
选 项 说 明

d,lastday最近日期将最近一次密码设置时间设为“最近日期”
E,expiredate过期日期将账户过期时间设为“过期日期”
I,inactive INACITVE过期INACTIVE天数后,设定密码为失效状态
l,list显示账户年龄信息
m,mindays最小天数将两次改变密码之间相距的最小天数设为“最小天数”
M,maxdays最大天数将两次改变密码之间相距的最大天数设为“最大天数”
W,warndays警告天数将过期警告天数设为“警告天数”

注意,如果没有选择任何选项,chage会进入交互模式,并以所有字段的当前值提示用户。输入一个新值可以更改这些字段,或者留空使用当前值(当前值出现在[ ]标记对中)。只有 root才可以使用chage。l选项是一个特殊情况,它用来让非特权用户知道自己的密码或账户何时过期。
3.4实 验 步 骤
3.4.1权限用户创建和管理

(1) 在控制台上用root用户登录系统,并切换到字符界面(如果已经是字符界面,就可忽略本操作)。命令如下: 

[root@localhost ~]# systemctl isolate multi-user.target,

或

[root@localhost ~]# init 3

(2) 创建用户组wlx: 新建两个普通用户st01、st02,并加入用户组wlx; 使用命令passwd给新用户st01和st02设置密码。
输入如下命令新建用户组: 

# groupadd wlx

输入如下命令新建一个用户st01,将用户加入到用户组wlx: 

# useradd -g wlx st01

输入如下命令给st01设置密码: 

#passwd st01

按照创建st01的方法创建另一个用户st02。
输入命令exit或logout退出登录。
(3) 在虚拟控制台tty1上用st01登录,练习命令pwd、whoami、who。
(4) 在虚拟控制台tty2上用st02登录,练习命令pwd、whoami、who。
说明: 切换虚拟控制台的方法: 同时按Alt+F[1~6]组合键,如切换到虚拟控制台tty1,则按Alt+F1组合键; 切换到虚拟控制台tty2,则按Alt+F2组合键,以此类推,等等。
3.4.2练习完成以下操作
(1) 练习以下命令man、clear、cal、date的使用。
① 查看man手册页的使用方法。
② 将当前屏幕清屏。
③ 打印今年的日历。
④ 显示系统时间,如果和当前时间不一致,请修改时间。
(2) 通过查看文件/root/anacondaks.cfg,练习more、less、wc命令的使用。
(3) 查看以下文件的内容,找出在本章3.4.1小节中添加的账户信息。

/etc/passwd

/etc/shadow

/etc/group

3.5思考与练习
more、less、cat、wc命令有什么区别?