OSX Lion 群组:添加组、设置 GID、将用户添加到组、实施 FakeGroup 修复 - 全部适用于 NFS

OSX Lion 群组:添加组、设置 GID、将用户添加到组、实施 FakeGroup 修复 - 全部适用于 NFS

我有三个目标:

  • 实施“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

我的问题:

  1. 这是最有效的方法吗?
  2. 这是修复 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。

相关内容