2016-07-14 2 views
1

Ich habe eine Gruppe auf einem Linux-Rechner erstellt. Jetzt versuche ich os.Chown anzurufen, um den Besitz einer Datei zu dieser neuen Gruppe zu ändern.Erhalten Sie eine gid, wenn Sie den Gruppennamen in Go kennen

os.Chown erfordert mir die uid und die gid zu wissen:

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

Wie kann ich die gid für meine Fraktion zu bekommen? Ich habe versucht, user.Lookup("groupname"), aber ich bekam „unknown user Gruppennamen“

Ich kann os.Getgroups nennen, aber das gibt mir nur eine Reihe von Gruppen-IDs - es tut mir nicht sagt nichts über die Zuordnung zwischen einem Gruppennamen und die Gruppe Ich würde.

Ich vermute, dass es ein Unix-Dienstprogramm gibt, das ich auspacken kann (parse das Ergebnis des Aufrufs id), aber ich würde lieber nicht tun, wenn ich es helfen kann.

Antwort

4

Aktualisierung: Ab dem 16. August 2016 wird Go 1.7 mit Unterstützung für LookupGroup veröffentlicht. Ein Upgrade auf Go 1.7 wird empfohlen, wenn Sie auf Informationen zu POSIX-Gruppen zugreifen möchten.

Es gibt eine LookupGroup Funktion in den Go 1.7 Betas, aber es wurde nur diesen Februar hinzugefügt und ist nicht in irgendeiner veröffentlichten Version von Go, also bist du ein wenig Pech.

Soweit ich Ihre Optionen sehen können, sind:

  1. Upgrade auf eine Beta.
  2. Warten Sie auf die Version 1.7, die für August geplant ist.
  3. Ihre eigene CGO Funktion schreiben, die getgrnam für die Informationen nennt man (tricky)
  4. Schreiben Sie Ihren eigenen Code benötigen, die /etc/group (relativ einfach analysiert ... solange Sie, dass die Informationen, die Sie tatsächlich aus, dass kommt müssen garantieren können Datei und nicht LDAP oder etwas).
Verwandte Themen