以普通用户身份关闭或重新启动

以普通用户身份关闭或重新启动

要运行该命令poweroff,或者reboot需要成为超级用户。无论如何,我可以以普通用户身份运行它吗?我只是不想sudo每次重新启动或关闭电源时都输入密码。

答案1

我进行了更改/etc/sudoers,以便管理组中的每个用户都可以执行以下命令,而无需询问密码。

sudo halt
sudo reboot
sudo poweroff

您只需将以下行添加到/etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

并将您自己添加到管理员组中。

如果您希望只有一个用户能够执行此操作,只需删除%admin并将其替换为username这样

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

您可以了解有关/etc/sudoerswithman sudoers或 the 的更多信息在线联机帮助页

答案2

您还可以根据/etc/sudoers.d需要创建一个新文件(我将其命名为'shutdown'),并将以下行放入其中:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

只需将“yourUserName”更改为您的用户名,然后添加或删除要使用的命令,我个人仅将其用于shutdown.在下面创建特定文件的主要区别之一sudoers.d是该文件将在系统升级后继续存在

答案3

最简单的解决方案:

sudo echo $USER >> /etc/shutdown.allow

然后您就可以使用以下命令之一:

shutdown -ah now   // halt
shutdown -ar now   // reboot

根据人关机-A非 root 使用选项:

如果shutdown-A参数(将其添加到 shutdown 的调用中)/etc/inittab),它检查文件是否/etc/shutdown.allow存在。然后,它将该文件中的登录名与虚拟控制台上登录的人员列表进行比较......

它可以在 Debian Linux 上运行。并且 .net 中的用户名数量限制为 32 个/etc/shutdown.allow

答案4

另一种方法不仅可以为 Debian 系统中的特定用户或组获得启动权限,还可以访问所有 systemctl 服务:

sudo chown root:myuserorgroup /bin/systemctl
sudo chmod 4755 /bin/systemctl

因为所有引导脚本/sbin/shutdown, /sbin/poweroff,/sbin/reboot都链接到/bin/systemctl,更改其权限和所有权会授予以 root 用户身份执行它所需的权限。

请注意,用户将能够执行所有 systemctl 操作。这听起来可能是一种安全威胁,但它是嵌入式系统的一个简单的通用解决方案,其中您的默认用户不仅必须具有关闭的访问权限,而且还必须具有与systemctl.

相关内容