如果您知道Go

时间:2016-07-14 14:47:41

标签: linux go

我在Linux机器上创建了一个组。现在我正在尝试调用os.Chown将文件的所有权更改为该新组。

os.Chown要求我了解uidgid

func Chown(name string, uid, gid int) error

如何为我的小组获取gid?我尝试使用user.Lookup("groupname"),但我收到了“未知用户组名”

我可以调用os.Getgroups,但这只返回一组组ID - 它没有告诉我任何关于组名和组ID之间的映射的信息。

我猜我有一个可以解决的Unix实用程序(解析调用id的结果)但是如果我能帮助它,我宁愿不这样做。

1 个答案:

答案 0 :(得分:4)

更新:截至2016年8月16日,Go 1.7发布,支持LookupGroup。如果要访问有关POSIX组的信息,建议升级到Go 1.7。

Go 1.7测试版中有一个LookupGroup函数,但它仅在今年2月添加,并且不在Go的任何发布版本中,所以你有点不走运。

据我所知,你的选择是:

  1. 升级到测试版。
  2. 等待定于8月份发布的1.7版本。
  3. 编写自己的cgo函数,调用getgrnam以获取所需信息(棘手)
  4. 编写自己的代码来解析/etc/group(相对容易......只要您能保证您需要的信息实际上来自该文件而不是LDAP或其他内容)。
相关问题