너무 길어요.
사용자가 로컬인지 도메인인지(어떤 도메인인지는 상관없음) 쉽고 빠르게 확인하고 싶습니다.
환경
- freeipa-클라이언트-4.6.1-3.fc27.x86_64
- sssd-1.16.0-4.fc27.x86_64
전체 이야기
사용자가 로컬인지, sssd인지, ssh를 사용할 수 있는지, sssd에서 허용하는지 표시하는 userinfo.sh 스크립트를 작성 중입니다.
현재 나는 사용자가 도메인 출신인지 확인하기 위해 명령을 사용하고 있습니다 getent passwd -s sss $USERNAME
. 하지만 문제가 발생했습니다. sssd 데이터베이스를 확인하면 로컬 사용자가 반환됩니다!
# getent passwd -s sss 'bgstack15-local'
bgstack15-local:x:1000:1000:bgstack15-local:/home/bgstack15-local:/bin/bash
sss의 데이터베이스(캐시) 내용을 조사해 보면 sssd가 로컬 사용자에 대한 다양한 정보를 캐시하는 것으로 보입니다.
# sudo su root -c 'strings /var/lib/sss/db/* | grep bgstack15-local' | sort | uniq
name=bgstack15-local@implicit_files,cn=groups,cn=ih
name=bgstack15-local@implicit_files,cn=groups,cn=implicit_files,cn=sysdb
name=bgstack15-local@implicit_files,cn=users,cn=implicit_files,cn=sysdb
[...output truncated]
사용자에 대해서만 SSD 캐시 전체를 삭제해 보았습니다. 둘 사이에는 차이가 없습니다.
# sss_cache -U
# sss_cache -u bgstack15-local
사용자는 로컬 사용자로 표시되며 이는 로컬 사용자일 뿐임을 보장합니다!
getent passwd -s files 'bgstack15-local'
bgstack15-local:x:1000:1000:bgstack15-local:/home/bgstack15-local:/bin/bash
매뉴얼 페이지가져오기(1)그리고검증 받기(3)무슨 일이 일어날지 이해하도록 도와주지 마세요.솔리드 스테이트 드라이브(8)sssd가 로컬 사용자를 캐시할 수 있다는 것을 보여주었는데, 이는 실제로 제가 원하는 것과 반대되는 것입니다! nss 부분sssd.conf(5)도움이 되지는 않지만 읽는데 충분한 시간을 투자하지 않았을 수도 있습니다. 나는 조금 붙어 있습니다.
myssd.conf
[domain/ipa.example.com]
id_provider = ipa
ipa_server = _srv_, dns1.ipa.example.com
ipa_domain = ipa.example.com
ipa_hostname = fc27c-01a.ipa.example.com
auth_provider = ipa
chpass_provider = ipa
access_provider = ipa
cache_credentials = True
ldap_tls_cacert = /etc/ipa/ca.crt
krb5_store_password_if_offline = True
[sssd]
services = nss, pam, ssh, sudo
domains = ipa.example.com
[nss]
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
[secrets]
[session_recording]
최후의 조치
${USERNAME}@${DOMAIN}
진행 하면서 확인할 수도 있지만 -s sss
이는 sssd.conf의 모든 필드를 반복해야 하므로 프로세스 속도가 느려집니다.
답변1
이 동작을 제어하는 옵션은 CentOS 7 및 Fedora의 sssd.conf(5)에 숨겨져 있지만 온라인 매뉴얼 페이지에는 숨겨져 있습니다.
SSD 구성 파일
[sssd]
enable_files_domain = false
참조 3은 sssd가 "로컬 사용자를 위한 빠른 캐시"를 제공한다는 것을 보여줍니다.
내 Fedora 시스템의 man sssd.conf(5)에서:
enable_files_domain (boolean) When this option is enabled, SSSD prepends an implicit domain with “id_provider=files” before any explicitly configured domains. Default: true
이 동작을 비활성화하면 로컬 사용자인지 도메인 사용자인지 간단히 확인할 수 있습니다.