无论出于何种原因,我们都不再需要root用户(或使用sudo
)来运行/sbin/shutdown
,/sbin/reboot
等等。
这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl
可以以普通用户身份处理所有可执行文件。
不过,如果我想要什么shutdown
,并reboot
再次要求根认证?我该如何实现?
sudo visudo
并检查是否有指向这些可执行文件的路径来更改它。
无论出于何种原因,我们都不再需要root用户(或使用sudo
)来运行/sbin/shutdown
,/sbin/reboot
等等。
这似乎是因为这些可执行文件现在是符号链接,/bin/systemctl
可以以普通用户身份处理所有可执行文件。
不过,如果我想要什么shutdown
,并reboot
再次要求根认证?我该如何实现?
sudo visudo
并检查是否有指向这些可执行文件的路径来更改它。
Answers:
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>
请注意,它允许活动用户关闭电源,重新启动等。
您可以使用chmod
命令。
如果只想授予对root用户的访问权限,则可以编写:
chmod 700 directory/to/the/file
如果您想将权限分配给根和sudo组,则可以编写:
chmod 770 directory/to/the/file
如果要将文件组从sudo更改为另一个(例如用户或管理员),则需要输入:
chown owner:group directory/to/the/file
如果要还原,请运行:
chown root:sudo filedirectory
注意:您可能必须使用sudo
这些命令,或者已经登录了root帐户
/bin/systemctl
),因此运行chmod / sbin / shutdown将影响所有指向的链接,/bin/systemctl
因为bin/systemctl
要更改的权限已通过命令$ ll /bin/systemct
l 确认-rwx ------ 1个root 659848 Jan 18 16:04 / bin / systemctl *
-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
尝试在终端中更改其权限。您可以将其设置为只能由特定组(例如wheel或admin)执行。可悲的是(或者幸运的是)文件只能具有一个组所有权,因此chown根本无法单独工作。尝试“ sudo chown root:wheel / sbin / shutdown”,然后尝试“ sudo chmod g + x / sbin / shutdown”。这将使该文件只能由root和admins(管理员)执行,并且将需要sudoers输入密码。
pkaction | grep login1
利息的其他规则)