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

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

无论出于什么原因,我们不再需要以 root 身份(或使用sudo)来运行等/sbin/shutdown/sbin/reboot

这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl可以像普通用户一样处理所有事情。

但是,如果我想要shutdownreboot再次要求 root 身份验证怎么办?我该如何实现?

答案1

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

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

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

答案2

您可以使用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账户

答案3

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

另一篇相关文章可以找到这里

答案4

尝试在终端中更改其权限。您可以使其仅由特定组(例如 wheel 或 admin)可执行。遗憾的是(或者也许幸运的是),一个文件只能由一个组拥有,因此 chown 本身无法工作。尝试“sudo chown root:wheel /sbin/shutdown”,然后“sudo chmod g+x /sbin/shutdown”。这将使该文件仅由 root 和管理员(shudders)可执行,并且 sudoers 需要输入他们的密码。

相关内容