在 RedHat 8 上,是否不推荐使用 SUDO 以特权用户身份执行任务(例如启动 systemd 服务),而建议使用 PolicyKit?

在 RedHat 8 上,是否不推荐使用 SUDO 以特权用户身份执行任务(例如启动 systemd 服务),而建议使用 PolicyKit?

只是一点背景...

我获得了一些旧的 System V Init 脚本,这些脚本被转换为 RedHat 7 的 Systemd 单元配置文件。在 user.slice 中运行的用户进程突然终止的问题让我发现 RedHat 7 上的 systemd/pam 要求我的脚本使用运行用户切换用户(如果以 root 身份启动)或用户=确保他们开始作为正确的用户。现在要确保 systemd 控制我的守护进程并在重新启动时启动服务,并确保我的合法用户也可以启动该服务,似乎我有三个选择:

  1. 定义一个“用户”服务来systemctl --user控制它
  2. 允许我的用户启动/停止服务 sudosudo systemctl start name.service
  3. 允许我的用户使用 PolicyKit 启动/停止服务

那么回到问题...

须藤是否仍然是授予用户控制 RedHat 8 服务权限的好方法?或者我应该使用 PolicyKit,如systemd:授予非特权用户更改一项特定服务的权限

谢谢。弗兰克

答案1

PolicyKit 规则是一个更好的解决方案。

用户单元完全由用户控制。但是,由于缺乏权限,它无法以具有用户选项的守护进程用户身份运行。

以 root 身份启动系统服务是系统管理员会做的事情。虽然可以使用 sudo 进行委托,但需要注意特定的 sudo 规则或脚本,以免授予对任意命令的不必要的特权访问权限。而且它会让用户养成在 systemctl 前面加上 sudo 的不必要习惯。

PolicyKit 可以授予用户对系统单元的访问权限。以用户身份运行有效。升级到 root 权限不会暴露给最终用户。它还适用于管理单元 API 的其他客户端,而不仅仅是 systemctl。

相关内容