ToolkitX
知识库工具箱

用户与组管理进阶

PAM, ACL, umask 高级权限控制

25min·高级

01. 用户管理进阶——useradd / usermod

基础的用户管理你可能知道 useradd 和 passwd,但其实还有更多玩法。创建用户不光设个密码,还得指定家目录、shell、所属组:
bash
useradd -m -s /bin/bash -G sudo,docker john    # 建用户 + 家目录 + bash + 附加组
userdel -r john                         # 删用户 + 删除他的家目录
usermod -aG docker john                 # 把 john 加入 docker 组
usermod -s /bin/zsh john                # 改 john 的默认 shell
usermod -L john                         # 锁定用户(禁止登录)
usermod -U john                         # 解锁

passwd -l john                          # 锁定密码
passwd -S john                          # 查看用户密码状态
chage -l john                           # 看密码过期策略
chage -M 90 john                        # 密码 90 天过期

02. 组管理

用户组就是「权限的批量管理」。把一群用户放进一个组,然后给这个组设权限,组里的人自动继承。比一个个改方便多了:
bash
groupadd dev                    # 新建 dev 组
groupmod -n developers dev      # 改名为 developers
groupdel dev                    # 删组

usermod -aG dev john            # 把 john 加入 dev 组
gpasswd -d john dev             # 把 john 移出 dev 组
groups john                     # 看 john 在哪些组里
getent group dev                # 看 dev 组里有谁

03. ACL——细粒度权限

传统的 rwx 权限太粗了——只有主人、组、其他人三级。但现实需求可能是「这个文件让 alice 能写、bob 只读、其他人看不着」。这时候 ACL(Access Control List)就派上用场了:
bash
# 先确认文件系统支持 ACL
mount | grep acl

getfacl file.txt                    # 查看 ACL 权限
setfacl -m u:alice:rw file.txt      # 给 alice 单独设读写
setfacl -m u:bob:r file.txt         # 给 bob 只读
setfacl -m g:dev:rwx dir/           # 给 dev 组成员全权限
setfacl -x u:alice file.txt         # 删掉 alice 的 ACL
setfacl -b file.txt                 # 清空所有 ACL(回到普通权限)
setfacl -R -m u:alice:rw dir/       # 递归设置
有 ACL 的文件在 ls -l 里权限末尾会显示一个 + 号,看到它就知道这个文件有多余的权限规则。

04. PAM——认证的乐高积木

PAM(Pluggable Authentication Modules)是 Linux 认证系统的核心。你可以理解成「认证流水线」——login、ssh、sudo 这些程序不自己管密码校验,统统交给 PAM 处理。 PAM 让你可以组合各种认证方式:密码、指纹、手机令牌都可以串起来,像乐高一样拼装。配置在 /etc/pam.d/ 目录下:
bash
# /etc/pam.d/ 下的配置文件
ls /etc/pam.d/
common-auth     # 认证方式(密码、密钥等)
common-account  # 账户管理(过期、锁定)
common-session  # 会话管理(登录后做什么)
common-password # 密码策略(复杂度、长度要求)

# 常用 PAM 模块
# pam_tally2.so  - 登录失败N次锁定账户
# pam_limits.so  - 资源限制
# pam_umask.so   - 新文件默认权限
PAM 配置改错可能导致所有人都登录不了。改之前先备份,留一个 root 终端不要关以防万一。

知识测验

1/5正确 0

ACL 和传统权限最大区别?