CentOS 6 + LDAP + NFS. La proprietà del file è bloccata su "nessuno"


11

Sto cercando di ottenere l'autenticazione LDAP e le directory home esportate da NFS su CentOS 6 da alcuni giorni. Sono arrivato al punto che ora posso accedere al computer client usando il nome utente e la password in LDAP. Sul client, / home e / opt sono montati in fstab su NFS. Tuttavia, ogni file in / opt e / home è di proprietà di nobody:nobody(uid: 99, gid: 99) sul client.

Comunque il mio uid e gid sembrano essere impostati correttamente:

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

Cos'altro posso controllare? Ecco alcuni file di configurazione sul mio 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

output 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

Non è necessario collegare anche il NAS a LDAP se si desidera che visualizzi gli stessi ID dei propri ospiti?
Yanick Girouard,

Yanick, grazie per la risposta. La mia unità NAS è in realtà solo un'altra scatola CentOS che esegue un demone NFS. È configurato come i miei altri client LDAP e ha lo stesso problema "nessuno".
Jamieb,

Risposte:


22

Una nota da aggiungere a questo per i ricercatori di Google: abbiamo avuto lo stesso problema in cui, indipendentemente da ciò che facevamo, il mount di nfs non mappava correttamente gli ID utente.

Il problema era che idmapd aveva memorizzato nella cache gli ID errati dalla configurazione errata e nessun aggiustamento della configurazione lo avrebbe ordinato.

Il comando su centos per risolvere questo problema era nfsidmap -c (svuota cache).

Spero che questo aiuti un ricercatore disperato ..


18

Risolto!

Mi è capitato di notare questa linea /var/log/messagessul mio server NFS quando stavo tentando di montare un'esportazione dal client remoto:

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

Questo mi ha fatto guardare le prime righe di /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

Ho quindi aggiunto Domain=subdomain.mycompany.comsotto la riga "Dominio" commentata. Salvato, chiuso e poi eseguito /etc/init.d/rpcidmapd restarte /etc/init.d/nfs restart.


Questo mi ha aiutato. Noterò che ho dovuto apportare questa modifica sia sul server che su tutti i client.
Michael Hampton


0

Il tuo server NFS esegue Centos / RHEL 5 per caso?

In tal caso, sta esportando NFSv3. NFSv4 è ora predefinito per Centos6 (e recenti varianti di Ubuntu).

La soluzione rapida è aggiungere "vers = 3" nelle opzioni di montaggio in / etc / fstab.

per esempio

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


Grazie per il suggerimento Il server LDAP, il client e il server NFS eseguono tutti CentOS 6.2. Ricevo un errore di autorizzazione negata sul client quando provo a montarlo con l'opzione versione 3.
Jamieb,

Lo stai testando come utente root? Qualche utile lettura leggera linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/… . Potrebbe valere la pena abilitare no_root_squash sul server NFS.
NC

Risolto (vedi risposta sotto)! Grazie per avermi fatto riflettere di più su NFS dato che guardavo principalmente a LDAP.
Jamieb,

0

Tutto ciò che viene mappato su "nessuno" suona come all_squash è attivato.

Dare un'occhiata a:

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

e verifica che il file / etc / exports del server NFS non schiacci involontariamente gli UID. "no_all_squash" dovrebbe essere predefinito, ma puoi provare a impostarlo esplicitamente e vedere cosa succede.


1
Sfortunatamente, sfortunatamente. Ma interessante, mount storage1:/nas/opt /mnt/testsul client standalone mi dà ancora il problema "nessuno", ma lo stesso comando sul server NFS funziona senza problemi. Vorrei sapere se si trattava di un problema NFS o SSSD / NSS.
Jamieb,

0

La soluzione per me è assicurarsi che il record DNS esista per il computer locale. Aiuta anche se esiste anche il record di ricerca inversa. Di conseguenza, l'utente e il gruppo nessuno sono stati sostituiti da root. Quanto è semplice?!? PS ricorda di riavviare il computer locale dopo aver creato i record DNS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.