![Почему я не могу использовать только что созданного пользователя с chown?](https://rvso.com/image/1452895/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D1%8F%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B3%D1%83%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D1%87%D1%82%D0%BE%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%20%D1%81%20chown%3F.png)
Итак, я пытаюсь создать нового пользователя и группу, а затем изменить владельца каталога на этого нового пользователя/группу. Однако, когда я это делаю, chown возвращает сообщение «недопустимое имя пользователя».
Вот упрощенный скрипт оболочки, который показывает, что я пытаюсь сделать:
#!/usr/bin/bash
# Create Group
dscl . create /Groups/_jira
dscl . create /Groups/_jira gid 301"
# Create User
dscl . create /Users/_jira
dscl . append /Groups/_jira GroupMembership _jira
# Change Ownership
chown -R _jira:_jira /Some/random/directory
... и вот что я получаю на выходе:
chown: _jira: illegal user name
Я пропустил какой-то шаг? Это потому, что имя пользователя начинается с подчеркивания?
Примечание:Я могу вывести список всех существующих пользователей и группы и увидеть пользователя _jira и группу _jira, а также увидеть, что пользователь назначен в эту группу.
решение1
Вы не назначили номер идентификатора пользователя (то, что dscl называет UniqueID) пользователю _jira, и поскольку право собственности на файл регистрируется по идентификатору пользователя, нет способа chown-файлов в аккаунте без идентификатора. Добавьте что-то вроде:
dscl . create /Users/_jira UniqueID 301
Вам также следует задать PrimaryGroupID пользователя, и я бы использовал его для назначения его в группу _jira вместо добавления пользователя в группу:
dscl . create /Users/_jira PrimaryGroupID 301
Если вы хотите продолжить добавление вторичного членства в группу _jira, вам следует назначить какой-либо другой идентификатор группы в качестве основного, а затем добавить вторичное членство с помощью dseditgroup:
sudo dseditgroup -o edit -a _jira -t user _jira
Это не только добавляет «_jira» в список GroupMembership группы, но и добавляет UUID пользователя в список GroupMembers группы — рекомендуется сделать оба действия, и хотя это возможно сделать с помощью dscl, проще это сделать с помощью dseditgroup.