質問

ユーザーは SSH 経由で ***nix ベースのマシンにリモートでアクセスすることになるため、 最速の 現在使用しているユーザー名に /etc/sudoers ファイル内で NOPASSWD アクセス権があるかどうかを確認する方法。

考えられるオプション:

  • /etc/sudoers のユーザー名を grep し、コマンド プロンプトの出力を解析して NOPASSWD があるかどうかを判断し、ない場合は行を削除して新しい権限を追加します
  • 関係なく、ファイルに許可文字列を追加するだけです (悪い考えです)。
  • 保護されたファイルに sudo を実行して、パスワードの入力を求められるかどうかを確認してください。

もっと簡単なことを望んでいますが、私のグーグル検索では答えが見つかりませんでした。

役に立ちましたか?

解決

sudo -vが成功した場合は、

、ユーザーがsudoの使用が許可されています。それが失敗した場合、ユーザはsudoの使用が許可されていません。

# su user -c 'setsid sudo -v </dev/null'; echo $?
[sudo] password for user:
1
# su root -c 'setsid sudo -v </dev/null'; echo $?
0

がsetsid にしないと、sudoでもSTDIN場合対話的にパスワードの入力を求めるしようとします/標準出力/標準エラー出力は、すべてのリダイレクトされています。あなたが制御端末を持っていない場合、これは必要ありませんが、あなたはおそらく、<のhref = "http://linux.die.net/man/2/のようなユーザー権限を変更するsu以外のものが必要になりますフォーク」REL = "nofollowをnoreferrer">フォークの+ ではsetreuid

他のヒント

本当に必要な場合は、「 最速の 方法」ということですが、おそらく、多くの同時リクエストを処理する Web サーバーを構築しているのだと思います。

これにより、同時実行性の問題という別の問題が発生します。一般に、多くのプロセスが同じ重要なファイルに対して読み取りと書き込みを行うと、大惨事が発生します。

タスクを処理するための小さな独立したプロセスを構築します。クライアントからのリクエストと、クライアントの更新を受信する最小限のインターフェイスが必要です。 /etc/sudoer ファイル。何かのようなもの has_NOPASSWD_access() そして set_NOPASSWD_access(). 。ファイルを書き込む必要がある場合にのみファイルを読み取る必要があるため、リクエストの処理に必要な I/O 時間が大幅に短縮されます。

長所 -

  • 速い :ファイルは最初の読み取り以来バッファに保存されているため、ファイルを読み取るだけの場合は I/O は必要ありません。
  • スレッドセーフ:sudoer ファイルの書き込みと読み取りを行うサーバーは 1 つだけです
  • 単一選択の原則 - このプロセスのみが sudoer ファイルを処理します
  • エレガントです (そう願っています) :-)

Cons--コメントにそれらをリストしてください、そして私は追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top