sudoersのユーザー閉鎖時間範囲オプション

sudoersのユーザー閉鎖時間範囲オプション

終了権限を取得するには、ユーザーにsudo権限を付与する必要があります。ただし、ユーザーは3時間を超える終了要求のみを実行できます。ワイルドカードを実装しようとしてきました。

たとえば、

username ALL=/usr/sbin/shutdown +[[:digit:]] -> Trial for any number 
username ALL=/usr/sbin/shutdown +[180-*] -> Trial for 180 minutes and beyond

他のケースも多いが効果はない。

ベストアンサー1

私の最初のアイデアは、スクリプトにsudoアクセスを許可し、そのスクリプト内でパラメータチェックを実行するラッパースクリプトでした。

username ALL=/usr/local/sbin/shutdown-wrapper

次に、ラッパーを閉じる方法は次のとおりです。

#!/bin/sh

case $1 in
  *[!0-9]*) echo Invalid; exit 2;;
esac

if [ "$1" -ge 180 ]
then
  /usr/sbin/shutdown +"$1"
else
  echo Invalid
  exit 2
fi

...ユーザーに電話をかけるように指示します。sudo /usr/local/sbin/shutdown-wrapper Nここで、Nは分です。

別のオプションは、次のものを使用することです。sudoersのマニュアルページのワイルドカードセクション:

username ALL=(ALL:ALL) /usr/sbin/shutdown +18[0-9], \
                       /usr/sbin/shutdown +19[0-9], \
                       /usr/sbin/shutdown +[2-9][0-9][0-9], \
                       /usr/sbin/shutdown +[1-9][0-9][0-9][0-9]*

これは、分 180 ~ 189、190 ~ 199、200 ~ 999 を意味し、最初の数字は、ゼロになることができない最低 4 桁の数字(数字またはその他!)で始まるすべてを意味します。たとえば、間違った時間範囲を許可すると、/usr/sbin/shutdown +9999jeff解析エラーが発生しますshutdown

時間仕様を解析できません: +9999jeff

おすすめ記事