2

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

2

Вы не присвоили идентификационный номер пользователя (который 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 это проще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .