(Anmerkung: Der groupsBefehl ist zwar immer noch nützlich, wird jedoch meistens durch den Befehl id ersetzt .)
Ein Benutzer hat eine primäre Gruppe, die traditionell in der Datei definiert ist,
/etc/passwdmit der er sich anmeldet, die heute jedoch möglicherweise andere Quellen hat. Er kann auch Mitglied zusätzlicher Gruppen sein, die als sekundäre oder ergänzende Gruppen bezeichnet werden und traditionell in der Akte angegeben /etc/groupssind, die heute jedoch auch aus zusätzlichen Quellen stammen oder von diesen impliziert werden können (wie NIS, LDAP, SAMBA usw.).
Primär- und Ergänzungsgruppen werden zum Zeitpunkt der Anmeldung definiert und bleiben aktuell . Der Benutzer kann jedoch jederzeit seine derzeit aktive Primärgruppe
mit dem newgrpBefehl ändern .
Der Anmeldevorgang legt die primäre und die ergänzende Gruppe fest. Für die spätere Version wird normalerweise die libc-Funktion
initgroups aufgerufen , die die Liste der zusätzlichen Gruppendaten zusammenstellt und an die
setgroups- Funktion weiterleitet , die sie im Kontext des Prozesses festlegt.
Die Informationsquellen für initgroupssind:
Wird von der GNU C-Bibliothek und bestimmten anderen Anwendungen verwendet, um zu bestimmen, aus welchen Quellen Namensdienstinformationen in einer Reihe von Kategorien in welcher Reihenfolge abgerufen werden sollen. Jede Kategorie von Informationen wird durch einen Datenbanknamen identifiziert.
Der groupsBefehl zeigt die Gruppen an, die aktuell auf Ihren Benutzer angewendet werden, und die Liste beginnt mit der aktuellen Primärgruppe, gefolgt von den zusätzlichen Gruppen ab dem Zeitpunkt der Anmeldung. Änderungen an den Datenquellen nach dem Zeitpunkt der Anmeldung werden in der angezeigten Liste nicht berücksichtigt.
Der groups usernameBefehl wird Linux fragen zu berechnen , die Gruppen für den Benutzer, die es in erster Linie die Dateien mit tun /etc/password
und /etc/groupsdann den zusätzlichen Quellen. Dies spiegelt die aktuelle Situation der Systemdateien wider und entspricht möglicherweise nicht den aktuellen Gruppen , die zum Zeitpunkt der Anmeldung noch gültig sind.
Der groups usernameBefehl führt möglicherweise zu einem anderen Ergebnis, wenn nicht alle Quellen verwendet werden, die der Anmeldevorgang zur Berechnung Ihrer zusätzlichen Gruppen verwendet hat. Dies ist anscheinend in Ihrem Fall der Fall. Auf diese Quellen kann möglicherweise nicht über Ihr Login zugegriffen werden oder der Befehl kann sie nur nicht aufrufen.
Die Verwendung des id usernameBefehls kann zu besseren Ergebnissen führen, es kann jedoch auch nicht garantiert werden, dass er so vollständig ist wie der Anmeldevorgang. Der idBefehl ist aktueller als der alte groupsBefehl und sollte präziser als dieser sein .
Obwohl der groupsBefehl ein genaues und korrektes Ergebnis liefert, haben Sie gut demonstriert, dass der groups usernameBefehl nicht dazu in der Lage ist, dasselbe zu tun.
Ohne den Quellcode des groupsBefehls zu untersuchen, würde ich vermuten, dass die Implementierung des groups usernameBefehls in Ihrer Linux-Distribution analysiert /etc/groups, die in Ihrem Fall nichts enthielt, aber nicht verwendet /etc/nsswitch.conf, von der alle Ihre zusätzlichen Gruppen stammten. Daher aufgeführt wird nur die primären Gruppennamen
jacob.
Weitere Informationen finden Sie unter: