Visudo Ubuntuでは、このプログラムをホワイトリストに登録します
myuser ALL=(root) NOPASSWD:/myuser/program.pl
私が走るとき
Sudo /myuser/program.pl
パスワードの設定を求めるプロンプトが表示されます。解決策はvisudo/usr/bin/Perlに追加することです
myuser ALL=(root) NOPASSWD:/myuser/program.pl,/usr/bin/Perl
これで、パスワードを尋ねることなく実行できます。
ここに問題があります。ユーザーをmyuserとしてWebサービスシステムを実行すると、Webサービスは/usr/bin/Perl
などのコマンドを実行できます。
/usr/bin/Sudo /usr/bin/Perl -e 'system ("cat /etc/shadow");'
私の主張は正しいですか?この問題の解決策は何ですか?
この問題を解決するには、次の行を変更する必要があります:myuser ALL=(root) NOPASSWD:/myuser/program.pl,/usr/bin/Perl
この行に:myuser ALL=(root) NOPASSWD:/usr/bin/Perl /myuser/program.pl
まず、インタラクティブに使用するユーザーIDでWebサーバーを実行しないでください。それは非常に悪い習慣です。特に、インタラクティブセッションでSudo-sを使用する場合。
通常、Sudo
はttyごとの認証を使用するため、Sudo
ingを実行しているのと同じttyからWebサーバーを起動した場合、またはsudoers
にDefaults !tty_tickets
。
自分の名前でWebサーバーを実行する必要があり、同じttyから実行する必要がある場合は、Sudo
のタイムアウトを0に設定する必要があります。man sudoers
から:
sudoersは、資格情報のキャッシュにユーザーごとのタイムスタンプファイルを使用します。ユーザーが認証されると、認証に使用されたuid、端末セッションID、およびタイムスタンプ(使用可能な場合は単調クロックを使用)を含むレコードが書き込まれます。その後、ユーザーはパスワードなしでSudoを短期間(timestamp_timeoutオプションでオーバーライドされない限り5分)使用できます。デフォルトでは、sudoersはttyごとに個別のレコードを使用します。つまり、ユーザーのログインセッションは個別に認証されます。