web-dev-qa-db-ja.com

新しく作成したユーザーをchownで使用できないのはなぜですか?

そのため、新しいユーザーとグループを作成してから、ディレクトリの所有権をその新しいユーザー/グループに変更しようとしています。ただし、そうすると、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グループを確認できます。また、ユーザーがそのグループに割り当てられていることも確認できます。

3
Wilco

_jiraユーザーにユーザーID番号(dsclがUniqueIDと呼ぶもの)を割り当てていません。ファイルの所有権はユーザーIDによって記録されるため、ファイルの所有権がないアカウントにファイルをchownする方法はありません。次のようなものを追加します。

dscl . create /Users/_jira UniqueID 301

また、ユーザーのPrimaryGroupIDを設定する必要があります。これを使用して、ユーザーをグループに追加するのではなく、_jiraグループに割り当てます。

dscl . create /Users/_jira PrimaryGroupID 301

_jiraグループにセカンダリメンバーシップを追加し続ける場合は、プライマリとして他のグループIDを割り当ててから、dseditgroupを使用してセカンダリメンバーシップを追加する必要があります。

Sudo dseditgroup -o edit -a _jira -t user _jira

これにより、グループのGroupMembershipリストに「_jira」が追加されるだけでなく、ユーザーのUUIDがグループのGroupMembersリストに追加されます。両方を実行することをお勧めします。dsclを使用することもできますが、dseditgroupを使用すると簡単になります。

2
Gordon Davisson