如何使/ sbin / shutdown,/ sbin / reboot等在16.04再次需要sudo?

无论出于何种原因,我们不再需要root(或使用sudo )来运行/sbin/shutdown/sbin/reboot等。

这似乎是因为那些可执行文件现在是/bin/systemctl符号链接,它以普通用户的身份处理所有内容。

但是,如果我想要shutdownreboot以再次要求root身份validation呢? 我怎样才能做到这一点?

Systemd确实处理了shutdownreboot和其他命令,并且分配的默认权限是允许的。 要更改此设置,您需要创建Polkit规则。 在/etc/polkit-1/localauthority/50-local.d (例如, confirm-shutdown.pkla )中创建一个.pkla文件,其中包含:

 [Confirm shutdown] Identity=unix-user:* Action=org.freedesktop.login1.* ResultActive=auth_admin_keep 

在Polkit术语中,各种关闭,重启等命令是org.freedesktop.login1 ,例如org.freedesktop.login1.power-offorg.freedesktop.login1.reboot等。这里的具体问题是默认配置,位于/usr/share/polkit-1/actions/org.freedesktop.login1.policy

  Power off the system ...  auth_admin_keep auth_admin_keep yes  

请注意,它允许活动用户关闭电源,重新启动等。

您可以使用chmod命令。

  • 如果您只想授予root权限,可以写:

     chmod 700 directory/to/the/file 
  • 如果你想让root和sudo组的权限,你可以写:

     chmod 770 directory/to/the/file 
  • 如果要将文件组从sudo更改为另一个(如用户或管理员),则需要键入:

     chown owner:group directory/to/the/file 
  • 如果要还原,请运行:

     chown root:sudo filedirectory 

注意 :您可能必须对这些命令使用sudo ,或者已登录root帐户

由于在Linux系统上更改符号链接的权限不会更改链接的权限,而是更改它指向的文件(至少在Ubuntu中)。 我认为最安全的方法是删除链接,并使用所需的umask重新创建它以获得您想要的结果。

可在此处找到另一篇相关文章

您可以创建一个脚本来检查用户是否使用root权限运行它。
然后它将运行systemctl命令或返回错误。

 #!/斌/庆典
 if [“$(whoami)”!=“root”]; 然后
    回声“对不起,你不是根。”
     1号出口
其他
     (systemctl shutdown命令)
科幻

资源

尝试在终端中更改其权限。 您可以使其仅由某个组执行,例如wheel或admin。 可悲的是(或者幸运的是),一个文件只能拥有一个组所有权,所以chown就不会单独工作。 尝试“sudo chown root:wheel / sbin / shutdown”然后“sudo chmod g + x / sbin / shutdown”。 这将使文件只能由root和管理员(shudders)执行,并且sudoers将需要输入他们的密码。