CentOS 6 + LDAP + NFS. Własność pliku utknęła na „nikim”

11

Próbowałem uzyskać uwierzytelnianie LDAP, a katalogi domowe wyeksportowane przez NFS na CentOS 6 działały już od kilku dni. Doszedłem do tego, że mogę teraz zalogować się do komputera klienckiego przy użyciu nazwy użytkownika i hasła w LDAP. Na kliencie, / home i / opt są zamontowane w fstab przez NFS. Jednak każdy plik w / opt i / home jest własnością nobody:nobody(uid: 99, gid: 99) na kliencie.

Jednak moje identyfikatory UID i GID wydają się być ustawione poprawnie:

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

Co jeszcze mogę sprawdzić? Oto niektóre pliki konfiguracyjne na moim kliencie:

/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

dane wyjściowe 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
jamieb
źródło
Czy nie musisz również podłączać NASa do LDAP, jeśli chcesz, aby widział ten sam identyfikator niż twoi goście?
Yanick Girouard
Yanick, dzięki za odpowiedź. Moja jednostka NAS to właściwie kolejna skrzynka CentOS z uruchomionym demonem NFS. Jest skonfigurowany tak samo jak moi inni klienci LDAP i ma ten sam problem „nikt”.
jamieb

Odpowiedzi:

22

Uwaga do dodania do tego dla wyszukiwarek Google - mieliśmy ten sam problem, w którym bez względu na to, co zrobiliśmy, mount nfs nie odwzorował poprawnie identyfikatorów użytkowników.

Problem polegał na tym, że idmapd buforował niepoprawne identyfikatory z błędnej konfiguracji i żadne poprawienie konfiguracji nie posortowałoby go.

Poleceniem centos, aby to naprawić było nfsidmap -c (wyczyść pamięć podręczną).

Mam nadzieję, że pomoże to niektórym rozpaczliwym poszukiwaczom ...

Sam
źródło
18

Rozwiązany!

Zdarzyło mi się zauważyć tę linię /var/log/messagesna moim serwerze NFS, gdy próbowałem zamontować eksport ze zdalnego klienta:

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

To spowodowało, że spojrzałem na kilka pierwszych wierszy /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

Następnie dodałem Domain=subdomain.mycompany.compod skomentowanym wierszem „Domena”. Zapisano, wyszedł, a następnie pobiegł /etc/init.d/rpcidmapd restarti /etc/init.d/nfs restart.

jamieb
źródło
To mi pomogło. Zauważę, że musiałem wprowadzić tę zmianę zarówno na serwerze, jak i na wszystkich klientach.
Michael Hampton
0

Czy na Twoim serwerze NFS działa Centos / RHEL 5?

Jeśli tak, eksportuje NFSv3. NFSv4 jest teraz domyślny dla Centos6 (i najnowszych wariantów Ubuntu).

Szybka poprawka polega na dodaniu „vers = 3” w opcjach montażu w / etc / fstab.

na przykład

//10.0.0.1:/home / home nfs defaults, vers = 3, rw, noatime 0 0

NcA
źródło
Dzieki za sugestie. Na serwerze LDAP, kliencie i serwerze NFS działa CentOS 6.2. Otrzymuję błąd odmowy uprawnień na kliencie, gdy próbuję zainstalować go z opcją wersji 3.
jamieb
Czy testujesz to jako użytkownik root? Przydatne lekka lektura linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/… . Może warto włączyć no_root_squash na serwerze NFS.
NcA
Rozwiązany (patrz odpowiedź poniżej)! Dzięki za zastanowienie się nad NFS, ponieważ patrzyłem głównie na LDAP.
jamieb
0

Wszystko zamapowane na „nikt” nie brzmi, jakby włączony był all_squash.

Spojrzeć na:

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

i sprawdź, czy plik / etc / export serwera NFS nie mimowolnie zgniata UID. Domyślnie „no_all_squash” ma być domyślny, ale możesz spróbować ustawić go jawnie i zobaczyć, co się stanie.

cjc
źródło
1
Niestety, nie ma szczęścia. Ale, co ciekawe, mount storage1:/nas/opt /mnt/testna samodzielnym kliencie nadal daje mi problem „nikt”, jednak to samo polecenie na serwerze NFS działa bez problemu. Chciałbym wiedzieć, czy to był problem z NFS, czy SSSD / NSS.
jamieb
0

Rozwiązaniem dla mnie jest upewnienie się, że istnieje rekord DNS dla komputera lokalnego. Pomaga również, jeśli istnieje również rekord wyszukiwania wstecznego. W rezultacie nikt użytkownika i grupa zostały zastąpione przez root. Jak proste to jest! PS pamiętaj o ponownym uruchomieniu komputera lokalnego po utworzeniu rekordów DNS.

użytkownik242020
źródło