Come impostare correttamente le autorizzazioni per la cartella NFS? Autorizzazione negata sull'estremità di montaggio.


46

Sto cercando di connettermi a una cartella NFS sul mio server di sviluppo. Il proprietario della cartella sul server dev è darren e darren group.

Quando lo esporto e lo monto sul mio Mac usando l'Utility Disco, si monta, ma poi quando provo ad aprire la cartella dice che non ho i permessi. Ho impostato rw, sync e no_subtree_check. L'utente sul Mac è più forte con un gruppo di gruppi.

Devo avere lo stesso gruppo e lo stesso utente impostati per accedere alla cartella?


2
Grazie per la tua domanda, questo thread ha risolto il problema per me! Ma per favore accetta la risposta con il maggior numero di voti.
mamiu,

Risposte:


61

NFS è basato sull'autenticazione RPC. Con NFS versione 3, il meccanismo di autenticazione più comune è AUTH_UNIX. L'ID utente e l'id gruppo del sistema client vengono inviati in ogni chiamata RPC e le autorizzazioni di questi ID sul file a cui si accede vengono verificate sul server. Affinché ciò funzioni, l'UID e GID devono essere gli stessi sul server e sui client. Tuttavia, è possibile forzare tutti gli accessi come singoli utenti e gruppi combinando le opzioni di esportazione all_squash, anonuid e anongid. all_squash mapperà tutti gli UID e GID per l'utente anonimo e anonuid e anongid imposteranno l'UID e GID dell'utente anonimo. Ad esempio, se il tuo UID e GID sul tuo server di sviluppo sono entrambi 1001, puoi esportare la tua home directory con una linea come

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Conosco meno NFS versione 4, ma penso che tu possa configurare rpc.idmapd sui client per modificare l'UID e il GID che inviano al server.


7
Ho trovato questa risposta cercando di risolvere un problema con Yosemite nfs di Apple OS X. Questa risposta è molto più pertinente e accurata della risposta accettata. Non è consigliabile né è possibile abbinare UID / GID tra i sistemi. Un utente root sul sistema A probabilmente non è un utente root sul sistema B.
Allan,

28

Quando monti NFS, le tue autorizzazioni con cui lo stai montando devono corrispondere a quelle che hai sul server. Ad esempio, se il tuo utente ha solo l'accesso in sola lettura, il montaggio con lettura / scrittura ti farà vedere gli stessi errori menzionati nel tuo post quando provi a caricare effettivamente il montaggio. Sfortunatamente, questo apparirà SOLO quando accedi alla cartella, non quando la monti effettivamente.

Si desidera inoltre assicurarsi che l'utente NFS sia in esecuzione come sul server e che l'utente sul client stia utilizzando lo stesso UID e GID. È possibile verificare questi valori eseguendo id darrensia sul server che sul client. Se i valori UID e GID non corrispondono, puoi modificarli /etc/passwdper renderlo tale - ma assicurati di capire cosa stai facendo prima di modificare arbitrariamente i valori!

Alcune buone fonti:

Spero che questo possa essere d'aiuto!


Sì, non avrei dovuto provare a cambiare l'UID. Devo rifare il mio server ora. Come imitare l'UID e GID? È davvero così complicato?
Darren,

Sfortunatamente, nella mia esperienza di utilizzo di questo sul posto di lavoro, NFS è estremamente fragile, e sì - può essere così complicato. Di solito, vorrai un utente NFS dedicato con un UID / GID specifico su ciascun server / client in modo da non incorrere in questo problema. Se hai una scelta nel tuo ambiente di sviluppo (cioè, NON DEVE usare NFS), esaminare qualcosa come SSHFS farà sparire i tuoi mal di testa agli sviluppatori, ma non replicherà la stessa funzionalità di un server di produzione usando NFS.
Andrew M.

Pensi che Samba sia un'altra soluzione? L'ho usato con Windows senza problemi e penso che questo sia il modo in cui dovrò andare anche se sto usando un Mac per sviluppare la mia applicazione.
Darren,

Questa è sicuramente un'altra possibilità, se sei disposto a configurarlo.
Andrew M.

2
Esiterei a dire che NFS è fragile. È un protocollo di servizio file ormai consolidato. Esistono davvero solo due requisiti per NFS: UID / GID sincronizzato tra i client e tempo sincronizzato tra client e server. Tradizionalmente, NIS veniva utilizzato per sincronizzare le informazioni dell'utente, ma LDAP è una scelta più sicura per le nuove distribuzioni nell'ultimo decennio.
Jeff Strunk,

2

I tuoi UID e GID corrispondono su entrambi i server? Questo è ciò che sta usando per controllare l'accesso e non il nome di accesso e il gruppo.


-2

Per me il problema è stato risolto fornendo l' _netdevopzione di montaggio sul client.

Vale a dire aggiungere a /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
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.