Verständnis der Benutzergruppe "Mitarbeiter"

23

Es ist bekannt, dass alle Benutzer Mitglieder der Gruppe "Mitarbeiter" sind. Wenn Sie einen Standardbenutzer einrichten und eine Datei erstellen, zeigt eine Liste dieser Datei im Terminal mit 'ls -la', dass die Benutzergruppe 'Mitarbeiter' ist.

Mit dem Befehl dscacheutil können Informationen zu Gruppen angezeigt werden. Beispielsweise: -

dscacheutil -q group -a name admin

Dies gibt Informationen über die Administratorgruppe zurück, einschließlich aller Mitglieder.

Bei der Betrachtung der Gruppe "Mitarbeiter" hatte ich jedoch erwartet, Standardbenutzer als Mitglieder der Gruppe zu sehen. Dies ist jedoch nicht der Fall:

dscacheutil -q group -a name staff

name: staff
password: *
gid: 20
users: root

Wenn alle Standardbenutzer Mitglieder der Mitarbeitergruppe sind, warum werden sie hier nicht angezeigt?

Gibt es einen anderen Befehl, der die tatsächlichen Mitglieder der Personalgruppe anzeigen kann?

Der dunkle Ritter
quelle
3
Gute Frage. Ich werde das wahrscheinlich belohnen wollen, wenn es nicht genug Aufmerksamkeit bekommt. Ich dachte, es wäre irgendwie so programmiert, dass nur die primären Gruppenmitglieder angezeigt werden, aber alle meine benannten Benutzer (über 500 versteckt) sind alle primäre Gruppen als Mitarbeiter und werden vom Cache-Dienst nicht wie in der Gruppe aufgeführt (wo seltsamerweise root mit GID of Rad ist aufgeführt ...) Odd Sauce in der Tat ...
bmike
Interessanterweise kann man @bmike das gleiche in der Directory Utility-App sehen, die sich unter / System / Library / CoreServices befindet.
TheDarkKnight
Oh, ich dachte, dass nur root ein Mitarbeiter ist. Like / etc / group shows: staff: *: 20: root
Scott Walter
@ScottWalter, Benutzer mit Administratorrechten sind Mitglieder von 'staff' und 'admin', während Benutzer ohne Administratorrechte nur Mitglieder der Gruppe 'staff' sind. Siehe Abschnitt "Eigentümer, Gruppe, Andere" hier: support.apple.com/kb/HT2963
TheDarkKnight

Antworten:

11

Es gibt nur einen zuverlässigen Weg, um alle Mitglieder einer Gruppe in OS X zu bekommen, und die Antwort von 2DD8847 deckt dies 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 keine Benutzer ein, die nur Mitglieder der Gruppe über PrimaryGroupID sind. Eine Möglichkeit ist, dass diese nicht aufgelisteten Benutzer nicht offiziell zur Mitarbeitergruppe hinzugefügt wurden. Sie erhielten nur eine PrimaryGroupID, die mit der Personal-GID übereinstimmt. Daher sind sie mit einigen Befehlen nicht offiziell gelistet. 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]

Ich kann Ihnen nur sagen, dass Sie keine vollständigen Ergebnisse erhalten, wenn Sie die Gruppenmitglieder nicht anhand ihrer PrimaryGroupID nachschlagen (anstatt die Mitglieder einer Gruppe aufzulisten). Kreide es bis zu den Kuriositäten von Unix. Da sind viele.

Hoffentlich hilft das!

Quelle

sgelliott
quelle
"Diese nicht aufgelisteten Benutzer wurden der Mitarbeitergruppe nicht offiziell hinzugefügt. Sie erhielten nur eine PrimaryGroupID, die mit der Mitarbeitergruppe übereinstimmt." - Das macht nun Sinn. Ich frage mich, ob es einen gültigen Sicherheitsangriffsvektor gibt. Wenn es möglich ist, die PrimaryGroupId eines Benutzers festzulegen, ohne sie tatsächlich der Admin-Gruppe hinzuzufügen, würden sie dann Administratorrechte erhalten? Ich werde nachforschen.
TheDarkKnight
Ich wollte nicht vorschlagen, dass etwas nicht stimmt. Keine Sorge, die Mitarbeiter haben keine Administratorrechte auf Ihrem Computer. In OS X hat fast alles den Eigentümer auf Personal eingestellt, aber denken Sie daran, dass andere Berechtigungen den Missbrauch dieser Realität außer Kraft setzen. Jeder Benutzerordner ist für jeden anderen Benutzer "lesbar". In jedem Benutzerordner wird jedoch für ein einzelnes Element festgelegt, dass der Lesezugriff widerrufen wird. Also hat / Users / username / Desktop Benutzer jeder auf No Access gesetzt - Es ist keine saubere Berechtigungsverwaltung, aber es funktioniert und Sie sind sicher.
Sgelliott
4
Vielleicht Chalk it up to the oddities of OS X. There are many.
meintest
Ich habe mir eine Disc von einem anderen Computer angesehen und ja, die Benutzernamen wurden umbenannt. Ich wurde "Steve" als Benutzer 502 oder vielleicht 501. Jedenfalls. Nach meiner Theorie hätte "staff" wahrscheinlich "macosx" heißen sollen und wird vom Finder verwendet, um "rooty" -Dinge im Namen der regulären Benutzer zu erledigen. nur eine zufällige Theorie.
Tomachi
2
@Tomachi-Mitarbeiter konnten nicht macosx sein, es wurde Jahre vor OsX eingerichtet, als das System NeXT
user151019
4

Was genau möchten Sie erreichen / tun?

Dieser Befehl listet alle Benutzer in der Mitarbeitergruppe auf:

dscl . -list /Users PrimaryGroupID | grep ' 20$'

Quelle

Erläuterung: Die Mitarbeitergruppe hat die PrimaryGroupID 20.

Bastian Gruber
quelle
Ich versuche zu verstehen, warum die Mitarbeitergruppe ihre Mitgliederliste nicht über dscacheutil und das Verzeichnisdienstprogramm anzeigt. Mein Hauptziel ist es, die Liste der Mitglieder einer Gruppe mit C ++ abzurufen, ohne einen separaten Prozess aufzurufen. Während dieses Prozesses bin ich auf das Problem gestoßen, dass die Gruppe ihre Mitglieder nicht anzeigt, und ich möchte wissen, warum dies der Fall ist.
TheDarkKnight
Warum dscacheutil die Mitarbeitergruppe nicht auflistet, weiß ich nicht. developer.apple.com/library/mac/documentation/Darwin/Reference/… Es ist eine Implementierung und irgendwie haben sie beschlossen, sie nicht zu zeigen.
Bastian Gruber
2
Tut mir leid, aber wenn Sie sagen, dass es sich um eine Implementierung handelt, und wenn Sie auf die Manpages von dscacheutil verlinken, wird die Frage nicht beantwortet.
TheDarkKnight
Für C ++ können Sie eine Shell-Funktion aufrufen. Ich fand diese Seite sehr hilfreich: blog.earth-works.com/2012/09/13/… Ich glaube nicht, dass es einen Grund gibt, warum sie es nicht zeigen. Sie haben eine Funktion gebaut und Ihnen fehlt etwas ... was soll ich sagen. Sie hindern Sie daran, Ihnen die Mitglieder zu zeigen, weil sie es mögen?
Bastian Gruber
2
Das Aufrufen einer Shell-Funktion erzeugt einen separaten Prozess. Aus verschiedenen Gründen ist dies für das Projekt, an dem ich arbeite, nicht realisierbar. Ich sehe mich jetzt die Identitätsdienste an: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight