在设置权限前,需明确Linux权限的三大核心要素:
root);adm);644=所有者读写+组和其他只读)或符号(如u=rw,g=r,o=r)表示。Message文件通常位于/var/log/messages(系统主日志),使用以下命令查看权限:
ls -l /var/log/messages
输出示例:
-rw-r--r-- 1 root root 1234 Jan 1 00:00 /var/log/messages
解读:-rw-r--r--表示所有者(root)有读写权限,组(root)和其他用户仅有读权限。
chmod u+rw,g-w,o-w /var/log/messages
chmod 644 /var/log/messages
chmod 600 /var/log/messages
Message文件需由syslog服务用户(或root)和adm组管理,确保服务可写入:
sudo chown root:adm /var/log/messages # 同时修改所有者和组
# 或分开操作:
sudo chown root /var/log/messages # 修改所有者
sudo chgrp adm /var/log/messages # 修改组
若需为特定用户/组添加权限(如允许admin用户读写),使用ACL:
# 添加用户权限
setfacl -m u:admin:rw /var/log/messages
# 添加组权限
setfacl -m g:dev:rw /var/log/messages
# 删除权限
setfacl -x u:admin /var/log/messages
# 查看ACL列表
getfacl /var/log/messages
SELinux通过上下文限制进程对文件的访问,需确保Message文件的上下文正确:
# 查看当前SELinux上下文
ls -Z /var/log/messages
# 临时修改上下文(重启失效)
sudo chcon -t syslog_file_t /var/log/messages
# 永久修改上下文(需更新策略)
sudo semanage fcontext -a -t syslog_file_t "/var/log/messages"
sudo restorecon -v /var/log/messages
为防止日志文件过大占用磁盘空间,需配置日志轮转(logrotate):
编辑/etc/logrotate.d/rsyslog文件,添加以下内容:
/var/log/messages {
daily # 每天轮转
missingok # 忽略缺失文件
rotate 7 # 保留7天日志
compress # 压缩旧日志
notifempty # 空日志不轮转
create 640 root adm # 新日志的权限和所有者
}
ls -l /var/log/messages # 检查权限和所有者
ls -Z /var/log/messages # 检查SELinux上下文(若启用)
logger命令生成测试日志,确认服务可写入:logger "Test log message for permission check"
tail -f /var/log/messages
777)。syslog服务需要写权限,其他用户无需写权限);chmod 777,防止未授权用户修改或删除日志;cp /var/log/messages /var/log/messages.bak)。