Chown

使用 dscl 創建使用者後的 OSX chown 問題

  • March 4, 2011

好的,所以我使用 dscl 創建了一個使用者和一個組,如下所示:

dscl . -create /Users/deadline
dscl . -create /Groups/deadline
dscl . -append /Groups/deadline GroupMembership deadline

現在我正在嘗試這樣的事情:

mkdir /tmp/stuff
chown deadline:deadline /tmp/stuff

但問題是它將使用者和組設置為nobody 而不是這個使用者的“截止日期”。我需要向使用者和組添加什麼魔法巫毒屬性才能正確設置 unix 權限?

另外,為什麼 Apple 一定要恨我和我的 Unix 背景 :(

您創建了使用者記錄,但沒有給它任何設置,所以它使用預設值。

sudo dscl . -append /Groups/deadline PrimaryGroupID 100
sudo dscl . -append /Users/deadline UniqueID 1000 PrimaryGroupID 100

您可能想查看以下內容的輸出:

dscl . -read /Users/$USER
dscl . -read /Groups/admin

查看可以設置哪些屬性。

實際上,您在任何 unix 系統上或多或少都會遇到相同的問題:您沒有為新使用者和組分配使用者和組 ID,因此無法辨識他們的文件。解決方案:分配 ID。請參閱上一個問題,尤其是 palmer 和我的回答;如果將它們放在一起,這是創建新使用者的一個相當完整的過程(儘管在 OS X 上使新使用者的 PrimaryGroupID 為 20 是標準的

$$ staff $$而不是 80$$ admin $$). 組非常相似,但它們的 PrimaryGroupID 應該是唯一生成的(並且它們不需要 UserShell、UniqueID、NFSHomeDirectory 或密碼。

將使用者添加到組也比您習慣的要復雜一些。要正確執行此操作,您應該將使用者的 RecordName 添加到組的 GroupMembership 列表中,並將使用者的 GeneratedUID 添加到組的 GroupMembers 列表中。使用 dscl 執行此操作很痛苦,但您可以通過以下方式輕鬆完成:

dseditgroup -o edit -a username -t user groupname

(注:dseditgroup 也可以創建組,但我認為它並不比 dscl 特別容易。)

引用自:https://serverfault.com/questions/243002