Unterschiedliche Ausgabe für Gruppen und Gruppen USERNAME nach Hinzufügen eines Benutzernamens zu einer Gruppe

7

Ich stolpere heute über ein seltsames Verhalten. Nach dem Hinzufügen eines Benutzers zu einer neuen Gruppe wie folgt:

# gpasswd -a test myuser

Wenn Sie sich dann mit einer neuen Bash-Sitzung verbinden, sehen Sie hier das Ergebnis für groupsund groups myuser:

myuser@mycomputer$ groups
wheel myuser
myuser@mycomputer$ groups myuser
wheel myuser test

Nur wenn ich neu starte, ist die Ausgabe von groupsidentisch mit groups myuser, aber nicht erforderlich, um die Gruppen in derselben Reihenfolge anzuzeigen.

Meine Frage ist also einfach: Warum?

ogr
quelle

Antworten:

12

Da Änderungen an der Gruppenmitgliedschaft erst nach dem Starten einer neuen Anmeldeshell wirksam werden . Das Starten einer neuen interaktiven Shell-Sitzung ohne Anmeldung (die Sie beim Öffnen eines neuen Terminals erhalten) ist irrelevant.

Wenn Sie also ausführen groups, werden die Gruppen gedruckt, in denen sich Ihr Benutzer gerade befindet. Diese wurden jedoch beim ersten Anmelden Ihres Benutzers eingerichtet und können erst geändert werden, wenn Sie sich erneut anmelden. Enthält groupsdaher Ihre neue Gruppe nicht.

Auf der anderen Seite, wenn Sie laufen groups myuser, das System nicht für die Gruppen die aussehen Strom gehört Benutzer im Moment sieht es die Gruppen an , dass der Benutzer myusergehört, die es durch das Lesen der Einstellungsdatei wird ( /etc/groupvermutlich) . Da Ihr Benutzer so eingerichtet ist, dass er zur neuen Gruppe in gehört /etc/groups, zeigt dieser Befehl dies auch an, obwohl Sie sich derzeit nicht in dieser Gruppe befinden, da Sie sich nicht erneut angemeldet haben.

terdon
quelle
5
newgrpkommt auch praktisch, ohne sich erneut anzumelden ;-).
Stephen Kitt
3
  • Wenn Sie groupsohne Argument ausführen , wird die Gruppenliste des aktuellen Prozesses angezeigt . Normalerweise wird die Liste einfach aus dem übergeordneten Prozess geerbt, aber es ändert sich durch login, newgrpund ähnliche.

  • Wenn Sie groupsmit einem Argument ausführen , werden die Gruppen angezeigt, die (in den Benutzerdatenbanken) für den angegebenen Benutzer aufgelistet sind . Dies ist die Gruppenliste, die loginusw. beim nächsten Ausführen für diesen Benutzer festgelegt wird.

Aus diesem Grund wirkt sich das Aktualisieren der Benutzer- / Gruppendatenbanken nur auf zukünftige Anmeldesitzungen aus. Erwarten Sie nicht, dass bereits ausgeführte Prozesse geändert werden.

Toby Speight
quelle