当使用systemd启动ntpd挂载命名空间与pid 1不同时

当使用systemd启动ntpd挂载命名空间与pid 1不同时

使用systemd启动ntpd时,为什么ntpd pid的挂载命名空间与pid 1不同?

当使用systemd启动ntpd时

仅挂载命名空间与 pid 1 不同;

你看到 ntpd mnt:[4026532696] ,但是 pid 1 是 mnt:[4026531840]
#ll /proc/`pidof ntpd`/ns
total 0
lrwxrwxrwx 1 root root 0 Jun  7 17:58 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 mnt -> mnt:[4026532696]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 net -> net:[4026531968]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 uts -> uts:[4026531838]

#ll /proc/1/ns
total 0
lrwxrwxrwx 1 root root 0 Jun  7 17:58 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 net -> net:[4026531968]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 uts -> uts:[4026531838]

何时不使用systemd启动ntpd

如果不使用 systemd 启动 ntpd ,则 ntpd pid 的挂载命名空间与 pid 1 的挂载命名空间相同

#systemctl stop ntpd

#/usr/sbin/ntpd -u ntp:ntp -g

#ll /proc/`pidof ntpd`/ns
total 0
lrwxrwxrwx 1 root root 0 Jun 20 19:46 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 Jun 20 19:46 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 Jun 20 19:46 net -> net:[4026531968]
lrwxrwxrwx 1 root root 0 Jun 20 19:46 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 Jun 20 19:46 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Jun 20 19:46 uts -> uts:[4026531838]

#ll /proc/1/ns
total 0
lrwxrwxrwx 1 root root 0 Jun  7 17:58 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 net -> net:[4026531968]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Jun  7 17:58 uts -> uts:[4026531838]

由 systemd 启动的其他守护进程看起来不错

sshd pid 是 1252

#ll /proc/1252/ns/
total 0
lrwxrwxrwx 1 root root 0 Jun 20 19:52 ipc -> ipc:[4026531839]
lrwxrwxrwx 1 root root 0 Jun 20 19:52 mnt -> mnt:[4026531840]
lrwxrwxrwx 1 root root 0 Jun 20 19:52 net -> net:[4026531968]
lrwxrwxrwx 1 root root 0 Jun 20 19:52 pid -> pid:[4026531836]
lrwxrwxrwx 1 root root 0 Jun 20 19:52 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Jun 20 19:52 uts -> uts:[4026531838]

答案1

这会因发行版而异,但我认为这是使用 systemd 功能的结果PrivateTmp: true

如中所述服务-私有 /tmp的部分Lennart Poettering 的博客文章:

在内部,此功能利用内核的文件系统名称空间。如果启用,将打开一个新的文件系统名称空间,继承大多数主机层次结构(/tmp 除外)

例如,参见这个错误报告请求将此选项添加到 Fedora 中。

相关内容