systemd init 脚本的文件权限

systemd init 脚本的文件权限

升级到 Ubuntu 16.04LTS 后,我刚刚开始探索 systemd init 脚本。我的文件的所有权和文件权限应该是什么.service

当前默认为:

-rw-rw-r-- 1 me me  225 Dec 20 21:57 my.service

在符号链接到 systemd 目录之后,看起来其他文件都完全打开了(777),甚至是我的:

lrwxrwxrwx  1 root root   40 Dec 20 21:31 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service

答案1

这些文件应该是可执行的吗?

将 systemd 单元视为配置文件,而不是脚本。它们不由内核运行,没有 shebang#!行,因此不需要可执行。(事实上,如果你使它们可执行,systemd 将向系统日志打印警告。)

非 root 用户是否可以读取这些文件?

是的,隐藏内容毫无意义(systemctl无论如何都可以通过它检索)。同样,systemd 会警告那些试图将单元设为非公开的无用尝试。

文件是否应可写非 root 用户?

只有当用户完全受信任(即系统管理员)时才可以。想想他们可以实现什么:他们可以将任意命令放入单元文件中,重新启动系统,然后这些命令将以完全信任的方式运行特权。

因此,如果不受信任的用户可以写入系统 .service 文件,他们很快就能成为 root 用户。

这些文件是否应该归 root 所有?

它们是系统配置文件,位于 中/etc,因此 root 是自然的选择。(这没那么重要——但是请参阅上一节有关可写性的内容。)

其他文件真的“完全开放”吗?

事实并非如此。你的例子是符号链接,不是文件。符号链接根本没有自己的权限——系统始终返回相同的虚拟值,但从不将其用于任何目的。(顺便说一下,rwx rwx rwx是 0777,而不是 0755。)

如果你看看常规的/etc/systemd/system或中的文件/usr/lib/systemd/system,您将看到几乎所有文件都具有权限 0644(rw- r-- r--)。

相关内容