3

sudo アクセスがあり、パスワードが既に認証されているかどうかをすばやく確認できるようにしたいと考えています。実行しようとしている操作に特に sudo アクセスできることを心配していませんが、それは素晴らしいボーナスです。

具体的には、これを使用しようとしているのは、さまざまなユーザーが実行できるようにしたいスクリプトです。一部にはsudoアクセスがあります。全員が root パスワードを知っています。

彼らが私のスクリプトを実行するとき、可能な場合はパスワードの入力を求めずに sudo パーミッションを使用し、それ以外の場合はルートパスワードを要求するようにします (彼らは sudo アクセスを持っていない可能性があるため)。

私の最初の非動作の試みは、STDIN を閉じた状態で分岐するsudo -S trueか、/dev/null から読み取ることでした。ただし、それでもパスワードの入力を求められ、数秒待ちます。

0.3秒待ってすぐに成功するかどうかを確認するなど、他のいくつかのことを試しましたが、試したことはすべて何らかの状況で失敗します。(タイムアウトが短すぎるからではありません。) 何が起こっているのかを理解するのは難しいです。

動作しないことがわかっていることの 1 つは、実行する前に STDIN を閉じるか、パイプに接続することsudo -S trueです。パスワードプロンプトがすぐに失敗することを望んでいましたが、それでもプロンプトが表示され、奇妙な動作をします。端末が欲しいかも。

4

4 に答える 4

1

これを行う必要がある最終的な理由が何であるかはわかりませんが、核となる理由が何であれ、再考する必要があるかもしれないと思います. アクセス許可を使用して複雑で異常なことを行おうとすると、セキュリティ ホールが発生することがよくあります。

より具体的には、スクリプトが何をしようとしても、sudo ではなく setuid を使用した方がよい場合があります。(なぜそんなに多くの人が root パスワードを持っているのかも不思議に思う必要があります。Sudo は、特に root パスワードを与えないようにするために存在します。)

于 2008-09-23T16:59:56.600 に答える
0

ランニング

sudo -S true < /dev/null &>/dev/null

失敗する前に1秒遅れますが、うまくいくようです。

于 2009-11-04T22:31:03.087 に答える
-1
getent group admin | grep $particular_user

whoami を使用して現在のユーザーを取得できます。

編集:しかし、それはあなたがまだsudoタスクを実行するために認証されているかどうかを見つけるのに役立ちません...うーん..

于 2008-09-23T17:05:19.863 に答える