저는 RHEL 6 시스템에서 winbind를 실행하고 있습니다. 그룹 조회를 제외한 모든 것이 잘 작동하므로 많은 명령(포함 sudo
)이 고통스러울 정도로 느립니다. 나는 strace
winbind가 현재 사용자에 대해 모든 그룹과 각 그룹 내의 모든 사용자를 조회한다는 것을 보여주는 작업을 수행했습니다. 이러한 그룹 중 일부에는 20000명 이상의 사용자가 있으므로 간단한 그룹을 sudo
완료하는 데 60초가 걸릴 수 있습니다.
나는 sudo 명령의 속도를 높이는 데에만 관심이 있습니다. 이상적인 솔루션은 다음 중 하나를 수행합니다.
- X 이상의 사용자가 있는 그룹은 조회되지 않습니다.
- sudo는 그룹 조회를 완전히 우회합니다.
여기에 내 현재 "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
답변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 시스템에서 대규모 그룹을 참조하지 않는다고 가정).
답변2
이전 방법(예: 1.7.x)은 그룹 플러그인으로 되돌릴 수 있습니다.
Defaults group_plugin="system_group.so"
또는 강제로만 사용하도록 합니다 /etc/group
(winbind 조회 등은 사용하지 않음).
Defaults group_plugin="group_file.so /etc/group"
답변3
중첩된 그룹 비활성화
winbind nested groups = false
답변4
또는 /etc/samba/smb.cnf 파일에 "winbind 확장 그룹 = 0"을 추가한 다음 로컬 루트 계정으로 전환하고 "/etc/init.d/winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind 시작")
재부팅 후 첫 번째 sudo는 약간의 시간이 걸릴 수 있지만(그러나 경험하고 있는 것처럼 당밀은 아닙니다) 확실히 후속 작업은 예상대로(빠릅니다) 이루어집니다. 다른 사람의 경우 sudo 명령에 로컬 관리자 계정을 사용할 수도 있습니다(하나의 로컬 계정을 만들어야 하므로 그렇죠?).