노트
이 글을 올릴 당시에 제가 직접 문제점을 찾아냈기 때문에, 나중에 다른 분에게 도움이 된다면 이 글을 올려도 좋을 것 같다는 생각이 들었습니다. 문제는 오타가 있다는 거예요/etc/nsswitch.conf, 내가 썼다수두르설마Sudoers
이것스도:항목이 처음부터 존재하지 않아서 추가해야 했기 때문에 오타가 발생했습니다. 또 한 가지는 패키지입니다.libsss-sudo설치도 필요하지 않습니다.
우편 엽서
다음과 같이 SSSD를 통해 Linux 서버를 AD에 연결했습니다.
apt-get install sssd-ad sssd-tools realmd adcli krb5-user libsss-sudo
realm join -U Administrator domain.local
내 AD 사용자를 사용하여 로그인할 수 있지만 이제 AD에서도 sudo 규칙을 관리하고 싶습니다.
내 AD 서버에서 AD 구성표를 확장했습니다.
> wget https://github.com/sudo-project/sudo/blob/main/docs/schema.ActiveDirectory -o schema.ActiveDirectory
나는 모든 것을 바꿨다DC=X기입DC=도메인, DC=로컬그런 다음 다음을 실행하십시오.
> ldifde -i -f schema.ActiveDirectory
여태까지는 그런대로 잘됐다. OU를 만들었고 모든 sudo 규칙을 원합니다.
OU=Sudo-rules,OU=Linux Servers,OU=Computers,OU=Company,DC=domain,DC=local
조직 단위에서sudo 규칙객체를 만들었습니다.sudo 역할클래스, 이름이 지정됨Linux관리자Sudo다음 속성을 편집했습니다.
sudoCommand: ALL
sudoHost: ALL
sudoRunAs: ALL
sudoUser: %[email protected]
이것[이메일 보호됨]은 모든 Linux 관리자가 구성원으로 속해 있는 AD 그룹이며, 모든 Linux 관리자가 모든 Linux 서버에 대한 완전한 sudo 액세스 권한을 얻을 수 있기를 바랍니다.
이 내 꺼야/etc/sssd/sssd.conf:
[sssd]
domains = domain.local
config_file_version = 2
services = nss, pam, sudo
[domain/domain.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = DOMAIN.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%d/%u
ad_domain = domain.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
sudo_provider = ad
[sudo]
존재하다/etc/nsswitch.conf나는 다음을 추가했다:
sudoers: sss files
SSSD 캐시를 지우고 재부팅합니다.
sss_cache -E
systemctl restart sssd
이제 다음 사용자를 사용하여 로그인합니다.리눅스 관리자- 그룹과 내가 달릴 때sudo -l알겠어요:
Sorry, user [email protected] may not run sudo on linux-host1.
따라서 AD의 규칙이 이를 허용하더라도 sudo를 전혀 실행할 수 없습니다.
SSSD 캐시를 확인할 때 규칙을 검색했음을 알 수 있습니다.
ldbsearch -H /var/lib/sss/db/cache_domain.local.ldb
다음 항목을 찾았습니다.
# record 28
dn: name=LinuxAdminsSudo,cn=sudorules,cn=custom,cn=domain.local,cn=sysdb
cn: LinuxAdminsSudo
dataExpireTimestamp: 1699953662
entryUSN: 65897179
name: LinuxAdminsSudo
objectCategory: CN=sudoRole,CN=Schema,CN=Configuration,DC=domain,DC=local
objectClass: sudoRule
originalDN: CN=LinuxAdminsSudo,OU=Sudo-rules,OU=Linux Servers,OU=Computers,OU=Company,DC=domain,DC=local
sudoCommand: ALL
sudoHost: ALL
sudoRunAs: ALL
sudoUser: %[email protected]
distinguishedName: name=LinuxAdminsSudo,cn=sudorules,cn=custom,cn=domain.local,cn=sysdb
이는 AD에서 규칙을 잘 검색할 수 있음을 보여줍니다.
다 괜찮아요, 방금 오타가 났어요/etc/nsswitch.conf게시물 시작 부분에 명시되어 있습니다.
답변1
제가 잘못 썼네요/etc/nsswitch.conf 쓰다수두르설마Sudoers