启动时重置 /var/log 的权限

启动时重置 /var/log 的权限

我已经测试并确认,重新启动后,权限将重置/var/log回下面列出的每个发行版/版本的默认值。问题是,为什么?

  • 操作系统7
  • 乌班图 >= 15.04
  • Debian 8/9

据我所知,CentOS 7 和 Debian 8/9 的默认权限是755, root:root。 Ubuntu 15.04+ 的默认权限是775, root:syslog。如果我从 PPA 安装上游 rsyslog,则默认权限将变为755(在 Ubuntu 16.04 上确认,大概也适用于 15.04 和 16.04 之间的 Ubuntu 版本)。

任何更改/var/log默认权限的尝试都会导致重置(大概是在下次启动时)。我在相关帖子上读到有人的建议,可能是 rsyslog 设置在工作,但我切换了这些设置以符合我的期望,甚至使用了一些不起作用的设置(例如 700),结果仍然相同:重置回默认值。

然后,我卸载了 rsyslog(一个安装了库存 rsyslog 的虚拟机,另一个安装了上游 rsyslog 的虚拟机),并且权限仍然被重置,因此显然重置工作不是由 rsyslog 完成的。

这是 systemd 特有的东西吗?这是一个我实际上可以覆盖并在重新启动之间“坚持”的设置吗?

预先感谢您提供的任何帮助。

聚苯乙烯

我的测试是使用 LVM 对发行版进行简单安装,但使用一个卷,试图排除 lv 的安装选项存在问题。

答案1

我仍在深入研究细节,但看起来这些文件/var/log在启动时的权限管理中发挥了作用:

  • /usr/lib/tmpfiles.d/var.conf
  • /usr/lib/tmpfiles.d/00rsyslog.conf

grep -ri '/var/log' /var/log讽刺的是,当我在 Ubuntu 16.04 机器上运行并看到以下消息时,我发现了它们:

./syslog.1:Jul 9 21:18:15 ubuntu-virtual-machine systemd-tmpfiles[616]: [/usr/lib/tmpfiles.d/var.conf:14] 路径“/var/log”的重复行”,无视。

我查看了该文件并发现了这个:

# 该文件是 systemd 的一部分。
#
# systemd 是免费软件;您可以重新分发它和/或修改它
# 根据 GNU Lesser General Public License 的条款
# 自由软件基金会;许可证版本 2.1,或
#(由您选择)任何更高版本。

# 详细信息请参见 tmpfiles.d(5)

q /var 0755 - - -

L /var/run - - - - ../run

d /var/log 0755 - - -
f /var/log/wtmp 0664 根 utmp -
f /var/log/btmp 0600 根 utmp -

d /var/cache 0755 - - -

d /var/lib 0755 - - -

d /var/spool 0755 - - -

我开始调整该行的值d /var/log 0755 - - -,但我的努力没有明显的变化,我在该目录中进一步查看并找到了该/usr/lib/tmpfiles.d/00rsyslog.conf文件。

在该文件中:

# 覆盖 systemd 的默认 tmpfiles.d/var.conf 以使 /var/log 可写
# syslog 组,以便 rsyslog 可以作为用户运行。
# 详细信息请参见 tmpfiles.d(5)。

# 类型路径模式 UID GID 年龄参数
d /var/log 0775 根系统日志 -

root@ubuntu-virtual-machine:/usr/lib/tmpfiles.d# dpkg -S /usr/lib/tmpfiles.d/00rsyslog.conf

rsyslog:/usr/lib/tmpfiles.d/00rsyslog.conf

因此,rsyslog 包提供了一个conf 包含文件,该文件尝试覆盖conf 文件中设置的值tmpfiles.d/var.conf

结果是,当我卸载 rsyslog 时,tmpfiles.d/var.confconf 文件设置适用,在本例中为0755.

我需要进一步研究是否tmpfiles.d仅适用于软件包维护者,或者系统管理员是否也需要管理该区域内的文件。

编辑:

事实证明,共有三个目录,第一个目录具有最高优先级(供管理员使用以覆盖其他两个目录的设置):

  1. /etc/tmpfiles.d/*.conf
  2. /run/tmpfiles.d/*.conf
  3. /usr/lib/tmpfiles.d/*.conf

更多信息:

相关内容