我有三个目标:
- 实施“FakeGroup”修复
- 添加具有特定 GID 的组(即 GID 为 1111 的 customgroup)
- 将用户添加到该组
实施“FakeGroup”修复
根据这个文件,Mac OSX Lion 上的 NFS 共享会忽略某些组成员身份。请参阅以下代码:
dscl . -create /Groups/FakeGroup GeneratedUID FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
dscl . -create /Groups/FakeGroup PrimaryGroupID 345678
dscl . -create /Groups/FakeGroup RealName "Fake Group"
uguid=$(dscl . -read /Groups/MyUSERNAME GeneratedUID | awk '{print $2}')
dscl . -create /Groups/FakeGroup NestedGroups $uguid
我收到此错误:
<dscl_cmd> DS Error: -14136 (eDSRecordNotFound)
不确定 GeneratedUID 应该是什么,但如果我只输入“id”,这是我的 uid=MYUID(myUserName) 吗?
那么这本质上不会起作用:
dscl . -create /Groups/FakeGroup GroupMembership UserName
我并不完全确定,但有人告诉我需要这个修复才能使 NFS 共享正常工作。
添加具有特定 GID 的组(即 GID 为 1111 的 customgroup)
我编写了一个简短的脚本来获取 groupName 和 groupGID - 它创建了具有指定 GID 的组。然后它会询问您要将哪个用户添加到该组。
echo "What group name would you like to create [ENTER]"
read groupName
echo "What GID would you like to assign to $groupName?"
read groupGID
dscl . -create /Groups/$groupName
dscl . -create /Groups/$groupName name $groupName
dscl . -create /Groups/$groupName passwd "*"
dscl . -create /Groups/$groupName gid $groupGID
echo "Which user would you like to add to your newly created group?"
read userName
dscl . -create /Groups/$groupName GroupMembership $userName
此脚本完美地实现了其编写目的。它将指定的用户添加到新创建的组中,并在该组中指定 GID。您可以使用以下命令进行验证:
dscl . readall /Groups
我的问题:
- 这是最有效的方法吗?
- 这是修复 NFS 共享读写问题的正确方法吗?
如果有人有任何意见,我将不胜感激。我还没有找到一个可靠的来源,可以一次性提供所有这些信息,以创建具有自定义 GID 的组、添加用户并修复 fakegroup。
答案1
如果您仔细阅读链接的文档,您会注意到以下几点:
Note, in the above command we are using the group called 'user' for a group that all users are a member of
因此您可能不是指此处的现有群组:
uguid=$(dscl . -read /Groups/MyUSERNAME GeneratedUID | awk '{print $2}')
使用以下方式查看任何现有组
dscl . read /Groups/everyone
注意 GeneratedUID 的值。它不是像 GID(PrimaryGroupID)那样的简单数字,而是 GUID/UUID。