CentOS 6 + LDAP + NFS. Der Dateibesitz bleibt bei "niemandem" hängen

11

Ich habe seit einigen Tagen versucht, die LDAP-Authentifizierung und NFS-exportierte Home-Verzeichnisse unter CentOS 6 zum Laufen zu bringen. Ich bin an dem Punkt angelangt, dass ich mich jetzt mit dem Benutzernamen und dem Kennwort in LDAP am Clientcomputer anmelden kann. Auf dem Client werden / home und / opt in der fstab über NFS bereitgestellt. Jede Datei in / opt und / home gehört jedoch nobody:nobody(uid: 99, gid: 99) auf dem Client.

Meine UID und GID scheinen jedoch richtig eingestellt zu sein:

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

Was kann ich noch überprüfen? Hier sind einige der Konfigurationsdateien auf meinem Client:

/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 Ausgabe:

[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
quelle
Müssen Sie Ihr NAS nicht auch mit LDAP verbinden, wenn Sie möchten, dass es dieselben IDs wie Ihre Gäste sieht?
Yanick Girouard
Yanick, danke für die Antwort. Mein NAS-Gerät ist eigentlich nur eine weitere CentOS-Box, auf der ein NFS-Daemon ausgeführt wird. Es ist genauso konfiguriert wie meine anderen LDAP-Clients und hat das gleiche "Niemand" -Problem.
Jamieb

Antworten:

22

Ein Hinweis für Google-Sucher: Wir hatten das gleiche Problem, bei dem der NFS-Mount die Benutzer-IDs nicht korrekt zuordnete, unabhängig davon, was wir getan haben.

Das Problem war, dass idmapd die falschen IDs aus der fehlerhaften Konfiguration zwischengespeichert hatte und keine Korrektur der Konfiguration sie sortieren würde.

Der Befehl für Centos, dies zu beheben, war nfsidmap -c (Cache löschen).

Hoffentlich hilft dies einem verzweifelten Sucher.

Sam
quelle
18

Gelöst!

Ich habe diese Zeile /var/log/messagesauf meinem NFS-Server bemerkt, als ich versuchte, einen Export vom Remote-Client bereitzustellen:

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

Dies veranlasste mich, die ersten Zeilen von /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

Ich habe dann Domain=subdomain.mycompany.comunter der auskommentierten Zeile "Domain" hinzugefügt . Gespeichert, beendet und dann lief /etc/init.d/rpcidmapd restartund /etc/init.d/nfs restart.

Jamieb
quelle
Das hat mir geholfen. Ich werde feststellen, dass ich diese Änderung sowohl auf dem Server als auch auf allen Clients vornehmen musste.
Michael Hampton
0

Läuft auf Ihrem NFS-Server zufällig Centos / RHEL 5?

In diesem Fall wird NFSv3 exportiert. NFSv4 ist jetzt die Standardeinstellung für Centos6 (und die neuesten Ubuntu-Varianten).

Die schnelle Lösung besteht darin, "vers = 3" in den Einhängeoptionen in / etc / fstab hinzuzufügen.

z.B

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

NcA
quelle
Danke für den Vorschlag. Auf dem LDAP-Server, dem Client und dem NFS-Server wird CentOS 6.2 ausgeführt. Ich erhalte auf dem Client einen Fehler, dem die Berechtigung verweigert wurde, wenn ich versuche, ihn mit der Option Version 3 bereitzustellen.
Jamieb
Testen Sie dies als Root-Benutzer? Einige nützliche Informationen zum Lesen von linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/… . Es könnte sich lohnen, no_root_squash auf dem NFS-Server zu aktivieren.
NcA
Gelöst (siehe Antwort unten)! Vielen Dank, dass ich mehr über NFS nachgedacht habe, da ich mich hauptsächlich mit LDAP befasst habe.
Jamieb
0

Alles, was "niemandem" zugeordnet ist, klingt so, als ob all_squash aktiviert ist.

Schauen Sie sich an:

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

und stellen Sie sicher, dass die Datei / etc / export des NFS-Servers die UIDs nicht unbeabsichtigt unterdrückt. "no_all_squash" soll die Standardeinstellung sein, aber Sie können versuchen, es explizit festzulegen und zu sehen, was passiert.

cjc
quelle
1
Leider kein Glück. Interessanterweise mount storage1:/nas/opt /mnt/testgibt mir auf dem Standalone-Client immer noch das Problem "Niemand", aber der gleiche Befehl auf dem NFS-Server funktioniert ohne Probleme. Ich wünschte, ich wüsste, ob dies ein NFS- oder SSSD / NSS-Problem ist.
Jamieb
0

Die Lösung für mich besteht darin, sicherzustellen, dass der DNS-Eintrag für den lokalen Computer vorhanden ist. Hilft auch, wenn der Reverse-Lookup-Datensatz ebenfalls vorhanden ist. Infolgedessen wurde der Benutzer und die Gruppe von niemandem durch root ersetzt. Wie einfach ist das?!? PS: Denken Sie daran, den lokalen Computer neu zu starten, sobald die DNS-Einträge erstellt wurden.

user242020
quelle