![systemd init 脚本的文件权限](https://linux22.com/image/1549012/systemd%20init%20%E8%84%9A%E6%9C%AC%E7%9A%84%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.png)
升级到 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--
)。