Каков правильный способ создания пользователя в MacOS X из командной строки, который будет использоваться только для запуска приложения-приложения? Например, уже существует пользователь «_www» для Apache httpd, но для нового приложения я хочу, чтобы он использовал свою собственную учетную запись.Создайте пользователя для запуска демона, на MacOS X?
ответ
Нет команды «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/
Последний использованный GID можно найти с помощью команды 'dscacheutil -q group | grep gid | tail -n 1' – Sphinges
Команда, предложенная [@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