我正在尝试使用 /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)。
此外,通过用户脚本控制关机可以包含实际关机前要执行的其他操作,而不会干扰系统文件。