特定のコマンドでsudoが機能しない


15

sudoDebian 8にはかなり奇妙な問題があります。ユーザーはでいくつかのコマンドを実行できません/etc/sudoers.d。Chefを使用して構成を配布するため、すべてのファイルが自動的に生成されます。

例:

この構成は正常に動作します

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

そしてこれは失敗します:

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

何が悪いのでしょうか?

診断:

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43

回答:


28

問題はupdate-rc.d(内の/etc/sudoers.d/update-rc.d)ドットです。からman sudo

#includedirディレクティブを使用して、システムパッケージマネージャーがパッケージインストールの一部としてsudoersルールをドロップできるsudo.dディレクトリを作成できます。たとえば、次の場合:

#includedir /etc/sudoers.d

sudoは/etc/sudoers.dの各ファイルを読み取り、〜終わるファイル名または。を含むファイル名をスキップしますパッケージマネージャーまたはエディターの一時/バックアップファイルで問題が発生しないようにするための文字


3
それは、sudoersにおける2つの疑わしい設計上の決定です。使用#コメントとしておよびディレクティブの一部としてだけでなく、ファイルを無視します。おもしろい(いらいらして)visudo -f some.file 終了時に無視される可能性があることを警告しません。アホウドリは、単純な賛成票で落ち着かせることができます。
-user9517

1
@istheEnglishwayは完全に同意します。しかし、ケナガアホウドリは、ケラレのままです。
MadHatter

編集後、バックアップファイル内の古い構成をアクティブにしたくないので、〜(または実際にはいくつかの拡張子を持つファイル)を無視することは実際には非常に良い考えです。また、そのマシンのエディターがバックアップファイルを残したかどうかを手動で確認する必要はないでしょう。もちろん、これは、ホワイトリストに登録された拡張子(例:)を持つファイルのみを含めることで実行できます*.cfが、その後、機能が追加され、一部のユーザーがセット拡張子の使用を強制されることに文句を言う可能性があります。
-ilkkachu

コメントとインクルードディレクティブの両方で使用されているハッシュ記号については、後方互換性がその理由であるかどうかを確認するまでです。
-ilkkachu

5

試して実行sudo -llして、ユーザーに適用可能なコマンド/構成のリストを取得してください。

update-rc.d句が(場合によっては)表示されない場合は、複数ではなく、ユーザーごとに1つのsudoers.dファイルを展開するようにシェフレシピを調整することを検討してください。

また、グループ関連のsudoersファイルが必要かどうかを検討することもできます。

この質問の答えは役立つかもしれません:https : //askubuntu.com/questions/246455/how-to-give-nopasswd-access-to-multiple-commands-via-sudoers

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