2016-07-14 29 views
1

我在Linux機器上創建了一個組。現在我試圖撥打os.Chown將文件的所有權更改爲新組。如果您在Go中知道組名,請獲取gid

os.Chown要求我知道uidgid

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

我怎樣才能獲得gid我的組?我試着用user.Lookup("groupname"),但我得到了「未知的用戶組名」

我可以叫os.Getgroups,但這隻返回我組ID的數組 - 它並沒有告訴我任何有關組的名稱和組之間的映射ID。

我猜測有一個Unix工具我可以掏出來(解析調用id的結果),但我寧願不這樣做,如果我可以幫助它。

回答

4

更新:截至2016年8月16日,Go 1.7發佈,支持LookupGroup。如果您想訪問有關POSIX組的信息,建議升級到Go 1.7。

Go 1.7 Beta中有一個LookupGroup函數,但它僅在今年2月份添加,並且不在Go的任何發佈版本中,所以您有點不幸。

至於我可以看到你的選擇是:

  1. 升級到beta版。
  2. 等待計劃於8月份發佈的1.7版本。
  3. 編寫您需要(技巧)
  4. 編寫自己的代碼來解析/etc/group信息調用getgrnam自己CGO功能(相對容易的......只要你能保證你確實需要的信息來自於文件而不是LDAP或其他)。
相關問題