
そこで、新しいユーザーとグループを作成し、ディレクトリの所有権をその新しいユーザー/グループに変更しようとしています。しかし、そうすると、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
_jira ユーザーにユーザー ID 番号 (dscl では UniqueID と呼ばれます) が割り当てられておらず、ファイルの所有権はユーザー ID によって記録されるため、ユーザー 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 を使用するとより簡単に実行できます。