Linux权限隔离需五层联动:一、最小权限专用用户;二、主/附加组资源归属隔离;三、umask与ACL细化访问控制;四、sudoers命令白名单限制;五、SELinux/AppArmor进程级约束。

核心资产访问隔离不是靠一两个命令就能搞定的事,关键在于把权限模型的每一层都用对、用实。它不是堆叠限制,而是让每个环节各司其职:用户身份明确、资源归属清晰、默认行为可控、操作边界可管、进程行为可信。
按职能建专用用户,不共享、不越权
别让开发、运维、审计共用一个账号。每个角色对应一个独立用户,且只给它干本职工作所需的最小权限。
- 创建无登录能力的系统用户(如服务账户):
sudo useradd -r -s /sbin/nologin dbbackup - 交互式用户禁用密码登录,强制使用 SSH 密钥:
sudo passwd -l deployer,再配好~/.ssh/authorized_keys - 避免直接 sudo su - 或切换到 root;日常操作一律用普通用户+白名单 sudo 执行
用主组定归属,用附加组控协作
Linux 的组机制是隔离与共享的平衡点。主组决定文件默认归属,附加组决定“谁能额外访问”——两者必须分开设计。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 为不同业务线建独立组:
sudo groupadd finance-app、sudo groupadd hr-api - 用户主组设为个人组(如
alice主组就是alice),不直接归属业务组 - 通过
usermod -aG把用户加入所需附加组,比如:sudo usermod -aG finance-app,auditgroup alice - 对敏感目录启用 setgid(
chmod g+s),确保新文件自动继承目录所属组,避免手动 chgrp 漏洞
管住新建文件的默认权限,从源头收紧
很多越权问题源于“新建即开放”。umask 是第一道防线,ACL 是精准补刀。
- 为高敏用户设置严格 umask(如
007):在~/.bashrc中写umask 007,让新建文件默认为660、目录为770 - 对日志、配置等关键路径启用 ACL 细粒度授权:
sudo setfacl -m u:auditor:r /etc/app/config.yaml - 注意路径遍历风险:上级目录也要设好权限(如
/var/log/app是750,那/var/log也得是750,否则别人可能绕过)
用 sudoers 白名单锁定操作动作
不给 shell,只给脚本;不限范围,只限动作。这是防止误操作和横向移动的关键一环。
- 用
visudo -f /etc/sudoers.d/新增策略文件,避免直接改主配置 - 规则示例:
deployer ALL=(www-data) NOPASSWD: /usr/local/bin/deploy.sh—— 表示 deployer 只能以 www-data 身份运行这个脚本 - 禁用 shell 逃逸:
Defaults:deployer !shell_noisy和!requiretty配合NOEXEC选项更稳妥 - 脚本本身也要做校验:检查输入参数、验证目标路径、记录执行日志
不复杂但容易忽略:权限隔离真正生效,靠的是五层机制联动——用户身份、组归属、默认掩码、命令边界、进程约束。单点加固容易被绕过,整套跑通才叫落地。

















