第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的常用选项及说明如表31所示。 表31useradd的常用选项及说明 常 用 选 项 选 项 说 明 b,basedir BASE_DIR新账户的主目录的基目录 d,homedir HOME_DIR新账户的主目录 D,defaults显示或更改默认的useradd配置 e,expiredate EXPIRE_DATE新账户的过期日期 f,inactive INACTIVE新账户的密码不活动期 g,gid GROUP新账户主组的名称或ID G,groups GROUPS新账户的附加组列表 o,nonunique允许使用重复的UID创建权限用户 s,shell SHELL新账户的登录shell u,uid UID新账户的用户ID U,usergroup创建与权限用户同名的组 注意,用户名不能超过32个字符长。 2. userdel 功能: 删除权限用户账户和相关文件。 语法: userdel [选项] 登录 userdel的常用选项及说明如表32所示。 表32userdel的常用选项及说明 常 用 选 项 选项说明 f,force强制删除权限用户账户,甚至权限用户仍然在登录状态。注意: 此选项危险,可能会破坏系统的稳定性 r,remove删除主目录和邮件池 3. usermod 功能: 修改一个权限用户账户信息。 语法: usermod [选项] 登录 usermod的常用选项及说明如表33所示。 表33usermod的常用选项及说明 常 用 选 项 说明 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,movehome将目录内容移至新位置(仅与d一起使用) o,nonunique允许使用重复的(非唯一的)UID p,password PASSWORD将加密过的密码(PASSWORD)设为新密码 s,shell SHELL该权限用户账号的新登录shell u,uid UID权限用户账号的新UID U,unlock解锁权限用户账号 注意,如果要更改权限用户的ID、用户名或主目录,需要确保在执行命令时,权限用户没有运行任何进程。 4. su 功能: 用于将当前权限用户修改为有效权限用户的标识(即实现用户切换的功能)。 语法: su [OPTION]... [-] [USER [ARG]...] su的常用选项及说明如表34所示。 表34su的常用选项及说明 常 用 选 项 选 项 说 明 单个视为l如果未指定USER,将假定为root m, p,preserveenvironment不重置环境变量 g,group<组>指定主组 G,suppgroup<组>指定一个辅助组 c,command<命令>使用c向shell传递一条命令 s,shell<shell>若/etc/shells允许,则运行shell 3.3.3权限用户组管理命令 权限用户组管理命令主要有groupadd、groupdel和groupmod等,分别用于组的创建、组的删除和组的属性修改。 1. groupadd 功能: 创建一个新组。 语法: groupadd [选项] 组 groupadd的常用选项及说明如表35所示。 表35groupadd的常用选项及说明 常 用 选 项 选 项 说 明 f,force如果组已经存在则退出,如果GID已经存在则取消g g,gid GID为新组使用GID K,key KEY=VALUE不使用/etc/login.defs中的默认值 o,nonunique允许创建有重复GID的组 组名最长为32个字符。 2. groupdel 功能: 删除一个组。 语法: groupdel [选项] GROUP 注意,在使用此选项删除一个组时,不能移除现有权限用户的主组。在移除此组之前,必须先移除此用户,再手动检查所有文件系统,以确保没有遗留的属于此组的文件。 3. groupmod 功能: 修改组的属性信息。 语法: groupmod [选项] 组 groupmod的常用选项及说明如表36所示。 表36groupmod的常用选项及说明 常 用 选 项 选 项 说 明 g,gid GID将组ID改为GID n,newname NEW_GROUP改名为NEW_GROUP o,nonunique允许使用重复的GID 3.3.4密码管理命令 密码管理的命令包括passwd和chage两个。其中,passwd用于修改权限用户的密码; chage用于更改权限用户密码过期的信息(使用的天数)。 1. passwd 功能: 更新权限用户的口令。 语法: passwd [选项...] <账号名称> passwd的常用选项及说明如表37所示。 表37passwd的常用选项及说明 常 用 选 项 选 项 说 明 k,keeptokens保持身份验证令牌不过期 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的主要选项如表38所示。 表38chage的主要选项及说明 主 要 选 项 选 项 说 明 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/anacondaks.cfg,练习more、less、wc命令的使用。 (3) 查看以下文件的内容,找出在本章3.4.1小节中添加的账户信息。 /etc/passwd /etc/shadow /etc/group 3.5思考与练习 more、less、cat、wc命令有什么区别?