Winbindグループの検索が痛々しいほど遅い


2

RHEL 6システムでwinbindを実行しています。グループ検索を除くすべてが正常に機能するため、多くのコマンド(などsudo)が非常に遅くなります。stracewinbindがすべてのグループと現在のユーザーの各グループ内のすべてのユーザーを検索することを示すものを行いました。これらのグループの一部には20000人以上のユーザーがいるため、単純なユーザーsudoは60秒で完了します。

私は本当にsudoコマンドを高速化することだけに関心があります。理想的なソリューションは次のいずれかです。

  1. ユーザー数がXを超えるグループは検索されません。または
  2. sudoはグループ検索をすべてバイパスします。

winbindの現在の「smb.conf」は次のとおりです。

workgroup = EXAMPLE
password server = AD1.EXAMPLE.ORG
realm = EXAMPLE.ORG
security = ads
idmap uid = 10000-19999
idmap gid = 10000-19999
idmap config EXAMPLE:backend = rid
idmap config EXAMPLE:range = 10000000-19999999
winbind enum users = no
winbind enum groups = no
winbind separator = +
template homedir = /home/%U
template shell = /bin/bash
winbind use default domain = yes
winbind offline logon = false

wbinfo -g流れはあなたのためですか?コマンドの実行が遅いという事実は、winbindとは関係ありません。winbind enum groupsログインを高速化するために無効にしました。
デヤン

意味がわかりません。遅いのはグループルックアップではなく、20000人以上のユーザーを持つADグループ内のユーザーを列挙しています。sudoはユーザーに対してグループ検索を行うため、ユーザーがメンバーになっている各グループ内のすべてのユーザーを調べて、ネストされたグループを見つけます。groupsコマンドから同じ動作を確認できます。ほとんどのユーザーは何千人ものユーザーを持つグループのメンバーであるため、それは永遠にかかります。
マーティ

回答:


1

sudoをアップグレードした後、この同じ問題が発生し、Red Hatから、sudoがsudo-1.7.4p5-13.el6_3.x86_64からsudo-1.8.6p3-7.el6.x86_64に移行するときにグループメンバーシップ解決アルゴリズムを変更したことがわかりました。sudo-1.7.4では、/ etc / sudoersにリストされているすべてのグループのグループメンバーシップが解決され、リストにユーザー名が見つかった場合、sudo権限が付与されました。sudo-1.8.6では、これは別の方法に変更されました-sudoはユーザーがメンバーであるグループのリストをフェッチし、それらのグループのいずれかがsudoersにリストされているかどうかをチェックしました。

これにより、ユーザーがメンバーになっているすべてのグループに対してgetgrgid()が実行されるため、一部のグループが大きい場合、これは非常に遅くなります。sudoをダウングレードするか、大きなグループを空のグループとしてローカルの/ etc / groupファイルに配置して、ADがそれらにアクセスしないようにすることができます(アクセス制御のためにLinuxシステムが大きなグループを参照していない場合)。


これは知っておくと良いことです。sudoをダウングレードする可能性はありませんが、sudoを再構成して古い方法に戻す方法を見つけたら教えてください。
マーティ

最新バージョンでは、「sudoはすべてのユーザーのグループをグループIDで検索し、sudoersエントリを照合するときに結果のグループ名を使用します。同じIDのグループが複数ある場合、グループ名はsystem getgrgid()ライブラリ関数は、sudoersエントリを照合するときに使用される名前です。」私は彼らがそれを元に戻すとは思わない。
さびた14年

1

古いメソッド(1.7.xなど)は、グループプラグインによって元に戻すことができます。

Defaults group_plugin="system_group.so"

または、単に/etc/groupwinbindルックアップなどを使用しないように強制します。

Defaults group_plugin="group_file.so /etc/group"

これは有望なようです。ただし、私のlibexecには、言及したプラグイン(system_group.soとgroup_file.soのどちらでもない)は含まれていません。どのプラグインをインストール/使用する必要がありますか?
マーティ14

@Martyどのディストリビューションを使用していますか?また、少なくともGentooではそうではあり/usr/lib/sudoません/usr/libexec/sudo
マチェイピエチョトカ14

sudoのソースをダウンロードしてプラグインをコンパイルすることにしました。両方のプラグインを試しましたが、どちらも遅いsudoルックアップを変更しませんでした。デフォルトが読み込まれる前にグループ検索を行うようです。
マーティ14


-2

または、「winbind expand groups = 0」を/etc/samba/smb.cnfファイルに追加します(ローカルルートアカウントに切り替えて、「/ etc / init.d / winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind start ")

再起動後の最初のsudoには少し時間がかかる場合があります(ただし、あなたが経験しているような糖蜜ではありません)。それ以外の場合は、sudoコマンドにローカル管理者アカウントを使用するだけです(1つのローカルアカウントを作成する必要があるためです)。


回答は可能な限り独立している必要があります。文の断片を書かないでください。別の答えを参照している場合は、どれを言ってください。(異なるユーザーは異なる順序で答えを見るので、「上記の答え」を参照しないでください。)
スコット

申し訳ありませんが(私は不可解です)、opに返信していました。本当にsudoコマンドの高速化にのみ関心があります。これは間違いなくsudo(smb.cnfに追加された行)を高速化しますが、「getent group NAMEHERE」に対する回答を得ることができません。あなたがそれを必要がある場合に、そして速くsudoをしたい、私の第二の提案には、sudoものを行うために、ローカルアカウントに切り替えることだった
hunter3740
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.