2016-07-14 4 views
1

Я создал группу на машине Linux. Теперь я пытаюсь позвонить os.Chown, чтобы изменить право собственности на эту новую группу.Получите gid, если вы знаете имя группы в Go

os.Chown требует от меня, чтобы знать uid и gid:

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

Как я могу получить gid для моей группы? Я попробовал использовать user.Lookup("groupname"), но получил «неизвестное имя группы пользователей»

Я могу позвонить os.Getgroups, но это возвращает мне только массив идентификаторов групп - это ничего мне не говорит о сопоставлении между именем группы и группой Я бы.

Я угадываю, что есть утилита Unix, которую я могу отключить (проанализировать результат вызова id), но я не хочу этого делать, если я могу помочь.

ответ

4

Обновление: По состоянию на 16 августа 2016 года выпущена версия 1.7 1.7 с поддержкой LookupGroup. Если вы хотите получить доступ к информации о группах POSIX, рекомендуется перейти на версию 1.7.

В бета-версии Go 1.7 есть функция LookupGroup, но она была добавлена ​​только в феврале этого года и не находится в какой-либо выпущенной версии Go, поэтому вам не повезло.

Насколько я могу видеть ваши варианты:

  1. Обновление до бета-версии.
  2. Ждите выпуска 1.7, запланированного на август.
  3. Напишите свою собственную функцию, которая вызывает ОЦП getgrnam для информации, необходимой (хитрые)
  4. Напишите свой собственный код, который разбирает /etc/group (относительно легко ... до тех пор, как вы можете гарантировать, что информация вам нужно на самом деле происходит от того, файл, а не LDAP или что-то еще).
Смежные вопросы