Es ist bekannt, dass alle Benutzer Mitglieder der Gruppe „Mitarbeiter“ sind. Wenn Sie einen Standardbenutzer einrichten und eine beliebige Datei erstellen, zeigt eine Liste dieser Datei im Terminal mit „ls -la“ die Benutzergruppe als „Staff“ an.
Mit dem Befehl dscacheutil können wir Informationen zu Gruppen anzeigen. Zum Beispiel: -
dscacheutil -q group -a name admin
Dies gibt Informationen über die Administratorgruppe zurück, einschließlich aller Mitglieder.
Wenn ich jedoch die Gruppe "Mitarbeiter" anschaue, habe ich erwartet, Standardbenutzer als Mitglieder der Gruppe zu sehen, aber das ist nicht der Fall: -
dscacheutil -q group -a name staff
name: staff
password: *
gid: 20
users: root
Wenn also alle Standardbenutzer Mitglieder der Gruppe staff sind, warum erscheinen sie dann nicht hier?
Gibt es einen anderen Befehl, der die echten Mitglieder der Mitarbeitergruppe anzeigen kann?
Es gibt nur einen zuverlässigen Weg, um alle Mitglieder einer Gruppe in OS X zu erhalten, und die Antwort von 2DD8847 deckt das ab. Was das "Warum" betrifft, kann ich keine logische Erklärung anbieten. Ich kann Ihnen nur sagen, was die Ergebnisse unterscheidet.
Diese Ansätze schließen Benutzer nicht ein, die nur Mitglieder der Gruppe über PrimaryGroupID sind. Man könnte sich das so vorstellen, dass diese nicht aufgeführten Benutzer nicht offiziell zur Mitarbeitergruppe hinzugefügt wurden. Sie haben gerade eine PrimaryGroupID erhalten, die mit der Mitarbeiter-GID übereinstimmt. Daher sind sie bei einigen Befehlen nicht offiziell aufgeführt. Ich weiß, es ist absurd.
UNVOLLSTÄNDIGE ERGEBNISSE:
dscl . -read /Groups/[groupname]
dscl . -read /Groups/[groupname] GroupMembership
dscacheutil -q group -a name [groupname]
VOLLSTÄNDIGE ERGEBNISSE:
dscl . -list /Users PrimaryGroupID | grep [gid]
Alles, was ich Ihnen wirklich sagen kann, ist, dass Sie ohne das Nachschlagen von Gruppenmitgliedern anhand ihrer PrimaryGroupID (anstatt Mitglieder einer Gruppe aufzulisten) keine vollständigen Ergebnisse erhalten. Schreiben Sie es den Kuriositäten von Unix zu. Es gibt viele.
Ich hoffe, das hilft!
Chalk it up to the oddities of OS X. There are many.
Was genau willst du erreichen/tun?
Dieser Befehl listet alle Benutzer in der Gruppe staff auf:
dscl . -list /Users PrimaryGroupID | grep ' 20$'
Erläuterung: Die Mitarbeitergruppe hat die PrimaryGroupID 20.
Warum halten sich hier alle an diese umständlichen dscl
Befehle dscacheutil
?
Warum nicht den viel einfacheren id
Befehl (und seinen noch einfacheren group
Friend-Befehl) verwenden?
id - Gn <user>
gibt Ihnen das, was Sie sich für jeden Mac-Benutzer wünschen, einschließlich der 50x "normalen" Mac-Benutzer.
z.B.
> id -Gn 501 staff everyone localaccounts
_appserverusr admin _appserveradm _lpadmin com.apple.sharepoint.group.2 com.apple.sharepoint.group.1 _appstore
_lpoperator _developer _analyticsusers com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh com.apple.access_remote_ae
oder, wenn Sie stattdessen die Gruppen-IDs möchten:
> id -G myusername
20 12 61 79 80 81 98 702 701 33 100 204 250 395 398 399 400
staff
?
Fahrrad
Der dunkle Ritter
Scott Walter
Der dunkle Ritter
Benutzer83961