為什麼我不能將新建立的使用者與 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 記錄的,因此無法將檔案 chown 到沒有使用者 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 會更簡單。

相關內容