关机或以普通用户身份重启


17

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


2
答案取决于您的发行版使用的是哪个初始化系统...例如,通过systemd和活动logind会话,您可以在没有提升特权的情况下重新引导或
关闭电源,前提

@jasonwryan我目前正在使用默认情况下不使用systemd的Ubuntu,所以您是说其他发行版(例如Arch)可以在没有特权的情况下重启?
Stormvirux

是的:根据我的第一条评论中的条件。
jasonwryan

Answers:


22

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

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通过man sudoers在线联机帮助找到更多信息。


4

您还可以根据需要在其/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是该文件将在系统升级后继续存在


1
如果选择这种方法,请确保/etc/sudoers具有相应的#include指令以从中读取文件/etc/sudoers.d/
patricktokeeffe

2

您也可以使用setuid通过技巧来实现。我不知道它是否能在所有系统上正常工作,因为它们有时会忽略setuid / setgid位。

您可以指定一组用户,他们可以执行系统状态更改adm。然后将适当的用户添加到该组。

gpasswd -a $USER adm

指定权限:

chmod 4550 /usr/bin/reboot

ls -l Outpus应该看起来像这样:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

然后,您可以输入:

reboot

1

最简单的解决方案:

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

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

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

根据man shutdown,-a选项可以用于非root用户使用:

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

它可以在Debian Linux中使用。并且中最多可以包含32个用户名/etc/shutdown.allow


4
Fedora,CentOS或RHEL上没有此类选项。
fpmurphy '17

1
这也不适用于Ubuntu,至少这是我从文档中得到的。看看这是否仅是Debian功能会很有帮助。
拉斐尔·阿伦斯

仍然没有在Ubuntu(18.04)2020 =}
天衣
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.