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.