0

我想授予user01我机器上的用户关闭机器的能力,但必须至少提前 1 小时通知。

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

shutdown -h +<time>

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

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

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

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

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

4

1 回答 1

0

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

  1. 正则表达式很棘手,一个简单的错误可能会让用户运行 Elvis-knows-what...
  2. [6-9][0-9]|[1-9][0-9]*[0-9][0-9] - 如果符号允许使用快捷方式计算出现次数(或仅使用'+'),但你真的想要吗?

话虽这么说,恕我直言,最简单(也是最明智)的解决方案是按照以下内容编写脚本

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

并允许 user01 对该脚本执行 sudo。

于 2014-10-18T11:57:05.883 回答