一般化する

一般化する

一般化する

root以外のユーザーアカウントからroot以外のユーザーアカウントにパスワードのないsudoを許可するようにsudoが正しく設定されていることを確認する非対話型(無人、ncursesベースの制御端末を必要としない)方法はありますか?

なぜ

他のユーザーアカウントでいくつかの処理を実行する必要がありますが、使用可能な制御端末(バックグラウンドプロセスなど)がないため、ユーザーの介入なしに実行する必要があるシナリオがあります。

詳細

これはLinux(具体的にはRHEL 5、RHEL 6、またはほぼ同等のCentOSシステム)で実行されます。この問題に関連する他のオペレーティングシステムやLinuxのバリエーションはありません。

説明のために、userAとuserBという2つのユーザーアカウントが関連付けられているとします。

userBアカウントでuserAからuserBにパスワードのないsudoを実行できることを確認する方法が必要です。

そのsudo呼び出し内でuserBアカウントで実行されるコマンドは、ユーザースペースプログラムの実行などの操作に使用されます(たとえば、システム管理コマンドを実行しないなどfdisk)。

ここで重要な制限は、制御端末なしでバックグラウンドプロセスでuserAアカウントではなくuserBアカウントでメソッドを完了できることです。

このアプローチは、sed / awk / etcを使用するBashスクリプトで可能でなければなりません。ファイルを確認するコマンドです。

システム管理者はこの方法に参加する必要はありません(たとえば、setuidスクリプトは必要ありません)。

それは可能ですか?それでは、どうすればいいですか?

研究

sudoersファイルは解析するのが難しいかもしれません。同様の質問を見るとパスワードを要求せずにルートで特定のプログラムをどのように実行できますか?visudoオプションではなくncursesを有効にする必要がある端末など、いくつかの対話型メカニズムを使用せずに、非ルートスクリプトがsudoersファイルの内容を調べることができる方法はわかりません。

返品https://unix.stackexchange.com/a/260739/21372userAからuserBへのパスワードなしのsudoを表す正しい構文ですが、ここでの質問は、ncurses制限されたアプリケーション(例:)を実行せずにその構成を表示する方法で要約することができますが、それほど単純ではないかどうかvisudoわかりません。

ベストアンサー1

sudo 構成は root でのみ読み取れるため、sudo 構成ファイルを解析してこれを行うことはできません。 sudo設定を読み取ることができますが、安定して解析するのは難しく(特にLDAPデータベースなどのローカル以外の情報を処理するとき)、内容全体を知らせません(たとえば、次のように権限を付与できます)。いくつかの群れ)。

唯一の実際のチェックはsudouserAで実行されます。ユーザーBで実行されるスクリプトでこのチェックを実行する必要があるため、ユーザーBがユーザーAでスキャンを実行する方法が必要です。または小さなプログラムを書いてください(スクリプトではありませんつまり、setuid AまたはユーザーBに、sudoを介してユーザーAにチェックを実行する権限を付与します。

ユーザーBがAでスキャンを実行できるようにするsudoルールを設定するために管理者を介入できない場合、setuidプログラムは唯一のソリューションです。このプログラムは、AがユーザーBとして実行できるsudo -u userB -b trueことを確認するために呼び出されます。true以下はプログラムのCソースコードです(警告:テストされていません!)。

#include <unistd.h>
int main(void) {
    execl("/usr/bin/sudo", "sudo", "-u", "userB", "-b", "/bin/true", (char*)NULL);
    return 126;
}

これをコンパイルし、結果の実行可能ファイルsetuidをAにします(実行する前にAに属する必要がありますchmod 4755 /path/to/executable)。

このソリューションは完全ではありません。 A がユーザー A であるため、B でコマンドを実行できる場合にのみ機能し、A がグループに属しているため、この権限がある場合にのみ機能します。働くグループメンバーシップを確認する必要がある場合は、sgユーザーAとして実行してこのグループメンバーシップを取得して実行する必要がありますsudo

おすすめ記事