Posso ordinare i file / etc / group e / etc / passwd?


33

My /etc/groupè cresciuto aggiungendo nuovi utenti e installando programmi che hanno aggiunto il proprio utente e / o gruppo. Lo stesso vale per /etc/passwd. La modifica è diventata un po 'complicata a causa della mancanza di struttura.

Posso ordinare questi file (ad es. Per ID numerico o alfabetico per nome) senza effetti negativi sul sistema e / o sui gestori di pacchetti?

Immagino che non abbia importanza, ma solo per essere sicuro vorrei ottenere un secondo parere. Forse rootdeve essere la 1a riga o entro le prime 1k righe o qualcosa del genere?

Lo stesso vale per /etc/*shadow.


7
"La modifica è diventata un po 'complicata a causa della mancanza di struttura" Perché modificate questi file a mano?
Kevin,

In che modo l'ordinamento del file aiuta con la modifica? È perché vuoi raggruppare account correlati e quindi apportare modifiche simili in un intervallo di righe? Ma l'account correlato sarà adiacente se si ordina per nome utente o nome?
Barmar,

@Barmar Ha aiutato principalmente perché gli account utente sono raggruppati per intervalli e separati dagli account di sistema (durante l'ordinamento per UID). Pertanto, ad esempio, è più facile individuare la linea corretta da esaminare o modificare durante la modifica vi.
Ned64,

Risposte:


50

Dovresti stare bene facendo questo : infatti, secondo l'articolo e leggendo la documentazione, puoi ordinare /etc/passwde /etc/groupper UID / GID con pwck -se grpck -s, rispettivamente.


3
@Menasheh I colori di questo sito non li distinguono tanto quanto su altri siti, ma "OK facendo questo" in questa risposta è un collegamento ipertestuale.
hvd,

2
OK, bene, ma ... In generale, ci sono validi motivi per modificare manualmente / etc / passwd e file simili? Non è meglio accedervi tramite gli strumenti progettati per crearli e modificarli?
mickeyf_supports_Monica

@mickeyf Ho visto le persone modificare manualmente /etc/passwdquando stanno apportando modifiche in batch, come cambiare il campo GECOS per tutti gli utenti a causa di spostamenti / ristrutturazioni (cambiamenti globali della stanza o del numero di telefono, ecc.) Non è più comune, ma ci sono specifici ragioni che saltano fuori di tanto in tanto.
ErikF,

44

Sebbene ErikF abbia ragione nel dire che questo dovrebbe essere generalmente a posto, voglio sottolineare un potenziale problema:

Puoi associare nomi utente diversi allo stesso UID. Se lo usi, gli strumenti che associano un UID a un nome utente generalmente selezionano il primo nome utente che trovano per tale UID /etc/passwd. L'ordinamento può far apparire prima un nome utente diverso. Ai fini della visualizzazione (ad es. ls -lOutput), entrambi i nomi utente dovrebbero funzionare, ma è possibile che tu abbia configurato un programma per accettare richieste dal nome utente A, dove negherà tali richieste se le vede provenienti dal nome utente B, anche se A e B sono lo stesso utente.


Grazie, lo so che puoi avere un utente con tcsh e uid 0 in Solaris qualche decennio fa. Tuttavia, un sistema Linux non creerà questa situazione da solo: dovrai creare manualmente un utente del genere per avere problemi con quella situazione.
Ned64

2

Avere root in prima linea è stato di fatto "standard" da molto tempo ed è molto comodo se devi mai riparare la loro shell o eliminare la password, quando si affrontano problemi o si ripristinano i sistemi.

Allo stesso modo preferisco avere utenti daemon / utils nel mezzo e utenti standard alla fine di entrambi passwde shadow.

hvd la risposta è anche molto utile per disturbare l'ordine degli utenti, specialmente nei sistemi con molti utenti gestiti a mano.

Se riesci in qualche modo a ordinare i file, ad esempio, solo per utenti standard, sarebbe più sensato che cambiare l'ordine di tutti gli utenti, imo.


1
Se ordini numericamente per UID, dovresti ottenere il tuo ordine preferito. Il root è sempre 0e i demoni hanno convenzionalmente UID inferiori a 100.
Barmar,

@Barmar Se l'ordinamento per UID e non per nome, anzi, grazie per averlo ricordato.
Rui F Ribeiro,

0

Ecco un po 'di codice bash un po' peloso per ordinare in modo simile i file shadow / gshadow in modo sicuro (usando vipw -s/ vigr -s) e sul posto dalla riga di comando:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

NOTA:

  1. vi -cpassa il comando all'editor vim a cui è assegnato come editor per vipw/ vigrdalla EDITORvariabile
  2. Il codice awk ordina shadowper passwd(e gshadowper group)
  3. Le barre rovesciate sono solo i livelli multipli di escape necessari corrispondenti ai livelli di quotazione.
  4. Il secondo comando (-c \ "wq! \") Forza scrive e chiude il file ordinato. La forza è necessaria poiché ombra / gshadow sono spesso in modalità 000 (cioè non scrivibili). Nota lo spazio tra '!' e '\' è necessario per impedire l'interpretazione della shell come '! \' che fa riferimento a un evento bash.
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.