Создание локальной группы на MacOS Catalina с использованием Core Services и Objective- C - PullRequest
1 голос
/ 25 марта 2020

Как мне создать локальную группу, используя Core Services. ? Документация для Core Services гласит: «Справочник по идентификации основных сервисов позволяет разработчикам поддерживать создание пользователей и групп ...», но нет примеров того, как это сделать.

Обновление. Это код, который у меня есть, но он не работает, и ErrorCode возвращает -2, описание ошибки равно нулю. Действительно трудно найти любую документацию, которая объясняет, как это сделать. 0 также информация о кодах ошибок.


    CFStringRef realName = CFStringCreateWithCString(NULL, "newGroupTest",
                                              kCFStringEncodingMacRoman);

    CFStringRef posixName = CFStringCreateWithCString(NULL, "newgrptst1", 
                                              kCFStringEncodingMacRoman);

    AuthorizationRef auth;
    OSStatus status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, 
                                                kAuthorizationFlagDefaults, 
                                                &auth);

    CSIdentityAuthorityRef authority = CSGetDefaultIdentityAuthority();
    CSIdentityRef identity = CSIdentityCreate(NULL, kCSIdentityClassGroup, realName,
                                       posixName, kCSIdentityFlagNone, authority);

    CFErrorRef error;
    BOOL success = CSIdentityCommit(Identity, auth, &error);

    if(!success)
    {
        CFIndex index = CFErrorGetCode(error);
        CFStringRef desc = CFErrorCopyDescription(error);
        const char* cDesc = CFStringGetCStringPtr(desc, CFStringGetSystemEncoding());  
    }

1 Ответ

0 голосов
/ 29 марта 2020

Нашел в чем проблема. Я не использовал правильный авторитет. Чтобы создать локальную группу, вам нужно использовать CSGetLocaldentityAuthority(), который получает локальные полномочия идентификации, которые хранят идентификаторы, локальные для системы, вместо CSGetDefaultIdentityAuthority(), который представляет сетевые права доступа.

...