好的,所以我使用dscl创build了一个用户和一个组,如下所示:
dscl . -create /Users/deadline dscl . -create /Groups/deadline dscl . -append /Groups/deadline GroupMembership deadline
现在我试图把事情弄成这样:
mkdir /tmp/stuff chown deadline:deadline /tmp/stuff
但问题是,它将用户和组设置为任何人而不是此用户的“截止date”。 我需要添加到用户和组什么魔术伏都属性让它正确设置Unix权限?
另外,为什么苹果公司恨我和我的Unix背景:(
你创build了用户logging,但没有给它任何设置,所以它使用了默认值。
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,所以没有办法识别他们的文件。 解决scheme:分配ID。 看到这个前面的问题 ,特别是帕尔默和我的答案; 如果你把它们放在一起,这对于创build一个新用户来说是一个相当完整的过程(尽pipe在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也可以创build组,但是我不认为它比dscl更容易)