只是一点背景...
我获得了一些旧的 System V Init 脚本,这些脚本被转换为 RedHat 7 的 Systemd 单元配置文件。在 user.slice 中运行的用户进程突然终止的问题让我发现 RedHat 7 上的 systemd/pam 要求我的脚本使用运行用户切换用户(如果以 root 身份启动)或用户=确保他们开始作为正确的用户。现在要确保 systemd 控制我的守护进程并在重新启动时启动服务,并确保我的合法用户也可以启动该服务,似乎我有三个选择:
- 定义一个“用户”服务来
systemctl --user
控制它 - 允许我的用户启动/停止服务 sudo
sudo systemctl start name.service
- 允许我的用户使用 PolicyKit 启动/停止服务
那么回到问题...
是须藤是否仍然是授予用户控制 RedHat 8 服务权限的好方法?或者我应该使用 PolicyKit,如systemd:授予非特权用户更改一项特定服务的权限
谢谢。弗兰克
答案1
PolicyKit 规则是一个更好的解决方案。
用户单元完全由用户控制。但是,由于缺乏权限,它无法以具有用户选项的守护进程用户身份运行。
以 root 身份启动系统服务是系统管理员会做的事情。虽然可以使用 sudo 进行委托,但需要注意特定的 sudo 规则或脚本,以免授予对任意命令的不必要的特权访问权限。而且它会让用户养成在 systemctl 前面加上 sudo 的不必要习惯。
PolicyKit 可以授予用户对系统单元的访问权限。以用户身份运行有效。升级到 root 权限不会暴露给最终用户。它还适用于管理单元 API 的其他客户端,而不仅仅是 systemctl。