![以普通用户身份关闭或重新启动](https://linux22.com/image/49285/%E4%BB%A5%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E5%85%B3%E9%97%AD%E6%88%96%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8.png)
要运行该命令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/sudoers
withman 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
.