Хорошо, я создал пользователя и группу с помощью dscl следующим образом:
dscl . -create /Users/deadline
dscl . -create /Groups/deadline
dscl . -append /Groups/deadline GroupMembership deadline
Теперь я пытаюсь переварить такие вещи:
mkdir /tmp/stuff
chown deadline:deadline /tmp/stuff
Но проблема в том, что вместо этого «крайнего срока» пользователя он устанавливает никого и группу. Какое свойство magic voodoo мне нужно добавить пользователю и группе, чтобы они правильно установили разрешения unix?
Кроме того, почему Apple должна ненавидеть меня и мой опыт работы с Unix :(
Вы создали запись пользователя, но не задали для нее никаких настроек, поэтому она использует значения по умолчанию.
sudo dscl . -append /Groups/deadline PrimaryGroupID 100
sudo dscl . -append /Users/deadline UniqueID 1000 PrimaryGroupID 100
Возможно, вы захотите посмотреть на результат, например:
dscl . -read /Users/$USER
dscl . -read /Groups/admin
чтобы увидеть, какие атрибуты можно установить.
Фактически, вы столкнетесь с более или менее той же проблемой в любой системе unix: вы не назначили идентификаторы пользователей и групп новому пользователю и группе, поэтому нет возможности идентифицировать их файлы. Решение: присвоить ID. Видеть этот предыдущий вопрос, особенно ответы Палмера и мои; если вы сложите их вместе, это будет довольно полный процесс создания нового пользователя (хотя стандартно, чтобы новые пользователи в OS X имели PrimaryGroupID 20 [персонал] вместо 80 [admin]).
Группы довольно похожи, но их PrimaryGroupID должен создаваться уникальным образом (и им не нужны UserShell, UniqueID, NFSHomeDirectory или пароль.
Добавление пользователей в группы также немного сложнее, чем вы привыкли. Чтобы сделать это правильно, вы должны как добавить RecordName пользователя в список GroupMembership группы, так и добавить GeneratedUID пользователя в список GroupMembers группы. Делать это с помощью dscl сложно, но вы можете легко это сделать с помощью:
dseditgroup -o edit -a username -t user groupname
(Примечание: dseditgroup также может создавать группы, но я не думаю, что это особенно проще, чем dscl.)