有人可以看一下这个,看看我是否做错了什么?
我正在运行 RockyLinux 并尝试设置系统日志服务器。它与附加了额外 2TB 数据驱动器的 Azure VM 一起运行。
我已将驱动器安装在 Rocky 中并进行了修改fstab
,确认其在重新启动后存在,并且我可以对其进行写入。
Rsyslog 已全部设置和配置,如果我保留默认设置并允许将日志发送到 /var/log,则工作正常,但一旦我将其指向我的数据驱动器,我就会收到权限错误。
May 24 11:30:20 MyServer rsyslogd[4315]: error during config processing: Could not open dynamic file '/datadrive/syslogs/MyServer/rsyslogd.log' [state -3000] - discarding message [v8>
May 24 11:30:20 MyServer rsyslogd[4315]: error during config processing: omfile: creating parent directories for file '/datadrive/syslogs/MyServer/rsyslogd.log' failed: Permission denied
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 1.6G 148M 1.4G 10% /run
/dev/sda3 7.9G 1.8G 6.1G 23% /
/dev/sda2 994M 430M 564M 44% /boot
/dev/sda1 100M 7.0M 93M 7% /boot/efi
/dev/sdb1 16G 28K 15G 1% /mnt
tmpfs 769M 0 769M 0% /run/user/1000
/dev/sdc1 2.0T 15G 2.0T 1% /datadrive
并且两个目录具有相同的权限和所有者
[myroot@MyServer log]$ pwd
/var/log
.......
drwx------. 2 root root 31 May 24 11:09 remote-device
[myroot@MyServer /]$ pwd
/
.....
drwx------. 3 root root 21 May 24 10:03 datadrive
我唯一注意到的是,当我尝试进入数据驱动器cd /datadrive
但sudo cd /datadrive
不起作用时,我必须sudo su
在将目录更改为 /datadrive 之前发出问题
这可能是导致问题的原因吗?任何想法将不胜感激。
答案1
我相信你的问题是 ACL,可能是由 AppArmor 控制的。
不过,首先,为了将来阅读此答案的其他人的利益,您的日志权限是非标准的。运行日志记录是不正常的root
- 通常这会在syslog
属于adm
组的用户下发生。因此,要准备自定义日志位置,您通常需要确保所需目录可由syslog
组写入。如果您想继续使用,您可以亲自跳过下面的chgrp
和命令,但其他人将需要它们。chmod
root
1. 配置
更新/etc/apparmor.d/usr.sbin.rsyslogd
并在第一行下方添加第二行:
/var/log/** rw,
/datadrive/** rw,
第一行是默认位置,它已经存在于您的配置文件中。第二行是您的数据驱动器安装点。其他读者应该修改此位置以适应。
2. 命令
跑步:
sudo chgrp syslog /datadrive/
sudo chmod g+w /datadrive/
sudo systemctl restart apparmor.service
sudo systemctl restart rsyslog.service
第一个命令将数据驱动日志位置的组所有权更改为syslog
,这是标准的,第二个命令将允许该组写入该目录(包括创建文件和子目录)。如果您继续使用,您可以亲自跳过这两个命令root
,但如上所述,具有标准设置的其他用户将需要它们。
然后我们重新启动 AppArmor,以获取配置更改,然后重新启动 rsyslogd。
您现在应该能够通过运行来验证是否成功sudo systemctl status rsyslog
,并且实际上可以通过检查数据是否添加到该/datadrive
位置来验证。
额外的
作为参考,这会将所有权和权限完全重置为正常默认值,即总体更改而不是上面列出的特定手术更改:
sudo chown root:syslog /datadrive/
sudo chmod 775 /datadrive/
并且,它是可能的(但不太可能)您可能需要按照这些方式运行一些东西来专门控制 ACL - 但由于 Rocky Linux 似乎使用 AppArmor,这是最有可能的罪魁祸首:
sudo setfacl -m user:syslog:rwx /datadrive/
请注意,我不是 Rocky Linux 用户,但这些是我在 Ubuntu/Debian 上必须遵循的步骤,因此我预计原因和解决方案是相同的,因为两者都使用 AppArmor。
作为更广泛的观察,如果您修改文件位置,则始终值得检查任何标准系统服务的 AppArmor 限制,因为安装了 AppArmor 的系统通常会为此类进程定义严格的安全控制。