Come posso eseguire il mapping UID NFSv4 tra sistemi con UID non corrispondenti?


11

Sto lavorando in un laboratorio con tre sistemi Ubuntu e vorrei eseguire il cross-mount di alcuni filesystem tramite NFS. Tuttavia, mentre i sistemi hanno alcuni nomi utente uguali, UID e GID non corrispondono, poiché i tre sistemi sono stati impostati separatamente. Quando monto un filesystem NFS da un sistema all'altro, la proprietà appare errata. Ad esempio, se UID 1000 è alice su server1 e lo stesso UID, 1000, è bob su server2, quindi quando server1 monta il filesystem esportato di server2, i file di bob sembrano essere di proprietà di alice.

Quindi c'è un modo per fare in modo che NFS (v4) converta gli UID tra i server tramite i nomi utente associati? Cercando su Google per questo, ho visto molti riferimenti a Kerberos, LDAP o NIS, che sembrano enormi ingombri per un compito così semplice e potrebbero non essere possibili poiché questi sistemi non sono gestiti centralmente. Questo link sembra indicare che ciò che chiedo è impossibile. È corretto?

Modifica: ho provato tutte le configurazioni per /etc/idmapd.confcui riesco a pensare o trovare su Internet e mentre il processo idmapd è chiaramente in esecuzione, finora non ho visto alcuna prova che NFS stia facendo alcun tentativo per usarlo, e non ha mai avuto alcun effetto sugli ID utente riportati sui montaggi NFS.


1
Credo che la cosa più semplice per te sia mettere in ordine tutte le tue cose. Potresti rimanere con il tuo attuale schema di autenticazione poiché hai solo tre caselle, ma devi sincronizzare tutti gli UID / GID degli utenti tra le tue caselle. questo non è un compito difficile in realtà.
Serge,

Sì, è quello che alla fine ho fatto.
Ryan C. Thompson,

Risposte:


5

Senza una gestione utente centralizzata, il modo "migliore" che vedo è quello di forzare tutti i server a utilizzare lo stesso GID e UID per ciascun utente. Ora ... sto solo parlando di file e / o directory.

Quello che vorrei fare in questo caso è:

  • Registrare ogni UID e GID attualmente in uso.
  • Modifica /etc/passwde /etc/groupabbina i gruppi su tutti i server. Preferibilmente a nuovi UID e GID, quindi il passaggio successivo sarà più veloce
  • Esegui questo (ci vorrà del tempo):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    

Ummm, l'istruzione "find" inizia dalla directory principale. Il comando sta cambiando la proprietà di ogni directory sul sistema. Le modifiche suggerite a questi comandi includeranno tutti i file sul sistema. Ti suggerisco di limitare le directory su cui viene eseguito questo comando o avrai una brutta giornata.

2
Da find man: -group gname True se il file appartiene al gruppo gname. Se gname è numerico e non appare nel database del gruppo (4), viene preso come ID gruppo.
BitsOfNix del

1

NFSv4 supporta il mapping ID. Se abilitato, NFS trasmetterà i nomi utente anziché gli ID numerici. Gli host con un UID numerico diverso per lo stesso utente non rappresentano un problema, poiché i nomi utente vengono mappati su uid sull'host.

Il mapping degli ID viene sempre utilizzato con le modalità di sicurezza Kerberos ( sec=krb5).

Il mapping ID può essere utilizzato anche in modalità AUTH_UNIX (impostazione predefinita sec=sys). Ho spiegato i dettagli di configurazione in risposta a: Come far funzionare idmap NFSv4 con sec = sys .

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.