我正在尝试从我的笔记本电脑执行此脚本来关闭服务器,而无需输入 sudo 密码。(两者都运行 Ubuntu 14.04.2 LTS)
ssh -t [email protected] sudo shutdown -h now
lachlan@lachlan-MacBookAir:~/.scripts$ ./optiplex_990_shutdown.sh
[sudo] password for lachlan:
Connection to 192.168.0.xxx closed.
如您所见,它仍然要求输入密码。使用 编辑的 sudoers 文件中包含以下几行sudo visudo
。
Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
lachlan lachlan-MacBookAir= NOPASSWD: SHUTDOWN_CMDS
输出sudo -l
为
User lachlan may run the following commands on ubuntu:
(ALL) NOPASSWD: /sbin/poweroff, /sbin/halt, /sbin/reboot
(ALL : ALL) ALL
顺便说一下,lachlan 也是服务器管理员的用户名
我也尝试运行以下命令
ssh [email protected] dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
我在终端中得到以下内容
Error org.freedesktop.ConsoleKit.Manager.NotPrivileged: Not Authorized
我更愿意使用第二种方法dbus-send
,并且这种方法适用于运行 Kodibuntu 的英特尔 NUC,但 Ubuntu 服务器必须在某种程度上更安全。顺便说一句,我已经为 ssh 连接设置了基于密钥的身份验证,因此它不会要求我输入密码。
提前致谢。抱歉这篇文章格式不好(第一个问题)
我比较了两台机器上的内容
/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
,运行 kodibuntu 的 intel nuc 和运行 ubuntu 服务器的 optiplex 990,它们都是一样的。所以一定是有多个用户登录了,对吧?不。我尝试通过 ssh 从另外两台笔记本电脑将多个用户登录到 nuc,并使用 进行检查who -a
。然后我运行了以下脚本 没有问题,一切正常。我将同样的两台计算机登录到 ubuntu 服务器并运行相同的脚本,我得到了
ssh [email protected] dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Error org.freedesktop.ConsoleKit.Manager.NotPrivileged: Not Authorized
好的。为了消除我可能犯的任何愚蠢错误,我从每台机器的终端输入了命令,
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
结果相同。因此,在 kodibuntu 上您不必是管理员,而在 ubuntu 服务器上则需要。您如何更改这一点?我应该更改吗?