In / etc / group qual è il significato del secondo campo?


18

Un /etc/groupfile di esempio contiene le seguenti voci:

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

Le pagine man che ho letto (Debian e OSX) dicono che il secondo campo è quello di memorizzare una password di gruppo. Poiché vengono usati raramente, di solito viene inserito un asterisco *o un oggetto xanziché lasciarlo vuoto.

La shadowpagina man dice anche che questo secondo campo dovrebbe memorizzare il risultato della cryptfunzione. E se viene memorizzato un risultato non valido (come *o !) significa che la password non può essere utilizzata come metodo di autenticazione.

Questo vale anche per il groupfile? Perché finisco con 3 caratteri diversi nel mio groupfile che hanno tutti lo stesso significato? Posso cambiare tutto in sicurezza *?


Cosa realizzeresti cambiandoli tutti in *?
Giordania,

Vedo solo che !viene utilizzato per un singolo gruppo su un singolo server su 10+ che gestisco attualmente. Per la semplicità di alcuni script di controllo, avere sempre lo stesso carattere lì chiarirebbe le cose. Bene, se in realtà significa lo stesso, ovviamente.
Tonin,

Risposte:


28

Stai pensando che il !, *o xabbia un significato speciale qui, e quindi ti preoccupi che ci possa essere qualche distinzione tra loro.

Il fatto è che questi personaggi sono scelti semplicemente perché si distinguono, almeno per gli occhi occidentali. Questi caratteri indicano un valore mancante, un caso di eccezione o un avviso. Puoi mettere boogaboogaqui e avere esattamente lo stesso effetto.

Ciò è dovuto al modo in cui le password vengono gestite sui sistemi di tipo Unix. Quando il sistema riceve una password, l' hash e la confronta con l'hash memorizzato. Pertanto, tutto ciò che conta qui è che usi qualche carattere o sequenza di caratteri che non può essere un hash di password valido. (Inoltre, non deve includere i due punti, per ovvi motivi.)

Sebbene non vi siano differenze tra questi personaggi dal punto di vista del sistema operativo principale, esistono alcune convenzioni:

  • Quando il pwconv(8)programma Linux vede x, significa che "Ho già spostato questo hash della password pubblica nel file della password shadow".

    In pratica, questo non è un caso importante perché i giorni della conversione in (o, il cielo ti aiutano, da ) le password shadow sono ormai alle nostre spalle.

  • Se usi usermod -Lo passwd -lper bloccare un utente, !ha un significato speciale /etc/shadowperché questa è la convenzione per "rompere questo hash in modo che non corrisponda più".

    L'aggiunta di qualsiasi altro carattere all'hash memorizzato lo spezzerebbe altrettanto bene. Violando questa convenzione impedisce semplicemente usermod -Uo passwd -uda sbloccare login dell'utente. Altrettanto vero, poiché lo hai bloccato a mano aggiungendo un personaggio falso, puoi sbloccarlo manualmente rimuovendolo.

    Tutto ciò è solo curiosità rispetto a questa domanda, tuttavia. Non esiste groupmod -Lo gpasswd -l, quindi, nessuna !convenzione /etc/group.

    Più curiosità: se si sta andando ad account utente di blocco a mano, si dovrebbe stare lontano dal [A-Za-z0-9/\]set, in quanto tali sono i caratteri legali per l'hash. Questa è una ragione che usermodusa !qui invece di x.

Non vedo nulla di sbagliato in normalizzare tutti i /etc/groupcampi password, se ti fa sentire meglio. In questo modo, stai già dicendo che sei felice di hackerare questi file a mano, quindi probabilmente non sei il tipo da utilizzare gli strumenti che si preoccupano delle distinzioni comunque. Indipendentemente da ciò, il cambiamento non sta per avere un effetto sul funzionamento del sistema giorno per giorno.


Grazie per la tua risposta molto completa. Attualmente sto scrivendo script per controllare utenti e gruppi sui miei server, volevo anche sapere se in quel campo fosse possibile trovare qualsiasi altra sequenza di caratteri o caratteri. Dalla tua risposta, ei dettagli non così banali, ho una visione molto meglio su questo. Grazie ancora!
Tonin,

1
Per lo scripting, dovresti probabilmente chiamare getpwent(3)e amici. Perl ha dei wrapper per questi nella sua libreria standard, così come qualsiasi altro linguaggio di scripting focalizzato sul sysadmin di Unix. Se stai usando un linguaggio senza tali involucri, questa sarebbe una buona scusa per commerciare in su. :)
Warren Young,

Se stai ancora leggendo cose che hanno quasi sei anni ... Grazie per la risposta, vedo alcune delle ragioni storiche per cui le persone usano cose come xe *per contrassegnare un campo password "non utilizzato". Curioso però ... la pagina man dice che il campo potrebbe benissimo essere lasciato vuoto (ciò che nel campo del database può essere chiamato NULL - specialmente in Oracle che definisce NULL e stringa vuota per essere la stessa). Quindi, tornando a / etc / group: perché usare xo !o *, invece di lasciare il campo vuoto? Due due punti consecutivi si distinguono proprio come uno di questi personaggi. Non importante - solo curioso
mathguy

1
@mathguy: un campo password vuoto significa "nessuna password", non la stessa cosa di un campo password contenente un carattere che non può mai corrispondere a una vera password. Dal momento che la maggior parte dei sistemi Unix non usa password di gruppo, è una distinzione senza differenze, ma non vorrai sviluppare un'abitudine che ti metterà nei guai, come con la maggior parte dei sistemi Linux ' /etc/shadow. Inoltre, rifiuto l'idea che un doppio colon sia altrettanto chiaro. Veloce, quanti campi vuoti sono qui: ::::::? Ora, come molti: :x:*:!:x:*:? Lo stesso numero di due punti, ma risposte diverse, mi fido.
Warren Young,
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.