使用 Gnome-scheduler 进行计划关机 - 如何输入 root psw

使用 Gnome-scheduler 进行计划关机 - 如何输入 root psw

我正在尝试使用 /sbin/poweroff 安排我的 ubuntu 14 服务器每天晚上 12:01 关闭。

由于需要 root 权限才能关机,因此该命令不起作用。如果我在命令前面加上“sudo”,它会提示输入密码,但我当时不在服务器上,所以无法输入密码。

如何使用 gnome-scheduler 安排关机以便它自动输入密码?

答案1

我认为最好的方法是分为两个步骤:

1) 添加要以 root 身份执行的命令,sudoers以便普通用户无需密码即可执行该命令。为此,请在 中创建一个文件/etc/sudoers.d/;您可以随意命名它,例如my-settings(1)(2):

sudo gedit /etc/sudoers.d/my-settings

内容:

romano ALL=NOPASSWD: /usr/sbin/pm-suspend
romano ALL=NOPASSWD: /sbin/poweroff

(显然,romano使用普通用户进行更改;如果您也不需要暂停,则可以省略第一行)。现在您必须使该文件仅可由 root 读取:

sudo chmod 440 /etc/sudoers.d/my-settings

...您已设置完毕。现在您应该能够运行程序sudo /sbin/poweroff来关闭机器,并且不会提示您输入密码。

2)将该命令添加sudo /sbin/poweroff到您的 gnome 调度程序或在您的脚本中使用它。

我经常使用它来进行夜间备份,使用样式为“my_backup_script; sudo /usr/sbin/pm-suspend”的命令行或在长命令之后(例如,转换视频格式然后关闭电源)。

有一个有关 sudoers 文件的 Ubuntu 页面,但它并不是真正最新的(它是在sudo实用程序能够解析/etc/sudoers.d目录之前编写的),尽管那里的信息仍然有效。


脚注

(1)请注意,这在最新版本中有效sudo(我的意思是目录的可用性/etc/sudoers.d)。您可以通过查看文件“/etc/sudoers”来检查它是否有效;如果它有行(接近末尾)

#includedir /etc/sudoers.d

它会起作用。否则,您需要将上述行直接添加到/etc/sudoers文件中;请小心使用visudo,因为损坏的/etc/sudoers文件是 Ubuntu 系统中最难恢复的东西之一。

如果您直接编辑主文件,请注意它可能会在更新时被覆盖。

(2)不允许使用点,所以不要使用扩展名!请参阅/etc/sudoers.d/README以了解更多信息。

答案2

如果你对安全性不感兴趣,你可以准备一个关机脚本:

echo <the_password_in_clear> |sudo -S /sbin/shutdown -P now

然后在 cron 中安排它(例如通过 gnome-schedule)。上面的行将把密码(可读格式)注入关机的 sudo 会话中。使用该-P选项让计算机通过 bios 计划保持开启状态(我想您希望全自动打开和关闭 PC)。

此外,通过用户脚本控制关机可以包含实际关机前要执行的其他操作,而不会干扰系统文件。

相关内容