/ etc / sudoersにNOPASSWDを追加しても機能しない


45

14.04に。私は自分のマシンにSSHで接続し、次の行を追加しました/etc/sudoers

myuser   ALL=NOPASSWD: ALL

そして、実行してみました:

sudo mkdir /etc/blah

... そして、パスワードの入力を求められています。なぜ?!?

この操作を行うときにパスワードの入力を求められたくありません。実行するls -ltr /と次のようになります:

drwxr-xr-x 94 root root  4096 Jul 30 13:28 etc

しかし、私は自分を「スーダー」として設定しているので、これは重要ではないと思いますか?

さらに重要なことは、パスワードを求められることなくsudo mkdir /etc/blah現在のユーザー(myuser)として実行できるようにするために何をする必要がありますか?

これが私の/etc/sudoersファイル全体です。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root      ALL=(ALL:ALL) ALL
fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

sudoersファイルを投稿できますか?ディレクティブは正しいですが、コンテキストが原因で機能しませんでした。
レティ14

@Letiziaに感謝します-私のアップデートを見てください、何かが飛び出しますか?
ザック14

使用しなかったvisudoが、このファイルへの手動編集はコピーアンドペーストジョブではなく、すべてをそのまま入力したことにも注意する必要があると思います。しかしvisudo、これ以外のファイルは編集しますか?それは...それかもしれない
ザック


また、内のファイルをチェックし/etc/sudoers.d/、彼らはから物事をオーバーライドすることができる、/etc/sudoers
tokland

回答:


68

これを引き起こしたのは、ルールの順序/順序です。最後のルールが優先されます。

問題を解決するには、単に行を移動し、

fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL

sudoersファイルへ

sudo visudo -f /etc/sudoers.d/myOverrides 

これはsudoers、プレーンテキストエディタでファイルを編集するよりも優れたアプローチです。誤ってファイルにエラーを挿入すると、を実行できなくなる場合がありますsudo。常にを使用しvisudoて、構文がチェックされ、間違いに関する警告が表示されるようにしてください!

次のようにオーバーライドされているため、ディレクティブは機能しません。

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

groupsコマンドを実行すると、ユーザーがこれらのグループに属していることがわかります。


ファイルの名前は、の規則に従う必要があります。nn-somename/etc/sudoers.d/20-myoverrides
shimatai

はい、もちろん、複数のファイルがある場合、これらはソートされた字句順で解析されるため、数字を使用することをお勧めします。また、その順番は簡単にわかります。
レティ

21

myusersudoグループに属している場合、3番目の行が1番目の行をオーバーライドするため、この順序の行はパスワードなしのアクセスを提供しません(Florian Dieschによると)。

myuser    ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

したがって、行を次の順序に並べるだけです。

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
myuser    ALL=(www-data:www-data) NOPASSWD: ALL

下にMYUSERのアカウントの使用sudo -l権限の内容を確認するMYUSERを持っています。


10

ユーザーに対して複数のエントリが一致する場合、最後のエントリが使用されます。そのため、fizzbuzzchadminがグループのメンバーである場合、adminまたはsudoパスワードがまだ求められます。

2行をsudoersファイルの最後の#includedir行の後に配置します。


実際、@ Letiziaと回答の組み合わせ#includedirは、sudoersデフォルトで最後のエントリであるため、最良の組み合わせです。
ムル14

0

理想的には、どのコマンドを介しsudoて実行できるかをカスタマイズする場合/etc/sudoers.d/sudoersファイルを直接編集するのではなく、別のファイルでこれらの変更を行う必要があります。またvisudo、ファイルの編集にも常に使用する必要があります。コマンドを許可NOPASSWDしないでくださいALL

例: sudo visudo -f /etc/sudoers.d/mynotriskycommand

許可を与える行を挿入します。 myuser ALL= NOPASSWD: /bin/mkdir

その後、保存して終了し、visudo構文エラーがある場合は警告が表示されます。

sudo -lユーザー固有のNOPASSWDコマンドのいずれか%groupyouarein ALL=(ALL) ALLが出力のコマンドの前に表示される場合、ユーザーに付与されたアクセス許可を確認するために実行できます。パスワードの入力を求められます。

これらのsudoers.dファイルを大量に作成していることに気付いた場合は、ユーザーごとに名前を付けて作成し、視覚化しやすくすることができます。ファイル内のファイル名とルールの順序は非常に重要であり、最後にロードされたものが優先されます。以前のエントリよりも許容範囲が広くても少なくてもかまいません。

00-99またはaa / bb / ccのプレフィックスを使用してファイル名の順序を制御できますが、数字のプレフィックスを持たないファイルがある場合は、番号の付いたファイルの後にロードされ、上書きされることに注意してください設定。これは、言語設定に応じて、シェルが最初に使用する「字句ソート」が番号をソートし、次に「昇順」でソートするときに大文字と小文字をインターリーブするためです。

実行してみてくださいprintf '%s\n' {{0..99},{A-Z},{a-z}} | sortprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sortあなたの現在の言語の印刷物かどうかを確認するAaBbCcなどやABC、その後はabc使用するのに最適な「最後」の文字のプレフィックスがどうなるかを決定します。

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