因此,我尝试创建一个新用户和组,然后将目录的所有权更改为该新用户/组。但是,当我这样做时,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 更简单。