目录
[1. Linux 对用户和组的管理涉及三个重要的系统文件,请给出各自的名称并简述其条目结构。](#1. Linux 对用户和组的管理涉及三个重要的系统文件,请给出各自的名称并简述其条目结构。)
[2. 为什么要有组的概念?用户的主要组和补充组(辅助组)有什么区别?](#2. 为什么要有组的概念?用户的主要组和补充组(辅助组)有什么区别?)
[3. 在 shell 切换用户时, su user 和 su - user 这两个命令有什么区别?](#3. 在 shell 切换用户时, su user 和 su - user 这两个命令有什么区别?)
[4. sudo 命令有什么作用?](#4. sudo 命令有什么作用?)
[5. 普通用户要使用sudo命令需要满足什么条件?](#5. 普通用户要使用sudo命令需要满足什么条件?)
[6. 说明su、sudo和sudo -i 的区别。](#6. 说明su、sudo和sudo -i 的区别。)
[7. 从命令行使用userdel删除用户时加-r选项和不加-r选项有什么区别?](#7. 从命令行使用userdel删除用户时加-r选项和不加-r选项有什么区别?)
[8. 如何添加组成员?](#8. 如何添加组成员?)
[9. 能否删除主组,为什么?](#9. 能否删除主组,为什么?)
[10. 配置密码期限有几种方法,分别说明。](#10. 配置密码期限有几种方法,分别说明。)
[11. nologin shell 在什么时候会用到?](#11. nologin shell 在什么时候会用到?)
1. Linux 对用户和组的管理涉及三个重要的系统文件,请给出各自的名称并简述其条目结构。
三个重要系统文件如下:
(1)/etc/passwd :存储用户账户信息。每行一个用户,由7个冒号分隔的字段组成:用户名:密码占位符:UID:GID:注释:家目录:登录Shell(密码实际存储在 /etc/shadow 中)。
(2)/etc/shadow :存储用户密码及安全策略。每行一个用户,由9个冒号分隔的字段组成:用户名:加密密码:上次修改时间:最小天数:最大天数:警告天数:不活动天数:过期时间:保留字段。
(3)/etc/group :存储组信息。每行一个组,由4个冒号分隔的字段组成:组名:密码占位符:GID:组成员列表(成员列表用逗号分隔)。
2. 为什么要有组的概念?用户的主要组和补充组(辅助组)有什么区别?
为了方便权限管理,将多个用户归为一组,可以统一授予该组对文件或目录的访问权限,避免逐个设置用户权限,这就是要有组的概念的原因。
主要组 是用户创建时默认所属的组,每个用户只能属于一个主组。
补充组 是用户被额外添加到的其他组,一个用户可以属于多个补充组,也可以不属于任何补充组。补充组用于授予用户额外的访问权限。
3. 在 shell 切换用户时, su user 和 su - user 这两个命令有什么区别?
| 命令 | 环境变量 | 当前工作目录 | 是否加载目标用户配置文件 |
|---|---|---|---|
su user |
保留原用户的环境变量(如PATH) | 保持原工作目录 | 否(不完全加载) |
su - user |
切换为目标用户的环境变量 | 切换为目标用户的家目录 | 是(执行目标用户的 .bash_profile 等) |
4. sudo 命令有什么作用?
sudo 允许授权用户以其他用户(默认是 root)的身份执行命令,而无需知道目标用户的密码(只需输入自己的密码)。它提供了细粒度的权限控制,可记录命令执行日志,是 Linux 系统安全管理的核心工具。
5. 普通用户要使用sudo命令需要满足什么条件?
普通用户需要被授权。具体条件:用户在**/etc/sudoers** 文件中(或 /etc/sudoers.d/ 目录下的文件中)被配置了相应的权限。通常将用户加入 wheel 组,或使用 visudo 命令添加类似username ALL=(ALL) ALL 的条目。
6. 说明su、sudo和sudo -i 的区别。
| 命令 | 作用 | 是否需要目标用户密码 | 环境 |
|---|---|---|---|
su |
切换身份(默认切换到 root,但环境不完整) | 需要目标用户的密码 | 不完整 |
sudo |
以其他用户身份执行单条命令(默认是 root) | 需要当前用户自己的密码 | 继承当前环境 |
sudo -i |
切换到 root 的完整登录 shell(环境完整) | 需要当前用户自己的密码 | 完整切换到 root 环境 |
7. 从命令行使用userdel删除用户时加-r选项和不加-r选项有什么区别?
不加 -r 选项仅删除用户账户,用户的家目录和邮件队列会保留在系统上。
加 -r 选项在删除用户账户的同时,删除用户的家目录和邮件队列。
在删除不再需要的用户时,通常使用 userdel -r 用户名 彻底清理,避免遗留无用文件占用磁盘空间。
8. 如何添加组成员?
使用 usermod 命令添加用户到补充组:
(1)追加到补充组,同时保留原有补充组 :usermod -aG 组名 用户名
注意:-a 必须与 -G 一起使用,否则会覆盖原有补充组
(2)设置主组 :usermod -g 组名 用户名
例如:usermod -aG wheel alice这条命令将 alice 添加到 wheel 组,保留 alice 原有的其他补充组。
9. 能否删除主组,为什么?
不能删除用户的主要组,
原因:每个用户必须有一个主要组,当以某用户创建文件时,文件的所属组就是该用户的主要组,如果强行删除用户的主要组,可能导致系统中该用户创建的大量文件出现 GID 无对应组名的情况,造成权限管理混乱。
正确的做法 是:在删除组之前,先将用户的主要组切换到其他组,确保没有用户以此为默认组后再删除。
10. 配置密码期限有几种方法,分别说明。
配置密码期限一下两种主要方法:
(1)使用 chage 命令
chage -l 用户名:查看当前密码期限设置
chage -M 90 用户名:设置密码最大有效期为90天
chage -m 7 用户名:设置密码最小更改间隔为7天
chage -W 14 用户名:设置密码过期前14天开始警告
chage -E 2025-12-31 用户名:设置账户在指定日期过期
(2)直接编辑 /etc/shadow 文件
修改 /etc/shadow 中对应字段(从第3到第8个字段),需要注意格式。
11. nologin shell 在什么时候会用到?
nologin shell(通常是 /sbin/nologin 或 /usr/sbin/nologin)用于禁止用户登录系统,但用户的其他服务(如 FTP、邮件收取、定时任务)仍然可以正常运行。
常见使用场景:
(1)系统账户:如 apache、bin 等后台服务账户,不需要也不能登录。
(2)专用服务账户:只允许使用 FTP 或邮件服务,不允许 SSH 登录。
(3)临时禁用用户:改成 nologin 快速禁止登录,无需删账户。
(4)安全隔离:限制用户只能执行特定程序(如 sftp、备份脚本),无法获得完整 shell。