tom*_*tom 7 security users systemd
要运行没有 root 权限的进程,您可以在 systemd 中使用 DynamicUser= 或带有 User= 的静态用户。对于 DynamicUser 的一个很好的解释可以在这篇博客文章中找到:http://0pointer.net/blog/dynamic-users-with-systemd.html
但哪一个更安全呢?除了 DynamicUser 使用动态用户而 User 需要系统用户之外,DynamicUser 和 User 之间的确切区别是什么?
DynamicUser
更安全,因为它意味着:
ProtectSystem=strict
:整个文件系统层次结构以只读方式安装,API 文件系统子树/dev/
、/proc/
和 除外/sys/
。ProtectHome=read-only
:目录/home/
、/root
和/run/user
对此单元调用的进程设为只读。PrivateTmp=yes
:为执行的进程设置一个新的文件系统命名空间,并在其中挂载私有目录/tmp/
和/var/tmp/
命名空间之外的进程不共享的目录。这对于保护对进程临时文件的访问很有用,但使得进程之间的共享/tmp/
变得/var/tmp/
不可能。如果启用此功能,则服务停止后,服务在这些目录中创建的所有临时文件都将被删除。RemoveIPC=yes
:该单元的用户和组进程拥有的所有 System V 和 POSIX IPC 对象都按在单元停止时删除的方式运行您可以通过在使用时显式设置它们来模仿这些设置User=
,从而有效地获得相同的保护。
一种更好的方法DynamicUser=
是创建服务实例。假设您有foo.socket
which use Accept=yes
。在这种情况下,每次有人连接到您的套接字时,foo@%i.service
都会生成一个新的套接字。每个实例都有DynamicUser=
自己的名称空间和目录,如果使用的话,/tmp
这些名称空间和目录将被共享。User=
归档时间: |
|
查看次数: |
5805 次 |
最近记录: |