Почему я не могу использовать моего недавно созданного пользователя с chown?

2976
Wilco

Поэтому я пытаюсь создать нового пользователя и группу, а затем изменить владельца каталога на этого нового пользователя / группу. Однако, когда я это делаю, 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, а также увидеть, что пользователь назначен в эту группу.

2

1 ответ на вопрос

2
Gordon Davisson

Вы не присвоили идентификационный номер пользователя (который dscl называет UniqueID) для пользователя _jira, и, поскольку владение файлом записывается по идентификатору пользователя, невозможно присвоить файлы учетной записи без таковой. Добавить что-то вроде:

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 это проще.