Как удалить членство в группе пользователя с помощью Lion Terminal?

Как удалить самостоятельно созданного пользователя-демона с именем «_denyhosts» из группы 1025 (рабочая группа), 403 (com.apple.sharepoint.group.2), 404 (com.apple.sharepoint.group.3) и 405 (com.apple .sharepoint.group.4) с помощью Lion Terminal?

Фон

Чтобы создать учетную запись демона с ограниченными привилегиями, чтобы запустить denyhosts.py с помощью launchd, был полезен пример на http://www.minecraftwiki.net/wiki/Tutorials/Create_a_Mac_OS_X_startup_daemon .

Однако созданная учетная запись пользователя демона Lion «_denyhosts», по-видимому, назначена многим группам:

$ id _denyhosts
uid=300(_denyhosts) gid=300(_denyhosts) groups=300(_denyhosts),1025(workgroup),12(everyone),61(localaccounts),403(com.apple.sharepoint.group.2),404(com.apple.sharepoint.group.3),405(com.apple.sharepoint.group.4) 

На мой взгляд состав групп:

  1. 1025 (рабочая группа)
  2. 403 (com.apple.sharepoint.group.2)
  3. 404(com.apple.sharepoint.group.3)
  4. 405(com.apple.sharepoint.group.4)

можно удалить.

Я пытался удалить членство пользователя в его группах, используя:

$ dscl . -delete /Groups/workgroup GroupMembership _denyhosts
delete: Invalid Path
<dscl_cmd> DS Error: -14009 (eDSUnknownNodeName)

$ dscl . -delete /groups/workgroup GroupMembership _denyhosts
delete: Invalid Path
<dscl_cmd> DS Error: -14009 (eDSUnknownNodeName)

$ sudo dscl . delete /Groups/workgroup GroupMembership _denyhosts
delete: Invalid Path
<dscl_cmd> DS Error: -14009 (eDSUnknownNodeName)

$ sudo dseditgroup -o edit -d _denyhosts -t user workgroup
Username and password must be provided.

Я предполагаю, что эти команды не работают, потому что группа «рабочая группа» находится не в локальном каталоге, а в каталоге LDAP:

$ dseditgroup -o -read workgroup | grep AppleMetaNode -A 1
dsAttrTypeStandard:AppleMetaNodeLocation -
        /LDAPv3/127.0.0.1

Но и это еще не все, т.к. группы com.apple.sharepoint.group находятся в /Local/Default, там $ sudo dseditgroup -o edit -d _denyhosts -t user com.apple.sharepoint.group.2не выдает ошибку, но и не удаляет пользователя _denyhosts из группы:

$ id _denyhosts
uid=300(_denyhosts) gid=300(_denyhosts) groups=300(_denyhosts),1025(workgroup),12(everyone),61(localaccounts),403(com.apple.sharepoint.group.2),404(com.apple.sharepoint.group.3),405(com.apple.sharepoint.group.4)

https://superuser.com/questions/279891/list-all-members-of-a-group-mac-os-x помогло узнать, что членство в группе также может быть назначено по наследству. Полагаю, что такое унаследованное членство и происходит здесь.

$ dscl . -read /Groups/com.apple.sharepoint.group.2 | grep NestedGroupsNestedGroups
NestedGroupsNestedGroups: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050 ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C

Ответы (1)

Попробуйте эту команду, чтобы удалить пользователя из определенной группы

dseditgroup -o edit -d $Username -t user $GroupName
dseditgroup -o edit -d _denyhosts -t user workgroup
Чтобы это работало, мне пришлось добавить аутентификацию с помощью «-u ADMINUSER -p» (или вместо этого вы могли ввести пароль администратора каталога в команду с «-P PASSWORD»). Это был сервер 10.8.