Розуміння групи "персоналу"


23

Відомо, що всі користувачі є членами групи «персонал». Якщо ви налаштовуєте стандартного користувача та створюєте будь-який файл, у списку цього файлу в терміналі з 'ls -la' відображається група користувачів як «персонал».

Використовуючи команду dscacheutil, ми можемо побачити інформацію про групи. Наприклад: -

dscacheutil -q group -a name admin

Це повертає інформацію про групу адміністратора, включаючи всіх членів.

Однак, коли я дивився на "штатну" групу, я очікував побачити стандартних користувачів як членів групи, але це не так: -

dscacheutil -q group -a name staff

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

Отже, якщо всі стандартні користувачі є членами групи персоналу, чому вони не з’являються тут?

Чи є ще одна команда, яка може показати реальних членів групи персоналу?


3
Чудове запитання. Я, мабуть, захочу збагатити це, якщо на нього не буде приділено достатньої уваги. Я думав, що якось закодовано показувати лише членів первинної групи, але всі мої названі користувачі (вище приховано 500) - усі первинні групи як персонал і все ще не вказані утилітом кешу, як у групі (де дивно корінь з GID колесо в списку ...) Незвичайний соус справді ...
bmike

Спасибі @bmike, що цікаво, те саме можна побачити в додатку Directory Utility, який знаходиться в / System / Library / CoreServices.
TheDarkKnight

О, я подумав, що тільки корінь є членом персоналу. Як / тощо / групові шоу: персонал: *: 20: root
Скотт Уолтер

@ScottWalter, користувачі адміністратора є членами "персоналу" та "адміністратора", тоді як не адміністратори - лише групи "співробітників". Дивіться розділ "Власник, група, інші" тут: support.apple.com/kb/HT2963
TheDarkKnight

Відповіді:


11

Є лише один надійний спосіб отримати всіх членів групи в OS X, і відповідь від 2DD8847 охоплює це. Щодо "чому", я не можу запропонувати логічного пояснення. Все, що я можу вам сказати, - це те, що відрізняє результати.

Ці підходи не включають користувачів, які є лише членами групи через PrimaryGroupID. Один із способів подумати про це - це те, що ці користувачі, які не були внесені до списку, офіційно не були додані до групи працівників. Їм просто надали PrimaryGroupID, який відповідає персоналу gid. Тому вони офіційно не перераховані з деякими командами. Я знаю, це абсурд.

РЕЗУЛЬТАТИ БЕЗКОШТОВНО:

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

ПОВНІШНІ РЕЗУЛЬТАТИ:

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

Все, що я вам справді можу сказати, це те, що, не шукаючи членів групи за їх груповою групою PrimaryGroupID (замість того, щоб перелічувати членів групи), це не дасть вам повних результатів. Крейдуйте його до дивацтва Unix. Тут багато.

Сподіваюся, що це допомагає!

Джерело


"Ці користувачі, які не перелічені в списку, офіційно не були додані до групи персоналу. Їм просто надали PrimaryGroupID, який відповідає персоналу gid" - Тепер це має сенс. Цікаво, чи існує дійсний вектор атаки безпеки при цьому; якщо можливо встановити користувач PrimaryGroupId без фактичного додавання їх до групи адміністратора, чи це дасть їм права адміністратора? Я буду розслідувати.
TheDarkKnight

Я не хотіла припускати, що щось не так. Не хвилюйтесь, співробітники не мають прав адміністратора на вашій машині. В OS X майже все встановлено власником персоналу, але пам’ятайте, що інші дозволи переважають зловживання цією реальністю. Кожна папка користувача "читається" будь-яким іншим користувачем, але всередині кожної папки користувача ви побачите, що окремий елемент встановлений таким чином, що скасований доступ для читання. Отже / Користувачі / Ім'я користувача / Настільний користувач має всіх, хто встановив " Без доступу" - це не чисте управління дозволами, але воно працює і ви захищені.
sgelliott

4
Можливо, ви мали на увазіChalk it up to the oddities of OS X. There are many.
user3019105

я дивився диск з іншої машини, і так, імена користувачів перейменовували, я став "Стівом" як користувач 502, а може, 501. Так чи інакше. моя теорія полягає в тому, що "персонал", ймовірно, мав би бути названий "macosx", і це використовує Finder, щоб робити "кореневі" речі від імені постійних користувачів. просто випадкова теорія.
Томачі

2
@Tomachi персонал не міг бути macosx, його було створено за кілька років до OsX, коли система була NeXT
користувач151019

4

Чого саме ви хочете досягти / зробити?

Ця команда перераховує всіх користувачів у групі персоналу:

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

Джерело

Пояснення: Група працівників має PrimaryGroupID 20.


Я намагаюся зрозуміти, чому група персоналу не показує свій список членів через dscacheutil та утиліту Directory. Моя головна мета - отримати список учасників із групи, що використовує C ++, не викликаючи окремий процес. Під час цього процесу я натрапив на те, що група не відображає її членів, і я хочу знати, чому це так.
TheDarkKnight

Чому dscacheutil не перераховує групу працівників ... я не знаю. developer.apple.com/library/mac/documentation/Darwin/Reference/… Це реалізація, і вони якось вирішили їх не показувати.
Бастіан Грубер

2
Вибачте, але сказати "це реалізація" та посилання на довідкові сторінки dscacheutil не відповідає на запитання.
TheDarkKnight

Для C ++ ви можете викликати функцію оболонки. Я вважаю цей сайт дуже корисним: blog.earth-works.com/2012/09/13/… Я не думаю, що є причина, чому вони не показують його. Вони побудували функцію, і вам щось не вистачає. Що мені сказати. Вони заважають вам показувати членів, тому що їм це подобається?
Бастіан Грубер

2
Виклик функції оболонки породжує окремий процес. З різних причин це неможливо для проекту, над яким я працюю. Зараз я
дивлюсь на службу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.