应收紧日志权限:将auth.log属组改为专用组、chmod 640、配置rsyslog的$filecreatemode和模板绑定、logrotate中显式设create 640,并避免将用户加入adm或systemd-journal组。

日志文件默认权限太松,/var/log 下的 auth.log 被普通用户读取怎么办
Linux 默认把很多日志(比如 auth.log、secure)设为 640 或 644,只要用户在 syslog 或 adm 组里就能读——而很多发行版会把普通用户自动加进 adm 组。这不是疏忽,是历史兼容性妥协,但对安全敏感环境就是隐患。
实操建议:
- 检查当前权限:
ls -l /var/log/auth.log,确认属组和权限位 - 移出无关用户:用
sudo gpasswd -d $USER adm把不需要查日志的用户踢出adm组 - 收紧日志属组:把
auth.log所属组改为专用组(如logview),再只加授权人员进该组 - 禁止全局可读:运行
sudo chmod 640 /var/log/auth.log,并确保rsyslog配置里有$FileCreateMode 0640
rsyslog 的 $FileCreateMode 和 FileGroup 不生效?
改完配置重启 rsyslog,新日志权限还是不对,大概率是模板没绑定或规则顺序错了。rsyslog 按配置文件从上到下匹配,靠前的通用规则会覆盖后面精细设置。
实操建议:
- 确认模板定义在
module(load="imfile")之前,且用template(name="SecureLogTemplate" ...)显式声明 - 在日志规则行末尾显式引用模板:
*.* /var/log/auth.log;SecureLogTemplate -
FileGroup只对文件创建生效,已有文件需手动chgrp;$FileCreateMode不影响rotate后的新文件,得同步配logrotate的create指令 - 测试是否加载成功:
sudo rsyslogd -N1检查语法,sudo rsyslogd -f /etc/rsyslog.conf -d 2>&1 | grep -i template看模板是否被识别
logrotate 轮转后日志权限变回 644 怎么办
logrotate 默认用 create 644 root root,哪怕原文件是 640,轮转一搞就“回退”。更麻烦的是,它不继承 rsyslog 设置,也不管你之前手动 chmod 过什么。
WOC-YII是rschome.com基于yii framework 1.1.8框架所开发的一款开源简易站群管理系统。它的功能与WOC完全一样。目前版本为V1.3,新版本正在开发中,同时欢迎大家参与到开发中来! WOC-YII 1.3在1.2的基础上优化了登录系统(密码加密),优化了权限控制系统,新增seo管理功能,新增自动安装向导! 程序框架:yiiframework1.1.8 配置文件:p
实操建议:
- 在对应配置段(如
/etc/logrotate.d/rsyslog)里显式写:create 640 syslog adm - 避免用
sharedscripts时权限被脚本干扰——如果 postrotate 里调了chmod,要确保它跑在create之后 - 注意用户上下文:
create的 owner/group 是以 logrotate 进程身份(通常是 root)创建的,但若配置了su指令,权限行为会变化 - 验证方式:
sudo logrotate -f /etc/logrotate.d/rsyslog && ls -l /var/log/auth.log*,看新文件权限是否符合预期
用 journalctl 查日志时,普通用户看到 Access denied 却又无法 sudo,怎么安全放行
systemd-journald 默认只允许 root 和 systemd-journal 组成员读全部日志,但直接加用户进这个组等于给了完整日志读取权——包括内核、服务、甚至其他用户的命令行参数,风险远超 auth.log。
实操建议:
- 别加进
systemd-journal组,改用journalctl --user查当前用户自己的服务日志(需服务启用User=) - 对必须共享的日志,用
StandardOutput=journal+console+StandardError=journal+console让关键服务日志同时落盘,再单独控制落盘文件权限 - 如真需有限制的
journalctl访问,用sudoers限定命令参数:%auditteam ALL=(root) /usr/bin/journalctl -u sshd -n 100 - 注意:
journalctl --since "2 hours ago"这类时间过滤不会降低权限要求,仍需完整 journal 访问权
日志权限不是单点开关,rsyslog、logrotate、journald、文件系统 ACL、用户组策略全在互相覆盖。最容易被忽略的是 logrotate 的 create 指令和 rsyslog 的模板绑定——这两处不动,其他地方调得再细也白搭。









