sudo -v
を実行 .通常、sudo パスワードのタイムアウトを延長するために使用されますが、sudo
があるかどうかを判断するために使用できます。
$ sudo -v
Sorry, user [username] may not run sudo on [hostname].
マニュアルページの抜粋:
<ブロック引用>-v (検証) オプションを指定すると、sudo はユーザーのタイムスタンプを更新し、必要に応じてユーザーのパスワードを要求します。これにより、sudo タイムアウトがさらに 5 分間 (または sudoers で設定されているタイムアウト) 延長されますが、コマンドは実行されません。
ユーザーが 特定 の実行のみを許可されている場合 コマンドを実行すると、このコマンドは機能し、何か の実行が許可されていることを示します 異なる特権を持つ。この場合、許可されていないコマンドを実行しようとすると、メッセージが異なって表示されます (そして、root にメールは送信されません) )、管理者が /var/log/secure
を読んだ場合、問題が発生する可能性があります .
$ sudo ls
[sudo] password for [username]:
Sorry, user [username] is not allowed to execute '/bin/ls' as root on [hostname].
なにを調べる sudo -l
を使用して、さまざまな権限で実行できます .このコマンドでは、パスワードを入力する必要があることに注意してください。
これは非常に簡単です。 sudo -l
を実行 .これにより、所有している sudo 権限が一覧表示されます。
スクリプトに適したバージョンは次のとおりです:
timeout 2 sudo id && echo Access granted || echo Access denied
sudo
を持っていない場合、パスワード入力でスタックしないため アクセス。
次のような変数に設定することもできます:
timeout 2 sudo id && sudo="true" || sudo="false"
echo "$sudo"