sudoers-要求された簡単な説明


24

sudoer何回もする必要がある何かを実行できるようにしたいとき/etc/sudoersはいつでも、正確にそれを書く正しい方法が何であるかを再度思い出させるために、フォーマットのためにグーグルで検索する必要があります。

現在、sudoersファイルにはさまざまな書き方があります。これは、数か月にわたるさまざまなGoogle結果の結果です。また、2番目の例(下記)はXFCEで機能するようですが、シナモン(Gnome 3)では機能しないようです。これはまったく無関係かもしれませんが、それでも私は、sudoer行の正しい文法は何ですか、そして与えられた例の違いは何ですか?

  1. redsandro ALL=NOPASSWD:/path/to/command
  2. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  3. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

また、すべてALLののは何ですか?1人のユーザー、1つのコマンドで、ALLキーワードを3回まで使用する必要がありますか?私はこれを間違っていますか?

もちろん、省略するNOPASSWD:コマンドを実行することが許可される前になりますが、あなたのパスワードを入力しますが、混乱の一点の使用である=:のいずれかによって先頭に追加することができますラインの対象となる最後のコマンドのために、=:、または)、同様のセマンティクスのための混乱した文法。


3
また、sudoers構文に非常に不満を感じています。マニュアルページを読むことはさらにイライラさせられました。それはいわゆる簡潔で正確なEBNF言語を説明し、例は徹底的に長いです。したがって、このファイルに関してここで非常に多くのスレッドを見つけても驚くことではありません。
m-ric

1
これをありがとう。数年前にsudoersファイルに出会って以来、この質問をしたいと思っていました:-)
vahidg

回答:


35

それは単なるユーザーとコマンド以上のものです。


redsandro host=(user:group) tag:commands
  • hostこの行が有効なホスト名を指定します。ALL「すべてのホスト」が適切な選択であることを意味する特別な値を使用して、異なるルールを必要とする異なるホスト間でasudoersファイルを共有している場合を除きます。

  • user-uオプションを使用してコマンドを実行できるユーザーを指定します。これを省略すると、-uオプションを使用できません。

  • group-gオプションで使用できるグループを指定します。省略した場合、この-gオプションは使用できません。

両方でuserありgroup、特別な価値ALLを「すべてのユーザー/グループ」として理解する

あなたは全体の省略した場合(user:group)のことを、あなたは使用することはできません-u-gだけrootとしてコマンドを実行します。

  • tag 次のようないくつかのオプションを指定できます NOPASSWD

したがって、最初の例では、コマンドをルートとして実行できますが、他のユーザーまたはグループとして使用-u-gて実行することはできません。

例2では、​​コマンドをroot -uとして実行するか、他のユーザーとして実行するために使用できます。

3.を使用すると、コマンドをrootとして実行する-u-g、またはを使用して、他のユーザーまたはグループとしてコマンドを実行できます。


これはまさに私が探していたものです。私はあなたの答えを受け入れました、そしてあなたのエフォードに感謝します。
レッサンドロ

1
最終的な考えは、私が使用することができる127.0.0.1localhostのようにhost些細な追加のセキュリティのために?
レッサンドロ

5
マンページには、「sudoは実際のネットワークインターフェイスのみを検査します。これは、IPアドレス127.0.0.1(localhost)が一致しないことを意味します。また、ホスト名「localhost」は、それが実際のホスト名である場合にのみ一致します。これは通常、ネットワーク化されていないシステムの場合のみです。
フロリアンディーシュ

1
ありがとう。特にsudoersfileを複数のマシンにコピーできるようにするため、ホスト名はありません。ALLそうです。
レッサンドロ

9

これを分解してみましょう:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandroは、許可を与えるユーザー名です。グループに適用するには、先頭に%を付けます。

ALLは、このルールの名前です。Sudoerは、単にグローバルアクセス許可を付与するだけではありません。それが複雑になるところです。

=説明不要

ALL:ALLは(who_to_run_it_as:what_group_to_run_it_as)として読み取ります。これにより、特定のユーザーまたはグループのコンテキストでのみコマンドの実行を許可できます。

NOPASSWD:パスワードプロンプトをオフにするように指示します。

/ path / to / commandでは、特定のコマンドpath_to_commmand、another_commandを指定できます

覚えておくべきことは、sudoは主にホームユーザーがroot権限にエスカレートするために使用されますが、特定のコマンドへのアクセスをよりきめ細かく制御するために使用できることです。


1
追加%, another_commandメモをありがとう。これ%wheelで、Fedoraベースのディストリビューションの行を理解できました。
レッサンドロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.