linux账号安全核心是最小权限原则,需清理非必要账号、限制登录时段与会话数、用ACL精细控制文件权限、以sudo替代su并审计日志。

Linux账号安全和访问权限控制,核心是“最小权限原则”——只给用户完成任务必需的权限,不多也不少。实际操作中,重点不在功能堆砌,而在策略清晰、配置可靠、日志可查。
清理与锁定非必要账号
系统默认会创建大量服务账户(如daemon、ftp、mail等),它们通常不需要登录能力。放任不管可能成为攻击入口。
- 把非交互式用户的shell设为/sbin/nologin或/usr/sbin/nologin: usermod -s /sbin/nologin username
- 长期不用的账号直接锁定密码:passwd -l username(会在/etc/shadow中密码字段前加!)
- 确认关键账号文件不可被普通用户修改:chattr +i /etc/passwd /etc/shadow(需root执行;解锁用chattr -i)
限制用户能做什么:从登录到命令执行
光管“能不能登”,不如管“登上去能干啥”。这需要分层控制:
- 登录时段控制:编辑/etc/security/time.conf,例如
sshd;*;devuser;!Al0900-1700 → devuser只能在工作时间通过SSH登录 - 并发会话数限制:在/etc/security/limits.conf中添加
devuser hard maxsyslogins 2 → 同一用户最多2个活跃登录会话 - 命令历史与自动登出:
设置HISTSIZE=50和TMOUT=600(写入/etc/profile),让终端闲置10分钟自动退出,且不保留过多命令记录
精细控制目录与文件访问
传统rwx权限太粗,尤其多人协作时。ACL(访问控制列表)是更实用的选择:
- 启用ACL支持(多数现代发行版默认开启),检查挂载选项:
mount | grep “$(df . | tail -1 | awk ‘{print $1}’)” | grep acl - 给特定用户授予某目录的读写权限,不影响原属组设置:
setfacl -m u:reporter:r-x /var/log/app/ - 设默认ACL,让该目录下新建文件自动继承权限:
setfacl -d -m u:reporter:r-x /var/log/app/
用sudo替代su,明确授权边界
su容易导致权限泛滥,sudo则可精确到命令级,并全程留痕:
- 禁止普通用户直接su到root,只允许通过sudo执行指定操作
- 用visudo编辑/etc/sudoers,例如:
%ops ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /bin/journalctl -u nginx - 所有sudo操作默认记录在/var/log/secure或/var/log/auth.log,定期检查异常调用
基本上就这些。不复杂但容易忽略的是:每改一项,都建议先在测试账号上验证,再批量应用;所有关键配置变更,最好配合auditd或至少开启PAM日志,确保行为可追溯。