2015-09-27 3 views
5

Каков правильный способ создания пользователя в MacOS X из командной строки, который будет использоваться только для запуска приложения-приложения? Например, уже существует пользователь «_www» для Apache httpd, но для нового приложения я хочу, чтобы он использовал свою собственную учетную запись.Создайте пользователя для запуска демона, на MacOS X?

ответ

7

Нет команды «adduser». Подходом Mac является использование команды dscl, которая является «Утилита командной строки службы каталогов». Службы каталогов похожи на LDAP, но это другое решение.

Приведенные ниже примеры будут использовать «mydaemon» в качестве предполагаемой учетной записи, хотя обычно вы должны использовать значение, соответствующее имени вашего приложения-демона.

Все пользователи демонов имеют префикс с подчеркиванием, например _www.

Чтобы получить список атрибутов на существующую запись:

sudo dscl . -read /Users/_www 

Перед созданием пользователя, создать группу, выбирая неиспользуемый идентификатор группы (здесь мы выбрали 300):

sudo dscl . -create /Groups/_mydaemon 
    sudo dscl . -create /Groups/_mydaemon PrimaryGroupID 300 

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

sudo dscl . -create /Users/_mydaemon UniqueID 300 
    sudo dscl . -create /Users/_mydaemon PrimaryGroupID 300 
    sudo dscl . -create /Users/_mydaemon UserShell /usr/bin/false 

Вышеуказанное основано на чтении на разных источниках информации и само проверке процесса. Одна ссылка, что я нашел полезным является:

http://minecraft.gamepedia.com/Tutorials/Create_a_Mac_OS_X_startup_daemon

Обратите внимание, есть также GUI версия DSCL (в зависимости от местоположения на MacOS X 10,10):

/System/Library/CoreServices/Применения/Каталог \ Utility.app/

+0

Последний использованный GID можно найти с помощью команды 'dscacheutil -q group | grep gid | tail -n 1' – Sphinges

+1

Команда, предложенная [@sphinges] (https://stackoverflow.com/users/1710017/sphinges), неверна. Идентификаторы групп необязательно перечислены в порядке возрастания, поэтому возвращается последнее, но не обязательно самое высокое значение '' 'dscacheutil -q group ' grep gid | awk '{print $ 2}' | sort -n | tail -n 1''' должен работать лучше, хотя я предпочитаю видеть последние 15 или около того, так как выше 260 они, как правило, довольно разреженные '' 'dscacheutil -q group | grep gid | awk '{print $ 2}' | sort -n | tail -n 15''' – Scott