使用Visudo定时关机

时间:2014-10-16 05:37:50

标签: regex unix shutdown sudoers

我想让我的机器上的用户user01能够关闭机器,但只能通知不少于1小时。

基本上,这归结为以下命令:

shutdown -h +<time>

在这种情况下,<time>必须大于60(分钟)。

使用visudo,我添加了以下sudoers行:

user01 ALL=/sbin/shutdown -h +<time>

我需要一些方法来确保user01只能在时间参数大于60时才发出停止关闭。我已经尝试了正则表达式,但无济于事。我说这个可能是错的,但似乎sudoers文件可能不支持正则表达式?

有关评估表达式以实现此任务的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我甚至想要知道sudoers是否有正则表达式支持(快速grep表明它不会):

  1. 正则表达式很棘手,一个简单的错误可能让用户运行Elvis-knows-what ...
  2. [6-9] [0-9] | [1-9] [0-9] * [0-9] [0-9] - 如果符号允许用于计算出现次数的快捷方式,则可以缩短它(或者只需使用&#39; +&#39;),但你真的想要吗?
  3. 话虽这么说,imho最简单(也是最明智的)解决方案是编写一个脚本

    #! /bin/sh
    test $# -eq 1    || exit
    test 60 -lt "$1" || exit # maybe print a message
    exec /sbin/shutdown -h "+$1"
    

    并允许user01 sudo该脚本。