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

新しく作成したユーザーを 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 グループを確認できるほか、ユーザーがそのグループに割り当てられていることも確認できます。

答え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 を使用するとより簡単に実行できます。

関連情報