CentOS 6 + LDAP + NFS. 파일 소유권이 "아무도"에 붙어 있습니다


11

CentOS 6에서 LDAP 인증 및 NFS로 내 보낸 홈 디렉토리를 며칠 동안 사용하려고했습니다. LDAP의 사용자 이름과 비밀번호를 사용하여 클라이언트 시스템에 로그인 할 수있는 시점에 도달했습니다. 클라이언트에서 / home 및 / opt는 NFS를 통해 fstab에 마운트됩니다. 그러나 / opt 및 / home의 모든 파일 nobody:nobody은 클라이언트에서 (uid : 99, gid : 99)를 소유합니다 .

그러나 내 uid와 gid가 올바르게 설정된 것처럼 보입니다.

-bash-4.1$ id
uid=3000(myusername) gid=3000(employees) groups=3000(employees)

다른 무엇을 확인할 수 있습니까? 내 클라이언트의 구성 파일은 다음과 같습니다.

/etc/nsswitch.conf

passwd:     files sss
shadow:     files sss
group:      files sss

hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files sss

publickey:  nisplus

automount:  files ldap
aliases:    files nisplus

/etc/sssd/sssd.conf

[sssd]
config_file_version = 2
services = nss, pam

domains = default
[nss]

[pam]


[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
cache_credentials = True
krb5_realm = EXAMPLE.COM
ldap_search_base = dc=mycompany,dc=com
id_provider = ldap
ldap_uri = ldaps://server.subdomain.mycompany.com
krb5_kdcip = kerberos.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts

# Configure client certificate auth.
ldap_tls_cert = /etc/openldap/cacerts/client.pem
ldap_tls_key = /etc/openldap/cacerts/client.pem
ldap_tls_reqcert = demand

/ etc / fstab

/dev/mapper/vg_main-lv_root /                       ext4    defaults        1 1
UUID=4e43a15d-4dc0-4836-8fa6-c3445fde756c /boot                   ext4    defaults        1 2
/dev/mapper/vg_main-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
storage1:/nas/home  /home  nfs   soft,intr,rsize=8192,wsize=8192
storage1:/nas/opt  /opt  nfs   soft,intr,rsize=8192,wsize=8192

authconfig 출력 :

[root@test1 ~]# authconfig --test
caching is disabled
nss_files is always enabled
nss_compat is disabled
nss_db is disabled
nss_hesiod is disabled
 hesiod LHS = ""
 hesiod RHS = ""
nss_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
nss_nis is disabled
 NIS server = ""
 NIS domain = ""
nss_nisplus is disabled
nss_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
 Winbind template shell = "/bin/false"
 SMB idmap uid = "16777216-33554431"
 SMB idmap gid = "16777216-33554431"
nss_sss is disabled by default
nss_wins is disabled
nss_mdns4_minimal is disabled
DNS preference over NSS or WINS is disabled
pam_unix is always enabled
 shadow passwords are enabled
 password hashing algorithm is sha512
pam_krb5 is disabled
 krb5 realm = "EXAMPLE.COM"
 krb5 realm via dns is disabled
 krb5 kdc = "kerberos.example.com"
 krb5 kdc via dns is disabled
 krb5 admin server = "kerberos.example.com"
pam_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
 LDAP schema = "rfc2307"
pam_pkcs11 is disabled
 use only smartcard for login is disabled
 smartcard module = ""
 smartcard removal action = ""
pam_fprintd is enabled
pam_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
pam_sss is disabled by default
 credential caching in SSSD is enabled
 SSSD use instead of legacy services if possible is enabled
pam_cracklib is enabled (try_first_pass retry=3 type=)
pam_passwdqc is disabled ()
pam_access is disabled ()
pam_mkhomedir or pam_oddjob_mkhomedir is enabled ()
Always authorize local users is enabled ()
Authenticate system accounts against network services is disabled

게스트와 동일한 ID를 보려면 NAS를 LDAP에 연결할 필요가 없습니까?
Yanick Girouard

야닉, 답장을 보내 주셔서 감사합니다. 내 NAS 장치는 실제로 NFS 데몬을 실행하는 다른 CentOS 상자입니다. 다른 LDAP 클라이언트와 동일하게 구성되었으며 동일한 "아무도"문제가 없습니다.
jamieb

답변:


22

Google 검색에 추가 할 사항-우리가 무엇을하든 nfs 마운트는 사용자 ID를 올바르게 매핑하지 못하는 동일한 문제가 있습니다.

문제가 idmapd에서 잘못된 구성의 잘못된 ID를 캐시했으며 구성을 수정해도 정렬되지 않았습니다.

이 문제를 해결하기위한 centos의 명령은 nfsidmap -c (캐시 지우기)입니다.

잘만되면 이것은 절망적 인 검색 자에게 도움이됩니다 ..


18

해결되었습니다!

/var/log/messages원격 클라이언트에서 내보내기를 마운트하려고 할 때 NFS 서버 에서이 줄을 확인 했습니다.

Feb 28 15:54:02 storage1 rpc.idmapd[1651]: nss_getpwnam: name 'nobody' does not map into domain 'localdomain'

이로 인해 처음 몇 줄을 보았습니다 /etc/idmapd.conf.

[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
#Domain = local.domain.edu

그런 다음 Domain=subdomain.mycompany.com주석 처리 된 "도메인"줄 아래에 추가했습니다 . 저장이 종료 한 후 실행 /etc/init.d/rpcidmapd restart하고 /etc/init.d/nfs restart.


이것은 나를 도왔다. 서버와 모든 클라이언트 모두에서이 변경을 수행해야합니다.
Michael Hampton


0

NFS 서버가 Centos / RHEL 5를 실행하고 있습니까?

그렇다면 NFSv3을 내보내는 것입니다. NFSv4는 이제 Centos6 (및 최신 Ubuntu 변형)의 기본값입니다.

빠른 수정은 / etc / fstab의 마운트 옵션에 "vers = 3"을 추가하는 것입니다.

예 :

//10.0.0.1:/home / home nfs 기본값, vers = 3, rw, noatime 0 0


제안 해 주셔서 감사합니다. LDAP 서버, 클라이언트 및 NFS 서버는 모두 CentOS 6.2를 실행하고 있습니다. 버전 3 옵션으로 마운트하려고하면 클라이언트에 권한 거부 오류가 발생합니다.
jamieb

이것을 루트 사용자로 테스트하고 있습니까? linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/…을 읽는 유용한 빛 . NFS 서버에서 no_root_squash를 활성화 할 가치가 있습니다.
NcA

해결되었습니다 (아래 답변 참조)! LDAP를 주로보고 있었기 때문에 NFS에 대해 더 많이 생각하게 해주셔서 감사합니다.
jamieb

0

all_squash와 같이 "아무도"소리로 매핑되는 모든 것이 켜져 있습니다.

보세요:

http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-server-config-exports.html

NFS 서버의 / etc / exports 파일이 실수로 UID를 스쿼시하지 않았는지 확인하십시오. "no_all_squash"가 기본값이지만,이를 명시 적으로 설정하고 어떤 일이 발생하는지 확인할 수 있습니다.


1
불행히도 운이 없다. 그러나 흥미롭게도 mount storage1:/nas/opt /mnt/test독립형 클라이언트에서 여전히 "아무도없는"문제가 발생하지만 NFS 서버의 동일한 명령은 문제없이 작동합니다. 이것이 NFS 또는 SSSD / NSS 문제인지 알고 싶습니다.
jamieb

0

나를위한 해결책은 로컬 컴퓨터에 대한 DNS 레코드가 있는지 확인하는 것입니다. 역방향 조회 레코드도 존재하는 경우에도 도움이됩니다. 결과적으로, 아무도 사용자와 그룹이 루트로 대체되었습니다. 얼마나 간단합니까?!? PS는 DNS 레코드가 생성되면 로컬 컴퓨터를 재부팅해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.