Was bedeutet das zweite Feld in / etc / group?

18

Eine Beispieldatei /etc/groupenthält die folgenden Einträge:

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

Die Manpages, die ich gelesen habe (Debian & OSX), besagen, dass das zweite Feld das Speichern eines Gruppenpassworts ist. Da sie selten verwendet werden, wird in der Regel ein Stern *oder ein Sternchen xdarin platziert, anstatt es leer zu lassen.

Die shadowManpage sagt auch, dass dieses zweite Feld das Ergebnis der cryptFunktion speichern soll . Wenn ein ungültiges Ergebnis gespeichert wird (z. B. *oder !), kann das Kennwort nicht als Authentifizierungsmethode verwendet werden.

Gilt das auch für die groupDatei? Warum habe ich 3 verschiedene Zeichen in meiner groupDatei, die alle die gleiche Bedeutung haben? Kann ich sicher alles auf ändern *?

Tonin
quelle
Was würden Sie erreichen, indem Sie sie alle auf ändern *?
Jordanien
Ich sehe nur die !Verwendung für eine einzelne Gruppe auf einem einzelnen Server von 10+, die ich derzeit verwalte. Zur Vereinfachung einiger Überprüfungsskripte würde es Dinge klären, wenn immer das gleiche Zeichen vorhanden ist. Na ja, wenn es tatsächlich dasselbe bedeutet, natürlich.
Tonin

Antworten:

28

Sie denken , dass das !, *oder xhat eine besondere Bedeutung hier, und sorgen sich daher , dass es vielleicht einige Unterscheidung unter ihnen sein.

Tatsache ist, dass diese Charaktere einfach deshalb ausgewählt werden, weil sie sich zumindest für westliche Augen von anderen abheben. Diese Zeichen weisen auf einen fehlenden Wert, einen Ausnahmefall oder eine Warnung hin. Sie könnten boogaboogahier setzen und genau den gleichen Effekt haben.

Dies liegt an der Art und Weise, wie Kennwörter auf Unix-Systemen gehandhabt werden. Wenn das System einen Passworteintrag erhält, wird dieser gehasht und mit dem gespeicherten Hash verglichen. Daher ist hier nur wichtig, dass Sie ein Zeichen oder eine Zeichenfolge verwenden, die möglicherweise kein gültiger Kennwort-Hash sein kann. (Aus offensichtlichen Gründen darf auch kein Doppelpunkt enthalten sein.)

Obwohl es aus Sicht des Kernbetriebssystems keinen Unterschied zwischen diesen Zeichen gibt, gibt es einige Konventionen:

  • Wenn das Linux- pwconv(8)Programm erkennt x, bedeutet dies "Ich habe diesen öffentlichen Passwort-Hash bereits in die Shadow-Passwort-Datei verschoben".

    Dies ist in der Praxis kein wichtiger Fall, da die Tage der Umstellung auf (oder, Gott helfe Ihnen, von ) Shadow-Passwörtern hinter uns liegen.

  • Wenn Sie einen Benutzer mit usermod -Loder passwd -lsperren, !hat dies eine besondere Bedeutung, /etc/shadowda dies die Konvention für "Diesen Hash brechen, damit er nicht mehr übereinstimmt" ist.

    Das Hinzufügen eines anderen Zeichens zu dem gespeicherten Hash würde es genauso gut zerstören. Diese Konvention nur die Verletzung verhindert usermod -Uoder passwd -uaus Entriegeln des Benutzers Login. Genauso wie Sie es von Hand gesperrt haben, indem Sie ein falsches Zeichen hinzugefügt haben, können Sie es von Hand entsperren, indem Sie es entfernen.

    All dies ist jedoch nur eine Kleinigkeit in Bezug auf diese Frage. Es gibt kein groupmod -Loder gpasswd -l, daher keine !Konvention in /etc/group.

    Mehr Lappalien: wenn Sie sind auf Schloss Benutzerkonten von Hand, sollten Sie von der wegbleiben [A-Za-z0-9/\]Satz, da diese Rechts Zeichen für die Hash sind. Das ist ein Grund usermodVerwendungen !hier statt x.

Ich sehe nichts falsches darin, alle Ihre /etc/groupPasswortfelder zu normalisieren , wenn Sie sich dadurch besser fühlen. Auf diese Weise sagen Sie bereits, dass Sie diese Dateien gerne von Hand hacken, sodass Sie wahrscheinlich ohnehin nicht die Tools verwenden, die für die Unterscheidung von Bedeutung sind. Unabhängig davon wird sich die Änderung nicht auf den täglichen Systembetrieb auswirken.

Warren Young
quelle
Vielen Dank für Ihre vollständige Antwort. Ich schreibe gerade Skripte, um Benutzer und Gruppen auf meinen Servern zu überprüfen. Außerdem wollte ich wissen, ob in diesem Feld ein anderes Zeichen oder eine andere Zeichenfolge gefunden werden kann. Aus Ihrer Antwort und den nicht so trivialen Details habe ich eine weitaus bessere Sicht darauf. Danke noch einmal!
Tonin
1
Für die Skripterstellung sollten Sie wahrscheinlich anrufen getpwent(3)und Freunde sein. Perl hat Wrapper für diese in seiner Standardbibliothek, ebenso wie jede andere auf Unix-Sysadmin fokussierte Skriptsprache. Wenn Sie eine Sprache ohne solche Wrapper verwenden, ist dies eine gute Ausrede für einen Tausch. :)
Warren Young
Wenn Sie noch Dinge lesen, die fast sechs Jahre alt sind ... Vielen Dank für die Antwort. Ich sehe einige historische Gründe, warum Leute Dinge wie xund verwenden *, um ein "unbenutztes" Passwortfeld zu markieren. Nur neugierig ... Die Manpage sagt, dass das Feld sehr gut leer gelassen werden kann (was im Datenbankfeld NULL heißen kann - insbesondere in Oracle, wo NULL und leere Zeichenfolge identisch sind). Zurück zu / etc / group: Warum xoder !oder verwenden *, anstatt das Feld leer zu lassen? Zwei aufeinanderfolgende Doppelpunkte stehen genauso gut wie diese Zeichen. Nicht wichtig - nur neugierig
mathguy
1
@mathguy: Ein leeres Passwortfeld bedeutet "kein Passwort" und ist nicht dasselbe wie ein Passwortfeld, das ein Zeichen enthält, das niemals mit einem echten Passwort übereinstimmen kann. Da die meisten Unix-Systeme keine Gruppenkennwörter verwenden, ist dies eine Unterscheidung ohne Unterschied, aber Sie möchten keine Angewohnheit entwickeln, die Sie in Schwierigkeiten bringt, wie dies bei den meisten Linux-Systemen der Fall ist /etc/shadow. Ich lehne auch die Vorstellung ab, dass ein Doppelpunkt genauso klar ist. Schnell, wie viele leere Felder gibt es hier ::::::? Wie viele :x:*:!:x:*:? Die gleiche Anzahl von Doppelpunkten, aber unterschiedliche Antworten, vertraue ich.
Warren Young