systemd用户实例用于ssh登录有什么用
What is the use of systemd user instance for ssh logins
当您使用 SSH 登录时,pam_systemd 模块会在用户登录时自动启动一个 systemd --user 实例首次。我们可以屏蔽 user@.service 来停用它。即使我们停用 user@.service,也没有明显的影响。
屏蔽服务有影响吗?
disable
和mask
是不同的东西。
disable
表示单元的 [Install]
部分被忽略。这通常意味着 WantedBy=multi-user.target
将被忽略,从而阻止设备在启动时启动。
mask
表示无法激活该单元。这包括当另一个单元 Wants=
它时,或者即使您尝试手动启动它。 mask
ing 肯定会阻止 user@.service
启动。
当您 sudo systemctl mask user@.service
时,您将禁用 systemd
的 --user
总线。 unmask
和start
单位,然后看systemctl --user status
看看有什么不可用。
在我的桌面环境中,这看起来像:
$ systemctl --user status
● desktop
State: running
Jobs: 0 queued
Failed: 0 units
Since: Sun 2022-02-13 13:09:28 CET; 3 days ago
CGroup: /user.slice/user-1000.slice/user@1000.service
├─app.slice
│ ├─at-spi-dbus-bus.service
│ ├─dbus.service
│ ├─dconf.service
│ ├─dunst.service
│ ├─gvfs-afc-volume-monitor.service
│ ├─gvfs-daemon.service
│ ├─gvfs-goa-volume-monitor.service
│ ├─gvfs-gphoto2-volume-monitor.service
│ ├─gvfs-metadata.service
│ ├─gvfs-mtp-volume-monitor.service
│ ├─gvfs-udisks2-volume-monitor.service
│ ├─vnc.service
│ ├─xdg-desktop-portal-gnome.service
│ ├─xdg-desktop-portal-gtk.service
│ └─xdg-permission-store.service
├─background.slice
│ ├─plasma-kglobalaccel.service
│ └─tracker-miner-fs-3.service
├─init.scope
└─session.slice
├─pipewire-media-session.service
├─pipewire.service
├─pulseaudio.service
├─xdg-desktop-portal.service
└─xdg-document-portal.service
在没有桌面环境的无头服务器上,这实际上什么都不包括。
$ systemctl --user status
● server
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2022-02-16 13:29:30 CET; 3s ago
CGroup: /user.slice/user-1000.slice/user@1000.service
└─init.scope
├─581 /lib/systemd/systemd --user
└─583 (sd-pam)
如果我要 systemctl mask user@.service
:
- 在我的桌面上,很多这些东西都是我的桌面环境安装的。我会注意到诸如 desktop-integrated 身份验证代理和通知之类的事情将停止工作。我的 VNC 服务将不可用,我的 U 盘将不可用 auto-mount,我的密钥环将不可用,等等
- 在我的服务器上,我根本不会注意到任何东西(甚至没有性能提升,因为列出的所有进程都处于空闲状态。
在这两种情况下,如果需要,我将放弃定义 user-bus 单位的能力。 user
单位可用于以下用途:
- 运行 备份脚本
- 安装中user-ownedfile-systems
- 运行 脚本以响应 files/directories
中的更改
编辑:我差点忘了一些坐骑。 systemd
在用户登录时创建 $XDG_RUNTIME_DIR
。如果屏蔽 user@.service
,则不会在登录时创建该运行时用户目录。任何依赖它的东西都可能有问题。
有关加载到用户总线上的更多单元,请参阅 systemctl --user list-units
。
当您使用 SSH 登录时,pam_systemd 模块会在用户登录时自动启动一个 systemd --user 实例首次。我们可以屏蔽 user@.service 来停用它。即使我们停用 user@.service,也没有明显的影响。
屏蔽服务有影响吗?
disable
和mask
是不同的东西。
disable
表示单元的[Install]
部分被忽略。这通常意味着WantedBy=multi-user.target
将被忽略,从而阻止设备在启动时启动。mask
表示无法激活该单元。这包括当另一个单元Wants=
它时,或者即使您尝试手动启动它。mask
ing 肯定会阻止user@.service
启动。
当您 sudo systemctl mask user@.service
时,您将禁用 systemd
的 --user
总线。 unmask
和start
单位,然后看systemctl --user status
看看有什么不可用。
在我的桌面环境中,这看起来像:
$ systemctl --user status
● desktop
State: running
Jobs: 0 queued
Failed: 0 units
Since: Sun 2022-02-13 13:09:28 CET; 3 days ago
CGroup: /user.slice/user-1000.slice/user@1000.service
├─app.slice
│ ├─at-spi-dbus-bus.service
│ ├─dbus.service
│ ├─dconf.service
│ ├─dunst.service
│ ├─gvfs-afc-volume-monitor.service
│ ├─gvfs-daemon.service
│ ├─gvfs-goa-volume-monitor.service
│ ├─gvfs-gphoto2-volume-monitor.service
│ ├─gvfs-metadata.service
│ ├─gvfs-mtp-volume-monitor.service
│ ├─gvfs-udisks2-volume-monitor.service
│ ├─vnc.service
│ ├─xdg-desktop-portal-gnome.service
│ ├─xdg-desktop-portal-gtk.service
│ └─xdg-permission-store.service
├─background.slice
│ ├─plasma-kglobalaccel.service
│ └─tracker-miner-fs-3.service
├─init.scope
└─session.slice
├─pipewire-media-session.service
├─pipewire.service
├─pulseaudio.service
├─xdg-desktop-portal.service
└─xdg-document-portal.service
在没有桌面环境的无头服务器上,这实际上什么都不包括。
$ systemctl --user status
● server
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2022-02-16 13:29:30 CET; 3s ago
CGroup: /user.slice/user-1000.slice/user@1000.service
└─init.scope
├─581 /lib/systemd/systemd --user
└─583 (sd-pam)
如果我要 systemctl mask user@.service
:
- 在我的桌面上,很多这些东西都是我的桌面环境安装的。我会注意到诸如 desktop-integrated 身份验证代理和通知之类的事情将停止工作。我的 VNC 服务将不可用,我的 U 盘将不可用 auto-mount,我的密钥环将不可用,等等
- 在我的服务器上,我根本不会注意到任何东西(甚至没有性能提升,因为列出的所有进程都处于空闲状态。
在这两种情况下,如果需要,我将放弃定义 user-bus 单位的能力。 user
单位可用于以下用途:
- 运行 备份脚本
- 安装中user-ownedfile-systems
- 运行 脚本以响应 files/directories 中的更改
编辑:我差点忘了一些坐骑。 systemd
在用户登录时创建 $XDG_RUNTIME_DIR
。如果屏蔽 user@.service
,则不会在登录时创建该运行时用户目录。任何依赖它的东西都可能有问题。
有关加载到用户总线上的更多单元,请参阅 systemctl --user list-units
。