【RH124 问答题】第 6 章 管理本地用户和组
目录
- Linux 对用户和组的管理涉及三个重要的系统文件,请给出各自的名称并简述其条目结构。
- 为什么要有组的概念?用户的主要组和补充组(辅助组)有什么区别?
- 在 shell 切换用户时, su user 和 su - user 这两个命令有什么区别?
- sudo 命令有什么作用?
- 普通用户要使用 sudo 命令需要满足什么条件?
- 说明 su、sudo 和 sudo -i 的区别。
- 从命令行使用 userdel 删除用户时加-r 选项和不加-r 选项有什么区别?
- 如何添加组成员?
- 能否删除主组,为什么?
- 配置密码期限有几种方法,分别说明。
- nologin shell 在什么时候会用到?
Linux 对用户和组的管理涉及三个重要的系统文件,请给出各自的名称并简述其条目结构。
-
/etc/passwd
用于存储用户的基本信息
每一行表示一个用户账号,字段用冒号:
分隔,格式如下:
用户名:密码占位符:用户ID(uid):主组ID(gid):用户描述:主目录:默认shell
如:
alice:x:1001:1001:Alice:/home/alice:/bin/bash
-
/etc/shadow
保存用户的加密密码以及密码策略(如过期时间、修改时间等)
每一行对应一个用户,字段用:
分隔,格式如下:
用户名:加密密码:最近修改日期:最小间隔:最大间隔:警告期:禁用期:账号过期:保留
如:
alice:$6$abc...xyz:19345:0:99999:7:::
-
/etc/group
存储组信息,用于定义系统中的各个用户组
每一行代表一个组:
组名:密码占位符:GID:组内用户列表
如:
developers:x:1002:alice,bob
为什么要有组的概念?用户的主要组和补充组(辅助组)有什么区别?
组提供一种逻辑分组机制,便于管理员集中管理用户权限,实现资源共享和访问控制,避免逐个设置权限,提高效率和灵活性。
主要组:用户登录和创建文件时默认所属的组,定义在 /etc/passwd
中,每个用户只能属于一个主组。
补充组:用户附加所属的组,定义在 /etc/group
中,一个用户可以属于多个补充组,使用户能够访问不属于其主要组的资源。
在 shell 切换用户时, su user 和 su - user 这两个命令有什么区别?
在 shell 中,su user
和 su - user
的主要区别在于是否加载目标用户的登录环境:
-
su user
:切换到目标用户,但不加载其登录环境(非登录式 shell)。当前环境变量、路径设置等仍保留原用户的设置。 -
su - user
:切换到目标用户,并加载其完整登录环境(登录式 shell),相当于重新登录该用户。会切换工作目录为目标用户的主目录,并加载其配置文件(如.bash_profile
)。
sudo 命令有什么作用?
sudo命令用于普通用户临时提升权限。
普通用户要使用 sudo 命令需要满足什么条件?
方法一:将用户添加到 wheel 组
-
执行命令:
usermod -aG wheel username
-
确认
/etc/sudoers
文件中%wheel ALL=(ALL) ALL
这一行没有被注释(使用visudo
编辑) -
用户重新登录后即可使用 sudo。
方法二:直接在 sudoers 文件中授权用户
-
使用
visudo
编辑 sudoers 文件 -
添加一行:
username ALL=(ALL) ALL
-
保存退出后,用户重新登录即可使用 sudo。
说明 su、sudo 和 sudo -i 的区别。
su
用来切换用户,需要输入输入目标用户密码。su -
会加载目标用户的完整登录环境,相当于登录。
sudo
以 root 权限执行单条命令,输入当前用户密码,不切换用户环境。
sudo -i
是使用sudo提升权限,使用当前用户的密码,并以root用户身份进入新的shell会话,提供完整的 root 登录 shell。
从命令行使用 userdel 删除用户时加-r 选项和不加-r 选项有什么区别?
不加 -r
选项时,只从 /etc/passwd 等文件中删除用户信息,保留用户主目录和文件。
加上 -r
选项时,除了删除用户信息,还会删除用户的主目录及其所有相关文件。
如何添加组成员?
用 usermod -aG 组名 用户名
添加组成员。
这样可以把指定的用户添加到某个组中,同时保留用户已有的其他组,不会覆盖之前的组信息。
能否删除主组,为什么?
不能删除主组。删除组前必须确保没有文件或目录属于该组,且没有用户的主组是该组。如果有一个用户账户属于该组的话就无法删除该组。
配置密码期限有几种方法,分别说明。
配置密码期限的方法有三种:
- 使用
chage
命令设置密码期限:
-d
设置上次修改密码的时间-m
设置密码的最短使用期限-M
设置密码的最长期限-W
设置密码过期前的警告周期-I
设置密码过期后的失效期限
如:
chage -M 90 username 设置密码最长使用期限为90天。
- 修改
/etc/login.defs
文件,设置系统默认密码策略,例如:
PASS_MAX_DAYS
(最大期限)PASS_MIN_DAYS
(最小期限)PASS_WARN_AGE
(警告天数)
- 使用
passwd
命令设置当前用户密码策略:
passwd -x
设置最大使用天数passwd -n
设置最小使用天数passwd -w
设置警告天数
nologin shell 在什么时候会用到?
当需要创建不能登录系统的用户时会用到 nologin shell,例如系统服务账号或限制某些用户登录的场景。设置为 nologin
可防止用户通过终端或 SSH 登录系统。