GNU/Linux >> Linux の 問題 >  >> Linux

Sudo - sudo があるかどうか、および/または残り時間を確認するコマンドはありますか?

これは非常に古い質問であることは知っていますが、今日スクリプトで行ったのは次のとおりです。 sudo であることは、任意のコマンドを sudo として実行できることを意味すると仮定します (または、少なくともアップタイム)

CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l)
if [ ${CAN_I_RUN_SUDO} -gt 0 ]
then
    echo "I can run the sudo command"
else
    echo "I can't run the Sudo command"
fi

ただし、ユーザーが visudo に制限を設けている場合、たとえば、ユーザーが make コマンドしか使用できない場合、このチェックは十分ではありません。動作することがわかっているコマンドを実行してみてください。これらの誤検知を回避するために、フィルター grep -v 申し訳ありません。例:$(sudo -n uptime 2>&1|grep "load" | grep -v 申し訳ありません|wc -l) を追加できます。


-n オプションはsudoの新しいバージョンで利用できますが、あなたが述べたようにそれはオプションではありません。 sudo を試して、パスワードのプロンプトが表示されるかどうかを確認する以外に、探していることを実行する実際の方法はありません。視覚的な表示が必要な場合は、 do sudo /bin/bash を実行して root bash セッションを開始してみませんか?これは安全ではないことに注意してください。ただし、sudo でプロンプトが変更されたことに誰かが気付いた場合も、いくらか安全ではありません。


@wags007 によって与えられた答えを単純化するには

if sudo -n true
then
  sudo id
else
  echo "sorry, but did not want to bother you"
fi

ただし、 https://www.sudo.ws/man/1.8.15/sudoers.man.html 構成に defaults mail_badpass がある場合 結果が false である (プロンプトが表示される) テストごとにメールが送信されます。このような迷惑な変更を避けるには、sudoers ファイルのその部分を次のように変更してください

Defaults       mail_badpass
Defaults!      /bin/true !mail_badpass

その結果、/bin/true を除くすべてのコマンドに対してセキュリティ警告メールが送信されます。そうです、誰かが sudo true を呼び出すことでパスワードを総当たり攻撃しようとする可能性があります セキュリティ警告メールが送信されない回数に制限はありません。

注:常に visudo を使用してください お気に入りのエディターの代わりに、sudoers ファイルを編集します。そうしないと、ロックアウトされる危険があります。


Linux
  1. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?

  2. Linux ls コマンドでタイムスタンプの秒を表示する方法

  3. Linux コマンドを使用して OS とバージョンを確認する方法

  1. Linuxシステムが32ビットか64ビットかを確認する方法

  2. パイプが空であるかどうかを確認し、空でない場合はデータに対してコマンドを実行する方法は?

  3. コマンドオプションを覚える方法は??

  1. ファイルをコピーし、所有権、権限を同時に変更する方法

  2. 時間コマンドでBashスクリプトの実行にかかる時間を確認する

  3. コマンド ラインの秘訣:Unix コマンドの実行日時を特定する方法