无需输入密码即可从终端关机?

无需输入密码即可从终端关机?

我有 Ubuntu 桌面版。

我喜欢终端,因此我更喜欢用命令来关闭我的电脑shutdown

但是,当我输入时,shutdown now它会提示我输入密码。有什么方法可以使用它来关闭计算机而不输入密码吗?

答案1

打开终端(CTRL + T)并输入以下内容 sudo visudo

添加以下行:

%group_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

或者

user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

这允许用户/组运行上述三个命令,使用 sudo,但没有密码。

因此,sudo poweroff现在将导致无密码关机。


但是,为了使其更加清晰,我们将添加一个别名,以便运行shutdown调用sudo shutdown now

打开~/.bash_aliases以进行编辑。

nano ~/.bash_aliases

在文件末尾插入以下行:

alias shutdown='sudo shutdown now' 

最后,将更改加载到文件.bash_aliases...

source ~/.bash_aliases

试试看!

shutdown

谢谢,埃里克

答案2

一种安全的方法无需使用 sudo并且无需修改系统,只需执行这些单行命令:

对于 Ubuntu 15.04 及更高版本:

(这是由于 Ubuntu 已转用systemd而导致的Upstart

systemctl poweroff

systemctl reboot

systemctl suspend

systemctl hibernate

systemctl hybrid-sleep

自从休眠在 Ubuntu 系统中,它通常是默认禁用的,你可以通过检查来启用它这个答案原文出处在这里


对于 Ubuntu 14.10 或更早版本:

关闭:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

重新开始:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

控制台工具安装 consolekit当然应该安装到你的系统中。

您可能喜欢的其他命令:

暂停:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

休眠:(如果您的系统已启用)

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

答案3

unity 使用许多 gnome 服务,在这种情况下,您也可以通过 gnome 方式关闭。

gnome-session-quit --power-off --force --no-prompt

将会完成这项工作。

答案4

在 Ubuntu 20.04 LTS 上,我创建了一个polkit文件

echo "[Shutdown or suspend without a password]
Identity=unix-user:$USER
Action=org.freedesktop.login1.set-wall-message;org.freedesktop.login1.halt;org.freedesktop.login1.suspend
ResultAny=yes
" | sudo tee /etc/polkit-1/localauthority/50-local.d/allow_shutdown_suspend.pkla

有了它,无需密码即可工作。它还可以远程工作,systemctl halt例如。systemctl suspendssh 192.168.0.55 -t 'systemctl suspend'

相关内容