Prvt_Yadav Asked: 2018-08-05 00:53:31 +0800 CST2018-08-05 00:53:31 +0800 CST 2018-08-05 00:53:31 +0800 CST 为什么 systemctl halt 要求输入密码但 systemctl reboot 和 systemctl poweroff 没有? 772 我正在使用 Debian 9.5。每当我输入命令systemctl halt时,它都会从终端显示: Authentication is required to start halt.target 它会要求输入密码。但是我可以使用命令systemctl reboot,systemctl poweroff并且它们不会要求输入密码并且会成功执行。我认为如果它要求输入密码,那么它也应该要求poweroff。 shutdown systemctl 1 个回答 Voted Best Answer sourcejedi 2018-08-05T08:28:46+08:002018-08-05T08:28:46+08:00 在更高版本的 systemd v235 中,可以在没有密码的情况下允许停止。为了使其允许,您必须编辑一些 polkit 配置文件。 提交的描述中添加了这个功能来暂停,说“暂停的整个概念并不是真的太有用”。 [1] 我认为这种观点解释了与关机/重启的区别:-)。 另一种看待它的方式是,常见的 GUI 中提供了关机/重启按钮,我们希望它们无需密码即可工作。systemd 项目提供了一种实现方式。但是用户通常不希望单独的按钮来“停止”。 我审查了这个提交并帮助批准了它。我觉得 systemd 不改变这种行为通常更安全,而且没有明确的改变理由。 最初的行为可能被认为更简单......如果我们实际上并不期望它被使用,那么维护API 的代码和文档可能是非常不可取的。或者它可能是一种阻止用户做他们实际上不想做的事情的方法。我不确定。我很模糊地想到了另一个问题。"halt" 被定义为进入 ROM Monitor,如果有的话。如果有一些假设的 ROM Monitor 在启动时需要密码,我不确定当操作系统交还控制权时它会再次提示输入密码。 在 v235 中添加 polkit 支持是使 logind 支持停止的附带好处。这样做是为了使systemctl停止的行为保持一致,但对 polkit 的支持并不是真正的原因。 [1] PR #6944 - “systemctl 重启/暂停调整” - 提交 36b69c313120 - “登录:添加 Halt() 和 CanHalt() API” 链接:https ://github.com/systemd/systemd/pull/6944/commits/36b69c31312007f522a2a7ae5087ae90bd7867cc polkit 提示 您可以在 中查看 polkit 默认设置/usr/share/polkit-1/actions/org.freedesktop.login1.policy。您可以搜索 和 的类似条目power-off,reboot并查看它们的<defaults>元素。在 v235 及更高版本中,将有一个条目可供halt您比较。 您可能会注意到一些额外的细节。例如,如果您已通过网络登录,系统将需要管理员密码才能关闭电源。 如果您知道正确的咒语,您可以在某处创建一个文件,在该文件下/etc/polkit-1提供与默认设置不同的设置。我的猜测是你必须定义一个“规则”。
在更高版本的 systemd v235 中,可以在没有密码的情况下允许停止。为了使其允许,您必须编辑一些 polkit 配置文件。
提交的描述中添加了这个功能来暂停,说“暂停的整个概念并不是真的太有用”。 [1] 我认为这种观点解释了与关机/重启的区别:-)。
另一种看待它的方式是,常见的 GUI 中提供了关机/重启按钮,我们希望它们无需密码即可工作。systemd 项目提供了一种实现方式。但是用户通常不希望单独的按钮来“停止”。
我审查了这个提交并帮助批准了它。我觉得 systemd 不改变这种行为通常更安全,而且没有明确的改变理由。
最初的行为可能被认为更简单......如果我们实际上并不期望它被使用,那么维护API 的代码和文档可能是非常不可取的。或者它可能是一种阻止用户做他们实际上不想做的事情的方法。我不确定。我很模糊地想到了另一个问题。"halt" 被定义为进入 ROM Monitor,如果有的话。如果有一些假设的 ROM Monitor 在启动时需要密码,我不确定当操作系统交还控制权时它会再次提示输入密码。
在 v235 中添加 polkit 支持是使 logind 支持停止的附带好处。这样做是为了使
systemctl
停止的行为保持一致,但对 polkit 的支持并不是真正的原因。[1] PR #6944 - “systemctl 重启/暂停调整” - 提交 36b69c313120 - “登录:添加 Halt() 和 CanHalt() API”
链接:https ://github.com/systemd/systemd/pull/6944/commits/36b69c31312007f522a2a7ae5087ae90bd7867cc
polkit 提示
您可以在 中查看 polkit 默认设置
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
。您可以搜索 和 的类似条目power-off
,reboot
并查看它们的<defaults>
元素。在 v235 及更高版本中,将有一个条目可供halt
您比较。您可能会注意到一些额外的细节。例如,如果您已通过网络登录,系统将需要管理员密码才能关闭电源。
如果您知道正确的咒语,您可以在某处创建一个文件,在该文件下
/etc/polkit-1
提供与默认设置不同的设置。我的猜测是你必须定义一个“规则”。