sudoers NOPASSWDオプションが機能しないのはなぜですか?


75

/ etc / sudoersにNOPASSWD行があります(で編集visudo

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

ただし、出力は

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

この種類のコマンドは、OpenSuSEマシンでは機能しますが、Ubuntu 11.10では機能しません。何が間違っていますか?

:関連するシステムログメッセージが見つかりませんtail -f /var/log/syslog

編集する

これが/ etc / sudoersです。

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

2
完全なsudoersルールを示すことはできますか?ルールの順序は関係ありません。
-enzotib

回答:


117

マニュアルページに次のように記載されているため、グループのルールを含む行のにその行を配置する必要があります。sudosudoers

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).

5
追加の注意として、これは複数のグループのユーザーにも適用されます。たとえば、sudoのルールがadminの後にある場合、ユーザーはグループadminおよびグループsudoにありsudoのルールは両方のグループのユーザーのadminのルールを上書きします。
ポプラ

2
ありがとう!最後に行を追加しましたが、/etc/sudoers機能します。ここに興味がある人への完全な説明:techglimpse.com/ubuntu-sudoers-nopasswd-option-not-working
elimisteve

4

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

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

許可を与える行を挿入します。 gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

その後、保存して終了すると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使用するのに最適な「最後」の文字のプレフィックスがどうなるかを決定します。


私はこれに賛同する。/ etc / sudoersファイルを編集するロジックの一部は直観に反しているように見えました-誰かが#includedirと言った投稿を読むまで、%wheel ALL =(ALL)NOPASSWD:ALLをsudoersで記述された方法で動作させることができませんでした/etc/sudoers.d行は、%SUDOや%WHEELなどの他の行の前になければなりませんでした。#include dirを他のグループの許可の上に置くと、それらは機能し始めました。そこで、/ etc / sudoers.d /にある各グループのファイルをsudoersファイルと同じ順序で作成しましたが、ルートALL =(ALL)ALLは#includedir行の下にあるsudoerでなければなりませんでした。奇妙な。
-AveryFreeman

実際、includedirはsudoersの最後に残るべきだと思います。おそらく表示されていたのは、sudoers.dの他のファイルの1つで、変更が取り消されていたことです。メインファイルのさらに下の行に、ホイールグループを制限している行があるかもしれません。コマンドまたはグループに適用する最後のルールが勝った場合にsudoersが処理されるため、より具体的には役立ちますが、一般的なANYコマンドが最後に来てNOPASSWDがない場合は、以前の例外をオーバーライドします。これが、後で処理されるようにルールを個別のファイルに含める必要がある理由です。
dragon788

私はそうは思わない、それはアーチの真新しいインストールだった。私がしたことは、その1行を試してコメントを外すことだけでした。しかし、それは間違いなくチェックするのに良いことです、ありがとう。
AveryFreeman

一部のシステムは実際にwheelを使用せず、代わりにsudoまたはadmまたはadminと呼ばれるグループを使用します。Archの動作は思い出せませんが、実行idして自分が所属するグループを確認できます。
dragon788

アーチはホイールを使用します。
AveryFreeman

4

これにも出くわしました。

私の状況では、ヘッドレスで実行されるリモートシステムをセットアップしています。フルディスク暗号化を有効にしました(そうでない場合、物理的アクセスを持つ攻撃者は彼または彼女が望むすべてのことを実行できます)pubキーのみで認証したい保護されたキーペア--rootログインはもちろん完全に無効になっています)

Ubuntuインストーラーは、グループに追加される非ルート管理ユーザーの入力を求めsudoます。私はそれから手動でsudoersファイルに自分を追加していましたsudo visudo

my_username ALL=(ALL:ALL) NOPASSWD:ALL

ノートパソコンでnopasswdを使用する場合は、立ち去るときに常にコンピューターをロックする必要があります。

まだパスワード認証が必要でした。

enzotibの答えは、何が起こっているかの鍵です。グループsudoは、ユーザー名のエントリの後にsudoersに表示されます。

sudo行の下にエントリを移動するのではなく、以前に追加した行を削除してNOPASSWDから、エントリに追加しました%sudo

それはうまくいくようです。繰り返しますが、本当に必要な場合にのみnopasswdを使用してください(私の場合は、sudoアクティビティにパスワードを必要とするほとんどのユーザーにとって最適です)。

追加の警告:常にsudoerをvisudoで編集します。(sudo visudo)また、別のウィンドウを開いてrootユーザーに切り替えると、sudoersファイルの変更中に犯した間違いを回復できます。


すべてまたはすべてのコマンドに対してNOPASSWDを有効にすることは決して良い考えではありません。これは、システムにアクセスしてユーザーをsudoグループに入れることを管理しているユーザーが、システムに対してなんでも悪いことを非常に迅速に行えることを意味します。LiveCDを使用してわずか数分のアクセスでこれを簡単に行うことができます。またはsudo、要求されたコマンドの実行に加えて、sudoグループに別のユーザーを追加する独自のアクセス許可を使用するcmdを実行するようにユーザーをだますことで簡単に行うことができます。
dragon788

2
このような包括的な文を作成しないでください。ヘッドレスシステムでは、ログインパスワードを設定することは望ましくありません(代わりにキーペアに依存します)。フルディスク暗号化を有効にしているので、そのライブCDで幸運を祈ります。(ちなみに、sudoersファイルに関係なく、暗号化されていないシステムであらゆる種類の楽しいことを行うことができます)また、私のPATHのどの場所にも書き込むことができず、最初からシェルを提供していませんシステムを破壊しようとしないことを信頼しない限り。あなたのセキュリティ上の懸念は無効ではありません。それは単に時代遅れであり、あなたが暗示するほど普遍的に適用可能ではありません。
ヨルフス

あなたのようなセキュリティを深く理解していない人にとって、この種の推奨はおそらく他の選択肢よりも優れていますが、理想的ではないことに同意します。
dragon788

@ dragon788確かに、すべてのレベルのユーザーがより良いセキュリティに向けて一歩を踏み出すのを助けるために、おそらく私たちは両方の応答を編集することができます。攻撃者が物理的にアクセスできる場合に完全なディスク暗号化を有効にして侵害を防ぐ警告を追加し、ラップトップユーザーが自分のコンピューターを公共の場所でロックするのを忘れると、sudo nopasswdが迅速な侵害につながる可能性があることに注意します。(5分間のロックと画面ロックのクイックキーを設定することを提案しますが、実際にはセキュリティが向上する可能性があります。)
ヨルフス

素晴らしいアップデート、私の答えにはこれらのコメント以外の強力な推奨事項はありません、そして皮肉なことにフルディスク暗号化を使用する職場では十分に入力するのに苦労する非常に安全なパスワードを持っているのでNOPASSWDを有効にしました繰り返し、そしてxautolockを使用して、短いアイドル時間後にマシンをロックします。
dragon788

0

リモートシステムで、暗号化を削除しますが、「管理者」のグループのように、すべてがルートに所有されるようにします-それは0ではありません! ファイルではなくプロファイル で、フルアクセスが必要なものを
修正でき ます。標準スクリプトはすべて、「root」としてリモートにアクセスできるようになり、保護する必要があるファイルを保護できます。 別の便利な「グループ」は、ブラウザキャッシュにログインディレクトリを持つ「サンドボックス」であり、これを自由に読み取ることができます。大文字の最初の文字を使用します。#sudo -g Administratorssudo.login

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