系列文章目录
第一章 红帽企业Linux入门
第二章 访问命令行
第三章 从命令行管理文件
第五章 创建、查看文本文件
第六章 管理本地用户和组
文章目录
- 系列文章目录
- 前言
- 一、用户和组
- 二、获取超级用户访问权限
- 三、管理本地用户账户
- 四、管理本地组账户
- 五、管理用户密码
- 六、问答
-
- [1、Linux 对用户的管理会涉及到哪三个系统文件,请给出各自的名称并简述其条目结构。](#1、Linux 对用户的管理会涉及到哪三个系统文件,请给出各自的名称并简述其条目结构。)
- 2、用户的主组和辅助组有什么区别?
- [3、在 shell 切换用户时,su user 和 su -- user 这两个命令有什么区别?](#3、在 shell 切换用户时,su user 和 su – user 这两个命令有什么区别?)
- [4、说明 sudo 命令作用,su、sudo 和 sudo -i 有什么区别?](#4、说明 sudo 命令作用,su、sudo 和 sudo -i 有什么区别?)
- 5、怎么创建用户,怎么彻底删除用户(包含用户数据)?
- 6、怎么创建组,怎么添加组成员?能否删除主组,说出原因。
- [7、请解释 nologin shell,在什么场合会用到。](#7、请解释 nologin shell,在什么场合会用到。)
前言
创建、管理和删除本地用户和组,以及管理本地密码策略。
一、用户和组
1、用户
用户账户在可以运行命令的人员和程序之间提供了安全界限。
系统通过分配的唯一标识号(用户ID或UID
)来区分不同的用户账户。
系统使用/etc/passwd
文件存储有关本地用户的信息。
用户有以下三种主要类型:
- 超级用户 :名称为
root
,账户UID为0
,具有完全的系统访问权限; - 系统用户:供服务进程使用,无法以交互式方式登录;
- 普通用户:具有有限权限的处理日常工作的普通用户账户。
与用户有关的常见命令:
id
:显示有关当前已登录用户的信息;id 用户名
:查看某个用户的信息;ls -l
:查看文件所有者;ls -ld
:查看目录所有者,而不是目录内容;ps
:查看进程信息,-a
查看该终端所有进程,-u
显示与进程关联的用户。
2、组
组是需要共享文件和其他系统资源权限的用户的集合 。
系统通过分配唯一的标识号(组ID或GID
)来区分不同的组。
系统使用/etc/group
文件存储有关本地组的信息。
主要组和补充组:
- 主要组:每个用户只有一个主要组,拥有用户创建的文件。创建普通用户的时候,会创建 一个与用户同名的组 ,作为该用户的
主要组
。 - 补充组:是用户可以属于的其他组,用于资源共享和权限分配。成员资格存储在
/etc/group
文件中。 id命令
可显示用户的组成员资格。
二、获取超级用户访问权限
1、root用户
该用户拥有系统的全部权限
,可用来管理系统。
root用户才可以安装或删除软件以及管理系统文件及任务。
默认只有root用户
能管理硬盘 ,普通用户
可控制可移动设备 ,如USB设备。
root用户拥有足以破坏系统的无限制权限,建议仅在需要时升级到root用户特权。
2、切换用户账户
su (-) user1
:切换到user1用户账户,需要提供user1用户的密码;su (-)
:省略用户名,切换到root;sudo
:通过 sudo 使用自己的密码获取 root 访问权限;su 与 su - , sudo 的区别
:su 和 sudo 切换之后还是当前用户的环境 ,su - 切换之后是新用户的环境 ,
若切换到 root 用户,提示符会变为超级用户(root)提示符#
;- sudo 好处 :将所有执行的命令记录到 /var/log/secure 中。
- sudo 命令的必要性:出于安全原因,某些情况下,root用户配置为没有有效的密码。所以,用户无法使用密码以root身份登录系统,同时也无法使用su来获取交互式Shell。此时需要使用sudo命令来获取root访问权限。
- 如何通过 sudo 访问 root 账户 :使用
sudo -i
命令,切换到root账户并且运行该用户的默认shell及关联的交互式登录脚本。
若在没有交互式脚本的情况下运行 shell,使用 sudo -s。
3、sudo配置
sudo 命令的主要配置文件是 /etc/sudoers
,配置举例如下:
bash
%wheel ALL=(ALL:ALL) ALL
第一部分表示:规则所应用到的用户或组
,%指定一个组 ,这里代表 wheel 组;
第二部分表示:在具有此文件的任何主机
上,whell组中的用户可以在系统上以任何其他用户
和任何其他组
运行命令。
第三部分表示:whell组中的用户可以运行任何命令
。
可在 /etc/sudoer.d 下创建文件启用sudo权限,例如 /etc/sudoer.d/user01 ,从目录中删除文件,即可禁用sudo访问权限。
三、管理本地用户账户
1、创建用户
useradd username
:创建名为 username 的用户,要设置密码之后才能登录;useradd -u UID username
:- u 选项为用户 username 指定 UID;- 在
/etc/login.defs
文件中为新创建的用户账户 设置一些默认选项,如有效UID编号的范围和默认密码过期规则,更改此文件对现有用户无影响。
2、修改用户
使用 usermod --help
命令显示用于修改账户的选项.
3、删除用户
userdel username
:从/etc/passwd
中删除 username 用户的详细信息,但用户主目录(用户拥有的文件)保持不变userdel - r username
:从 /etc/passwd 中删除 username 用户 ,同时删除用户主目录;- root 用户可以使用
find / -nouser -o -nogroup
命令查找所有无人拥有的文件和目录。
4、设置密码
paswd username
:为 username 用户设置初始密码或更改其现有密码;
5、UID范围
UID 0
:root 账户UID;UID 1-99
:分配给静态系统用户,手动预设,传统服务账户,通常不自动分配;UID 100-999
:分配给动态系统用户 (system users),系统服务用户,由系统或软件包自动创建,不允许登录;UID 1000+
:分配给普通用户,手动创建的用户,允许登录。
四、管理本地组账户
1、创建组
groupadd -g GID groupname
:创建GID为GID的组,组名为groupname,若省略 -g GID ,则会自动分配GID;groupadd -r groupname
:创建系统组。
2、修改组
- groupmod -n newname groupname:更改组名;
- groupmod -g GID groupname:更改GID。
3、删除组
groupdel groupname
:删除组。- 如果该group为主组,则无法删除。
4、更改组成员
usermod -g groupname username
:更改用户主要组;usermod -aG groupname username
:将用户添加到 groupname 这个补充组。
5、比较主要组和补充组

可在 /etc/passwd
文件中查看主要组 ;
可在 /etc/group
文件中查看用户补充组。
6、临时更改主要组
newgrp groupname
:将主要组切换为groupname组。
五、管理用户密码
1、影子密码和密码策略
- 加密密码最初储存在全局可读的 /etc/passwd 文件中,后来由于常见的字典式攻击,将加密后的哈希密码转移至
/etc/shadow
文件,该文件只有root用户可以读取。
2、密码验证
用户在登录时,使用salt加密用户passwd,然后进行哈希,之后进行比较
这种方式允许系统判断用户是否键入了正确的密码,同时又不以用于登录的密码形式来存储密码。
3、配置密码期限

- 使用 chage 命令修改密码生命周期。
chage -m 0 -M 90 -W 7 -I 14 username
:
-m :最短期限为0天
-M:最长期限为90天
-W:警告期为7天
-I : 不活动期为14天 - 通过编辑
/etc/login.defs
文件中密码期限配置项来设置密码生命周期。
4、限制访问
usremod -L username
:锁定用户账户,该用户将无法登录系统;usermod -U username
:解锁用户或者重新启用账户的访问权限。
5、非登录shell
usermod -s /sbin/nologin username
:将用户的登录shell设置为nologin shell。
六、问答
1、Linux 对用户的管理会涉及到哪三个系统文件,请给出各自的名称并简述其条目结构。
- /etc/passwd:存储用户的基本信息;
bash
用户名:密码占位符:UID:GID:注释:主目录:默认shell
- /etc/shadow:存储用户的加密密码和密码策略;
bash
用户名:加密密码:最后更改日期:最小天数:最大天数:警告期:禁用期:过期时间:保留字段
- /etc/group:存储组信息与组成员关系。
bash
组名:密码占位符:GID:组成员列表(逗号分隔)
2、用户的主组和辅助组有什么区别?

3、在 shell 切换用户时,su user 和 su -- user 这两个命令有什么区别?
su user
:切换用户,但保留当前环境变量
(尤其是 PATH);su - user
:切换用户并加载目标用户的登录环境,相当于真正登录该用户
。
4、说明 sudo 命令作用,su、sudo 和 sudo -i 有什么区别?
-
sudo 作用:
允许授权用户以其他用户身份执行命令 ,默认是以 root 身份运行。
权限由
/etc/sudoers
控制。 -
区别:
5、怎么创建用户,怎么彻底删除用户(包含用户数据)?
- 创建用户:
useradd username
; - 彻底删除用户:
userdel -r username
。
6、怎么创建组,怎么添加组成员?能否删除主组,说出原因。
-
创建组:
groupadd groupname
; -
添加组成员:
设置主组:
usermod -g groupname username
;添加到补充组:
usermod -aG groupname username
; -
不能删除主组
原因:主组是用户身份的重要组成部分,直接删除会导致系统一致性问题和权限错乱 ,因此必须先切换用户的主组。
7、请解释 nologin shell,在什么场合会用到。
- 系统服务账户:比如 nobody、daemon、www-data
- 限制某些用户无法登录系统:例如仅用于 FTP、数据库、系统守护进程