Qual è il vantaggio di sincronizzare UID / GID su macchine Linux?


24

Prima di approfondire come sincronizzare gli UID / GID su tutte le mie diverse macchine Linux, vorrei sapere qual è effettivamente il vantaggio?

So che questo mantiene la sincronizzazione dei file relativamente semplice (poiché la proprietà viene "naturalmente" mantenuta). Tuttavia, ciò può essere ottenuto anche diversamente a seconda del servizio di trasmissione.

C'è qualcos'altro che trarrebbe beneficio da UID / GID coerenti?


4
Non dimenticare, quando si cambia uid / gid, di aggiornare gli archivi (file tar, ecc.) E anche i file di configurazione che possono usare ID numerici anziché uidname / groupnames.
Olivier Dulac,

Risposte:


31

debito tecnico

Per i motivi che seguono, è molto più semplice affrontare questo problema in anticipo per evitare l'accumulo di debito tecnico . Anche se ti trovi già in questa situazione, è probabilmente meglio affrontarlo nel prossimo futuro piuttosto che lasciarlo continuare a costruire.

filesystem in rete

Questa domanda sembra focalizzata sullo stretto ambito del trasferimento di file tra macchine con filesystem locali, che consente stati di proprietà specifici della macchina.

Le considerazioni sul filesystem in rete sono facilmente il caso più importante per cercare di mantenere sincronizzati i mapping UID / GID, perché di solito puoi lanciare quel "risultato altrimenti" che hai citato fuori dalla finestra nel momento in cui entrano nell'immagine. Certo, potresti non avere filesystem in rete condivisi tra questi host in questo momento ... ma per quanto riguarda il futuro? Puoi dire onestamente che non ci sarà mai un caso d'uso per l'introduzione di un filesystem in rete tra i tuoi host attuali o host creati in futuro? Non è molto lungimirante pensare di assumere il contrario.

Supponiamo che /homesia un filesystem di rete condiviso tra host1e host2nei seguenti esempi.

  • Autorizzazioni in disaccordo : /home/user1è di proprietà di un utente diverso su ciascun sistema. Ciò impedisce a un utente di accedere o modificare in modo coerente la propria directory principale tra i sistemi.
  • Chown Wars : è molto comune per un utente inviare un ticket che richiede che le autorizzazioni della propria directory home vengano riparate su un sistema specifico. Risolvendo questo problema si host2rompono le autorizzazioni host1. A volte possono essere necessari diversi di questi biglietti per lavorare prima che qualcuno faccia un passo indietro e si renda conto che è in gioco un tiro alla fune. L'unica soluzione è correggere i mapping degli ID in disaccordo. Che conduce a...
  • Inferno di ribilanciamento UID / GID : la complessità della correzione degli ID successivamente aumenta in modo esponenziale del numero di rimappature coinvolti per correggere un singolo utente su più macchine. ( user1ha l'ID di user2, ma user2ha l'ID di user17... e questo è solo il primo sistema nel cluster) Quanto più si aspetta per risolvere il problema, tanto più complesse possono diventare queste catene, che spesso richiedono i tempi di inattività delle applicazioni su più server per sincronizzare correttamente le cose.
  • Problemi di sicurezza : user2on host2ha lo stesso UID di user1on host1, permettendo loro di scrivere /home/user1su host2senza la conoscenza di user1. Queste modifiche vengono quindi valutate host1con le autorizzazioni di user1. Che cosa potrebbe andare storto? (se user1è un utente di app, qualcuno in dev sarà scoprire che è scrivibile e si apportare le modifiche. questo è un fatto dimostrato più.)

Esistono altri scenari, e questi sono solo esempi di quelli più comuni.

i nomi non sono sempre un'opzione

Qualsiasi script o file di configurazione scritto su ID numerici diventa intrinsecamente non portabile all'interno del tuo ambiente. Generalmente non è un problema perché la maggior parte delle persone non li codifica a meno che non siano assolutamente obbligati a ... ma a volte lo strumento con cui stai lavorando non ti dà una scelta in merito. In questi scenari, sei costretto a mantenere n diverse versioni dello script o del file di configurazione.

Esempio: pam_succeed_ifconsente di utilizzare i campi di user, uide gid... un'opzione di "gruppo" è assente. Se ti fossi messo in una posizione in cui ci si aspettava che più sistemi implementassero una qualche forma di restrizione di accesso basata su gruppi, avresti n diverse varianti delle configurazioni PAM. (o almeno un singolo GID sul quale devi evitare le collisioni)

gestione centralizzata

La risposta di Natxo ha coperto abbastanza bene.


Non sono così sicuro che sia corretto dire che l'uso di un filesystem in rete previene la risoluzione di problemi con uid diversi, conosco almeno un filesystem che supporta una mappa uid che consente di specificare quali gruppi e utenti corrispondono su macchine diverse.
Vality,

@Vality Se fosse una soluzione comunemente disponibile, esiterei comunque a chiamarla scalabile.
Andrew B,

Sono d'accordo, non volevo che il PO fosse impossibile, sono in gran parte d'accordo con il tuo suggerimento che la soluzione migliore è mantenerli sincronizzati.
Vality,

Grazie! Sfortunatamente "presto" è scomparso da tempo. Mentre so che una certa configurazione di ldap / kerberos è qualcosa che mi piacerebbe includere qui dove lavoro, ma non lo sarebbe ora. Per alcune altre ragioni, ero particolarmente interessato all'utilizzo di UID / GID tra sistemi interoperanti. Come ho detto, il trasferimento di file è un problema (che attualmente ha lo stato "funziona"), per questo volevo sapere se ci sono altre cose (come hai detto) influenzate anche dagli UID. Potresti aggiungere alcune parole chiave di quegli "altri scenari"? Ciò renderebbe questa una splendida risposta!
alex,

@alex Bene, intendevo "altri scenari" in termini di problemi di filesystem in rete. Non importa quanto sei in ritardo nel gioco, il problema continua a peggiorare man mano che non viene affrontato. Se i motivi che abbiamo fornito non sono adeguati, probabilmente sarebbe di aiuto se avessi guidato la tua domanda un po 'di più fornendo questi "altri motivi". Le risposte fornite finora sono piuttosto buone secondo me. Se stai cercando di persuadere la gestione, non è nostro compito fare in modo che facciano la cosa giusta.
Andrew B,

18

una volta raggiunta una certa dimensione (ed è sempre prima di quanto pensi) ti renderai conto che cambiare le password o disabilitare gli account per qualcuno su tutti gli host è una PITA. Ecco perché le persone usano sistemi con database LDAP (o NIS ma non lo fanno, al giorno d'oggi non sono sicuri) come openldap o al giorno d'oggi l'eccellente freeipa.

Conserva tutte le informazioni sugli account / gruppi in un database centrale, tutti gli host condividono tali informazioni. Puoi fare molte altre cose da lì: utilizzare le informazioni degli utenti per le autorizzazioni dei file, ovviamente, ma anche creare utenti virtuali per tutte le applicazioni che hanno i collegamenti ldap invece di dover creare anche i tuoi utenti lì (molte applicazioni web possono usare lapap per il loro database di utenti), mantenere un database di regole sudo centrale, distribuire il tuo ambiente autofs, mantenere le tue zone 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.