Linux 如果您知道Go中的组名,请获取gid

Linux 如果您知道Go中的组名,请获取gid,linux,go,Linux,Go,我在Linux机器上创建了一个组。现在我尝试调用os.Chown来更改文件对该新组的所有权 os.Chown要求我知道uid和gid: func Chown(name string, uid, gid int) error 如何获取我所在团队的gid?我尝试使用user.Lookup(“groupname”),但得到了“未知用户groupname” 我可以调用os.Getgroups,但这只返回一个组id数组-它没有告诉我任何关于组名和组id之间映射的信息 我猜我可以使用一个Unix实用程序(

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

os.Chown
要求我知道
uid
gid

func Chown(name string, uid, gid int) error
如何获取我所在团队的
gid
?我尝试使用
user.Lookup(“groupname”)
,但得到了“未知用户groupname”

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


我猜我可以使用一个Unix实用程序(解析调用
id
的结果),但如果我能帮上忙的话,我宁愿不这样做。

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

Go 1.7 Beta中有一个函数,但它是今年2月才添加的,并且没有出现在Go的任何发布版本中,所以你有点运气不佳

据我所知,您的选择是:

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

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

    Go 1.7 Beta中有一个函数,但它是今年2月才添加的,并且没有出现在Go的任何发布版本中,所以你有点运气不佳

    据我所知,您的选择是:

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