systemd 初始化脚本的文件权限

tar*_*yte 7 ubuntu systemd

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

目前默认情况是:

-rw-rw-r-- 1 me me  225 Dec 20 21:57 my.service
Run Code Online (Sandbox Code Playgroud)

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

lrwxrwxrwx  1 root root   40 Dec 20 21:31 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service
Run Code Online (Sandbox Code Playgroud)

use*_*686 6

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

\n\n

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

\n\n

非 root 用户应该可以读取这些文件吗?

\n\n

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

\n\n

非 root 用户是否可以写入这些文件?

\n\n

仅当用户完全受信任时(即系统管理员)。想想他们可以实现什么:他们可以将任意命令放入单元文件中,重新启动系统,并且这些命令将以完全root权限运行。

\n\n

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

\n\n

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

\n\n

它们是系统配置文件,位于/etc,因此 root 是自然的选择。(\xe2\x80\x93 并不重要,但参阅前面有关可写性的部分。)

\n\n

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

\n\n

他们不是。您的示例是符号链接,而不是文件。符号链接根本没有自己的权限 \xe2\x80\x93 系统始终返回相同的虚拟值,但从不将其用于任何用途。(顺便说一下,rwx rwx rwx是0777,而不是0755。)

\n\n

如果您查看或中的所有常规文件,您会发现几乎所有文件都具有权限 0644 ( )。/etc/systemd/system/usr/lib/systemd/systemrw- r-- r--

\n