Chown
使用 dscl 創建使用者後的 OSX chown 問題
好的,所以我使用 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 特別容易。)