ユーザーを追加するための適切なsudoers構文は何ですか?


50

/etc/sudoers(Fedora 13)のコメントによると:

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

私の2つの関連する質問:

  1. ALL=(ALL) ALL次の行の意味は何ですか:

    root  ALL=(ALL)   ALL
    
  2. これらの2つの行をテストしましたが、機能的にどのように異なるのかわかりません。

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

私はマニュアルを読みましたが、構文仕様に従うことは困難です。この(ALL) ALL部分はコマンドとタグの仕様であると導きましたが、それでも頭を悩ませることはできません。

回答:


91

注:イグナシオはすでに2.に答えているので、私は1.に答えています

次のsudoエントリ:

superadm  ALL=(ALL)   ALL

4つのフィールドがあります。

  • 最初のものは、いくつかのコマンドの特権を付与されるユーザーを指定します。
  • 2番目のものはめったに使用されません。これは、このsudoエントリが有効になるホスト名のリストです。標準セットアップでは、関連するホストは1つだけであるため(localhost)、通常、このフィールドはとして残されALLます。
  • 第四のフィールドは、コマンドのリストがあるsuperadm特権で実行できるようになります。ALLすべてのコマンドを意味します。それ以外の場合は、コマンドのコンマ区切りリストを使用します。
  • 3番目のフィールド((…)オプションで記述されたフィールド)は、superadmユーザーが次のコマンドを実行できるユーザー(およびグループ)を指定します。ALL何でも選択できることを意味します(無制限)。このフィールドが省略されている場合、と同じことを意味し(root)ます。

例:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

ここでは、alan2つのコマンドを実行するために許可されている/bin/ls/bin/killのようにroot(またはbin多分追加して、)、operatorまたはsystemグループの権限。

そのため、ユーザーとして、次のようなグループ権限でalan実行することを選択できます。lsbinoperator

sudo -u bin -g operator /bin/ls /whatever/directory

-uが省略された場合、それはと同じ-u rootです。場合は-g省略され、追加のグループ権限が付与されません。


1
まあ、...おそらく史上最高の答えだ
デヴィッド・ベッツ

1
\nsudoersまたは/etc/sudoers.d/your_file_nameのエントリの最後に改行文字が必須であることを確認しました
ramonrails

また、ホスト名、パス名、コマンドライン引数にワイルドカードを使用できます。ここのような/bin/cat /var/log/messages.?または/bin/ls /var/log/*より多くの情報
アレックス

9

以下からのsudoers(5)manページ、説明のセクション、Runas_Specのサブセクション:

最初のRunas_Listは、コマンドを実行するユーザーsudo-uオプションを指定します。

...

Runas_Specが指定されていない場合、コマンドはasとして実行されroot、グループは指定されません。

したがってroot、としてコマンドを実行しようとする場合、つまりで使用-uしない場合、機能的な違いはありませんsudo。他のユーザーとしてコマンドを実行しようとする場合、違いは重要です。後者はこれを防ぎますが、前者はそれを許可します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.