sudoホストフィールド:目的は何ですか?

sudoホストフィールド:目的は何ですか?

構文は次のとおりsudoです。

user ALL=(ALL) ALLしたがって:

最初のフィールドは実行できるユーザーです。sudo

sudo3番目のフィールドは入力できるユーザーです。

4番目のフィールドは実行できるコマンドです。sudo

2位sudoフィールドは、実行可能なホストを配置するために使用されます。

===================================

使い方を理解していない2位大地。sudo他のホストBで使用するためにホストAでこれをどのように有効にしますか?

答え1

2位みんな=すべてのホストで(sudoers同じファイルを複数のコンピュータに展開する場合)

答え2

これsudoers構文の完全な仕様あなたがリストしたものよりも複雑です。ホスト仕様は、ユーザーがこれらのコマンドを実行できるホストをsudoに通知します。マニュアルページに記載されているように、ホスト仕様が「ALL」の場合:

予約語ALLは、常に成功した一致結果をもたらす組み込みエイリアスです。 Cmnd_Alias、User_Alias、Runas_Alias、またはHost_Aliasが使用できる任意の場所で使用できます。

sudoは、ローカルホストのsudoルールにのみ興味があります。他のホストに接続されたコマンドを実行すると、そのホストで処理が再開されます。

複数のホストのsudoer設定を見ると混乱する可能性があります。特定のホストに適用される唯一のルールセットは、そのホスト名と「ALL」を含むルールです。

答え3

したがって、2番目のフィールドは実際にはローカルシステムにのみ適用されます。そうですか?ホストAのユーザーが他の権限でsudoを実行することを許可しませんか? - 愚かな奴

はい。ファイルはすべてのホストで使用される単一のコピーではなく、ホストの数だけ複製されます。単一のsudoersファイルを作成し、そのファイルのコピーを複数のホストに提供する方が簡単です。

実際の例を挙げるために、sudoers 構成の 80% を共有する数十台のサーバーがありますが、各サーバーにはいくつかの特別な構成があるとします。ホストリストを使用すると、適切なホスト固有の設定を維持しながら、各ホストに同じsudoersファイルを提供できます(たとえば、Ansibleを使用してすべてのホストにファイルのコピーを提供するなど)。

host_listinという単語を検索すると、man sudoersそこにEBNFが表示されます。 sudoersのマニュアルページによれば、「コンマで区切られている」とホスト名、IPアドレス、オプションのネットマスクを持つネットワーク、ネットグループ、またはホストエイリアスを使用できます。

Host_List ::= Host |
        Host ',' Host_List

Host ::= '!'* host name |
   '!'* ip_addr |
   '!'* network(/netmask)? |
   '!'* +netgroup |
   '!'* Host_Alias

関連情報