限制普通用户对敏感目录访问的核心是“权限最小化+精准控制+可审计”,需结合基础权限收紧、acl单用户授权、chroot隔离环境及auditd操作审计四层机制协同实施。

限制普通用户对敏感目录的访问,核心是“权限最小化 + 精准控制 + 可审计”。不能只靠隐藏路径或默认权限,必须结合基础权限、ACL、chroot 或 SELinux 等多层机制,才能真正防住越权读写。
一、收紧基础权限,堵住默认漏洞
很多风险源于宽松的初始权限。先检查并修正关键目录的属主和权限:
-
/etc:应为
drwxr-xr-x(755),属主 root:root;其中/etc/shadow必须是-rw-------(600) -
/root:必须设为
drwx------(700),禁止其他用户进入或列出内容 -
/var/log:建议
drwxr-x---(750),属组设为syslog或adm,既允许日志服务写入,又阻止普通用户访问 - 执行检查:
ls -ld /etc /root /var/log;批量修复:sudo chmod 700 /root && sudo chmod 750 /var/log
二、用 ACL 实现单用户级精细授权
当标准 user/group/others 模型不够用时(比如要给某运维员读/etc/ssh,但不让他碰/etc/passwd),ACL 是最实用的选择:
- 确认文件系统启用 ACL:
mount | grep "$(df . | awk 'NR==2 {print $1}')" | grep acl,无输出则需在/etc/fstab对应分区行加acl参数并重挂载 - 给特定用户加读权限:
sudo setfacl -m u:opsuser:r /etc/ssh/sshd_config - 明确禁止某用户访问:
sudo setfacl -m u:devuser:--- /etc/shadow - 验证结果:
getfacl /etc/ssh/sshd_config,注意末尾的+表示 ACL 生效
三、用 chroot 隔离非可信操作环境
若用户只需查看日志或运行某个工具,且不允许接触系统任何其他部分,chroot 是最彻底的隔离方式:
- 创建隔离根目录:
sudo mkdir -p /chroot/restricted - 复制必要命令及依赖库(如
/bin/bash、/lib/x86_64-linux-gnu/等),可用ldd辅助查依赖 - 创建受限用户:
sudo useradd -d /chroot/restricted/home/user1 -s /bin/bash user1 - 用
chroot启动 shell:sudo chroot /chroot/restricted /bin/bash - 配合
sshd_config的ChrootDirectory选项,可实现 SFTP 用户自动进入 chroot 环境
四、启用 auditd 审计 + 日志告警,做到操作可追溯
权限设得再严,也需知道“谁在什么时候做了什么”。auditd 是内核级审计工具,不可替代:
- 添加监控规则(写入
/etc/audit/rules.d/sensitive-dir.rules):-w /etc -p wa -k etc_access-w /root -p wa -k root_access-w /var/log -p wa -k log_access
(-p wa表示监控写入和属性修改;-k便于后续检索) - 重载规则:
sudo augenrules --load - 实时查事件:
sudo ausearch -k etc_access | aureport -f -i - 配置日志轮转:
max_log_file = 10、num_logs = 5、max_log_file_action = rotate(在/etc/audit/auditd.conf中)











