无论出于什么原因,我们不再需要以 root 身份(或使用sudo
)来运行等/sbin/shutdown
。/sbin/reboot
这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl
可以像普通用户一样处理所有事情。
但是,如果我想要shutdown
并reboot
再次要求 root 身份验证怎么办?我该如何实现?
答案1
Systemd 确实处理了shutdown
和reboot
其他命令,并且分配的默认权限是允许的。要更改此设置,您需要创建 Polkit 规则。在(例如)中创建一个.pkla
文件,其中包含:/etc/polkit-1/localauthority/50-local.d
confirm-shutdown.pkla
[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep
各种关机、重启等命令在 Polkit 术语中都是 中的操作org.freedesktop.login1
,例如 、org.freedesktop.login1.power-off
等org.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 需要输入他们的密码。