Zrozumienie grupy użytkowników „personel”

23

Wiadomo, że wszyscy użytkownicy są członkami grupy „pracowników”. Jeśli skonfigurujesz standardowego użytkownika i utworzysz dowolny plik, lista tego pliku w terminalu z „ls -la” pokazuje grupę użytkowników jako „personel”.

Za pomocą polecenia dscacheutil możemy zobaczyć informacje o grupach. Na przykład: -

dscacheutil -q group -a name admin

Zwraca informacje o grupie administracyjnej, w tym wszystkich członkach.

Jednak gdy patrzyłem na grupę „pracowników”, spodziewałem się, że zobaczę standardowych użytkowników jako członków grupy, ale tak nie jest:

dscacheutil -q group -a name staff

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

Jeśli więc wszyscy standardowi użytkownicy są członkami grupy pracowników, dlaczego się tutaj nie pojawiają?

Czy istnieje inne polecenie, które może pokazywać prawdziwych członków grupy pracowników?

Mroczny rycerz
źródło
3
Świetne pytanie. Prawdopodobnie będę chciał to wynagrodzić, jeśli nie przyciągnie wystarczającej uwagi. Myślałem, że to było w jakiś sposób zakodowane, aby wyświetlać tylko członków grupy podstawowej, ale wszyscy moi nazwani użytkownicy (powyżej ukrytej 500) są grupą podstawową jako personel i nadal nie są wymienieni przez pamięć podręczną jak w grupie (gdzie dziwnie root z GID z wymieniono koło ...) Rzeczywiście dziwny sos ...
bmike
Dzięki @bmike, co ciekawe, to samo można zobaczyć w aplikacji Directory Utility, która znajduje się w / System / Library / CoreServices.
TheDarkKnight
Och, myślałem, że tylko root jest członkiem personelu. Podobnie jak w przypadku / etc / group shows: staff: *: 20: root
Scott Walter
@ScottWalter, użytkownicy administracyjni są członkami „pracowników” i „adminów”, natomiast osoby niebędące administratorami są członkami tylko grupy „pracowników”. Zobacz sekcję „Właściciel, grupa, inni” tutaj: support.apple.com/kb/HT2963
TheDarkKnight

Odpowiedzi:

11

Jest tylko jeden niezawodny sposób, aby uzyskać wszystkich członków grupy w OS X, a odpowiedź 2DD8847 to obejmuje. Jeśli chodzi o „dlaczego”, nie mogę podać logicznego wyjaśnienia. Wszystko, co mogę powiedzieć, to to, co różnicuje wyniki.

Te podejścia nie uwzględniają użytkowników, którzy są tylko członkami grupy za pośrednictwem PrimaryGroupID. Jednym ze sposobów, aby o tym pomyśleć jest to, że ci użytkownicy, których nie ma na liście, nie zostali oficjalnie dodani do grupy pracowników. Właśnie otrzymali PrimaryGroupID, który pasuje do gid personelu. Dlatego nie są oficjalnie wymienione na liście niektórych poleceń. Wiem, to absurdalne.

NIEKOMPLETNE WYNIKI:

dscl . -read /Groups/[groupname]
dscl . -read /Groups/[groupname] GroupMembership
dscacheutil -q group -a name [groupname]

KOMPLETNE WYNIKI:

dscl . -list /Users PrimaryGroupID | grep [gid]

Wszystko, co mogę naprawdę powiedzieć, to to, że bez wyszukiwania członków grupy według PrimaryGroupID (zamiast wyświetlania członków grupy) nie da to kompletnych wyników. Wykreśl to osobliwościami Uniksa. Jest wiele.

Mam nadzieję, że to pomaga!

Źródło

sgelliott
źródło
„ci użytkownicy, których nie ma na liście, nie zostali oficjalnie dodani do grupy pracowników. Po prostu otrzymali PrimaryGroupID, który pasuje do gid personelu” - Teraz to ma sens. Zastanawiam się, czy jest w tym ważny wektor ataku bezpieczeństwa; jeśli możliwe jest ustawienie PrimaryGroupId użytkownika bez faktycznego dodania go do grupy administracyjnej, czy to dałoby im uprawnienia administratora? Zbadam.
TheDarkKnight
Nie chciałem sugerować, że coś jest nie tak. Nie martw się, członkowie personelu nie mają uprawnień administratora na twoim komputerze. W OS X prawie wszystko ma właściciela ustawionego na personel, ale pamiętaj, że inne uprawnienia zastępują niewłaściwe użycie tej rzeczywistości. Każdy folder użytkownika jest „czytelny” dla każdego innego użytkownika, ale w każdym folderze użytkownika zobaczysz, że indywidualny element jest ustawiony tak, że dostęp do odczytu został cofnięty. Tak więc / Users / nazwa użytkownika / Desktop ma dla wszystkich użytkowników ustawienie Brak dostępu - To nie jest czyste zarządzanie uprawnieniami, ale działa i jesteś bezpieczny.
sgelliott
4
Może miałeś na myśliChalk it up to the oddities of OS X. There are many.
user3019105
patrzyłem na dysk z innej maszyny i tak, nazwy użytkowników zostały zmienione, stałem się „steve” jako użytkownik 502, a może 501. w każdym razie. moją teorią jest to, że „personel” prawdopodobnie powinien był zostać nazwany „macosx” i jest używany przez Findera do robienia „rooty” w imieniu zwykłych użytkowników. tylko losowa teoria.
Tomachi
2
Personel @Tomachi nie mógł być macosxem, który został skonfigurowany na lata przed OsX, gdy system był NeXT
użytkownik151019
4

Co dokładnie chcesz osiągnąć / zrobić?

To polecenie wyświetla listę wszystkich użytkowników w grupie pracowników:

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

Źródło

Objaśnienie: Grupa personelu ma PrimaryGroupID o wartości 20.

Bastian Gruber
źródło
Próbuję zrozumieć, dlaczego grupa pracowników nie wyświetla swojej listy członków za pomocą dscacheutil i Directory Utility. Moim głównym celem jest pobranie listy członków z grupy za pomocą C ++, bez wywoływania osobnego procesu. Podczas tego procesu natknąłem się na problem braku wyświetlania członków grupy i chcę wiedzieć, dlaczego tak jest.
TheDarkKnight
Dlaczego dscacheutil nie wymienia grupy pracowników ... nie wiem. developer.apple.com/library/mac/documentation/Darwin/Reference/… To implementacja i jakoś postanowili ich nie pokazywać.
Bastian Gruber
2
Przykro nam, ale powiedzenie „to implementacja” i linkowanie do stron podręcznika dscacheutil nie odpowiada na pytanie.
TheDarkKnight
W przypadku C ++ można wywołać funkcję powłoki. Uważam, że ta strona jest bardzo pomocna: blog.earth-works.com/2012/09/13/ ... Nie sądzę, żeby istniał jakiś powód, dla którego jej nie pokazują. Zbudowali funkcję i brakuje czegoś… co powinienem powiedzieć. Nie pozwalają ci pokazać członków, ponieważ im się podoba?
Bastian Gruber
2
Wywołanie funkcji powłoki powoduje utworzenie osobnego procesu. Z różnych powodów nie jest to wykonalne w przypadku projektu, nad którym pracuję. Teraz patrzę na usługi tożsamości: developer.apple.com/library/mac/documentation/networking/…
TheDarkKnight