Ubuntu Syslog权限设置问题
小樊
47
2025-11-15 08:14:31
Ubuntu Syslog 权限设置与排错指南
一 核心原则与推荐权限
- 运行身份与目录权限:rsyslog 通常以syslog用户运行,日志目录**/var/log应允许该用户写入。推荐将/var/log的所属组设为syslog并开启组写:chmod g+w /var/log;ls -ld /var/log 应看到类似 drwxrwxr-x … root syslog。若/var/log 属于 root:root,rsyslog 可能无法自动创建如/var/log/auth.log**等文件。
- 日志文件默认权限:建议统一为640,属主root:adm(或在某些配置下为syslog:adm),以兼顾安全与运维查看。示例:chmod 640 /var/log/syslog;chown root:adm /var/log/syslog。
- 自定义路径:若把日志写入自定义目录(如/var/log/myapp),需确保该目录对syslog可写(所属组为syslog且组写开启),否则轮转或写入会失败。
二 常见症状与快速修复
- 症状1:新日志文件无法创建(如**/var/log/auth.log缺失或为空)
检查/var/log目录:ls -ld /var/log;若不是root:syslog**,执行:sudo chown root:syslog /var/log && sudo chmod g+w /var/log;随后重启 rsyslog:sudo systemctl restart rsyslog。
- 症状2:已有日志文件权限错误(Permission denied)
统一修正:sudo chmod 640 /var/log/syslog;sudo chown root:adm /var/log/syslog;再重启服务。
- 症状3:自定义目录写入失败
确保目录对syslog可写:sudo chown -R syslog:syslog /var/log/myapp && sudo chmod g+w /var/log/myapp;必要时在 rsyslog 配置中使用模板与目录预建。
- 症状4:修改后仍被“刷回”
不要仅手工改文件/目录权限,需同时校正 rsyslog 的默认权限模板($FileOwner、$FileGroup、$FileCreateMode、$DirCreateMode、$Umask、$PrivDropToUser、$PrivDropToGroup),否则重启后会被重置。
三 关键配置文件与示例
- /etc/rsyslog.conf(全局权限模板与运行身份)
- 建议保留或设置:
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
- 如需启用**/var/log/messages**,添加规则:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
- 语法检查:rsyslogd -f /etc/rsyslog.conf -N1(无输出即正常)。
- /etc/rsyslog.d/50-default.conf(常见日志路由)
- 典型行:.;auth,authpriv.none -/var/log/syslog(- 表示异步写入,提高性能)。
- /etc/logrotate.d/rsyslog(轮转与权限保持)
- 推荐为系统日志启用轮转与“以正确身份执行”:
/var/log/syslog {
rotate 7
daily
missingok
notifempty
delaycompress
compress
size 500K
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
- 若轮转后权限异常,可在块内加入:su root syslog(以 root 身份、syslog 组执行轮转动作,确保新文件属主/属组正确)。
四 验证与排错步骤
- 服务状态与语法:
- systemctl status rsyslog(应为 active/running)
- rsyslogd -f /etc/rsyslog.conf -N1(语法校验)
- 目录与文件权限核对:
- ls -ld /var/log(期望:root syslog,权限含 g+w)
- ls -l /var/log/{syslog,auth.log,messages}(期望:root adm,640)
- 实时观察与触发:
- tail -f /var/log/syslog(观察新日志是否写入)
- logger “test from $(hostname)”(产生一条测试日志)
- 手动触发轮转:logrotate -f /etc/logrotate.d/rsyslog;检查新旧文件权限是否一致。