gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:54:51 33 4
gpt4 key购买 nike

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

os.Chown 要求我知道 uidgid:

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

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

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

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

最佳答案

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

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

据我所知,您的选择是:

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

关于linux - 如果您知道 Go 中的组名,请获取 gid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377342/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com