sudoerのプログラムパラメータの厳しい条件

sudoerのプログラムパラメータの厳しい条件

sudoersは正規表現をサポートしていないので、以下の例で私がしたことを誰かがしたのか、それとも悪いのでしょうか?

user ALL = (root) NOPASSWD: /bin/program [0-9],\
                            /bin/program [0-9][0-9],\
                            /bin/program [0-9][0-9][0-9],\
                            /bin/program [0-9][0-9][0-9][0-9]

ベストアンサー1

いいえ、「悪い」ではありません。

あなたが持っているものはうまくいくはずですが、通常はパラメータをチェックするラッパースクリプトを書く方が良いでしょう。たとえば、次のようになります/etc/sudoers

user ALL = (root) NOPASSWD: /usr/local/bin/suprogram

そして次のようなもの/usr/local/bin/suprogram

#!/bin/bash

if [[ $1 =~ ^[0-9]{1,4}$ ]]; then
  exec program "$1"
else
  echo "Bad argument, only 1 to 4 digits allowed"
fi

これは、より多くのパラメータを受け入れて検証するように拡張することができます(たとえば、ファイル名パラメータが特定のディレクトリ内にあるか、特定のパターンに一致することを確認したり、特定のオプションがsudoプログラムに渡されることを許可しないなど) 。

シェルスクリプトで実行できるすべてのアクション(awk、sed、Perl、およびその他のツールの実行を含む)を使用して、sudoで実行されているプログラムに渡す引数を検証および整理できます。

検証はパラメータに限定されません。 uid、gid、ユーザーがローカルにログインするか、sshを介してログインしたかどうか、日付、時刻、ネットワーク状態、デーモン状態、空きディスク容量、ドアフェーズなどを確認できます。

おすすめ記事