Известно, что все пользователи являются членами группы «персонал». Если вы настроите стандартного пользователя и создадите какой-либо файл, список этого файла в терминале с «ls -la» покажет, что группа пользователей — «персонал».
С помощью команды dscacheutil мы можем посмотреть информацию о группах. Например: -
dscacheutil -q group -a name admin
Это возвращает информацию о группе администраторов, включая всех участников.
Однако, когда я смотрел на группу «персонал», я ожидал увидеть обычных пользователей в качестве членов группы, но это не так:
dscacheutil -q group -a name staff
name: staff
password: *
gid: 20
users: root
Итак, если все обычные пользователи являются членами группы staff, почему они не отображаются здесь?
Есть ли другая команда, которая может показать реальных членов группы сотрудников?
Есть только один надежный способ получить всех членов группы в 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. Много.
Надеюсь, это поможет!
Chalk it up to the oddities of OS X. There are many.
Чего именно вы хотите добиться/сделать?
Эта команда выводит список всех пользователей в группе staff:
dscl . -list /Users PrimaryGroupID | grep ' 20$'
Объяснение: Группа сотрудников имеет PrimaryGroupID 20.
Почему здесь все придерживаются этих громоздких dscl
и dscacheutil
команд?
Почему бы не использовать гораздо более простую id
команду (и еще более простую group
команду друга)?
id - Gn <user>
даст вам то, что вы хотите для любого пользователя Mac, включая тех 50-кратных «обычных» пользователей Mac.
например.
> 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
или, если вам нужны идентификаторы групп:
> id -G myusername
20 12 61 79 80 81 98 702 701 33 100 204 250 395 398 399 400
staff
?
bmike
Темный рыцарь
Скотт Уолтер
Темный рыцарь
пользователь83961