为什么我不能使用 chown 使用我新创建的用户?

为什么我不能使用 chown 使用我新创建的用户?

因此,我尝试创建一个新用户和组,然后将目录的所有权更改为该新用户/组。但是,当我这样做时,chown 返回“非法用户名”消息。

下面是一个简化的 shell 脚本,显示了我正在尝试做的事情:

#!/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 的帐户。添加类似以下内容的内容:

dscl . create /Users/_jira UniqueID 301

您还应该设置用户的 PrimaryGroupID,我会使用它将其分配给 _jira 组,而不是将用户添加到该组:

dscl . create /Users/_jira PrimaryGroupID 301

如果您想要继续在 _jira 组中添加次要成员资格,则应指定其他组 ID 作为主要组 ID,然后使用 dseditgroup 添加次要成员资格:

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

这不仅将“_jira”添加到组的 GroupMembership 列表中,还将用户的 UUID 添加到组的 GroupMembers 列表中——建议同时执行这两项操作,虽然可以使用 dscl 来完成,但使用 dseditgroup 更简单。

相关内容