温馨提示×

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 adm640
  • 实时观察与触发:
    • tail -f /var/log/syslog(观察新日志是否写入)
    • logger “test from $(hostname)”(产生一条测试日志)
    • 手动触发轮转:logrotate -f /etc/logrotate.d/rsyslog;检查新旧文件权限是否一致。

0