Задать вопрос
@tattami

Как получить группы, в которых состоит пользователь?

Мне нужно получить список групп(Ad) в которых состоит пользователь и сравнить с нужной, если она есть, то выполнить дальнейший код или если ее нет, то panic
Я нашел func GroupIds пакета "os/user", но как ее использовать не пойму и примеров я не нашел.
  • Вопрос задан
  • 297 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Вот ответ для вашего конкретного случая в Windows.

package main

import (
	"fmt"
	"os/exec"
	"strings"
)

func getGroups() ([]string, error) {
	var groups []string

	patch := "/groups"
	cmd := exec.Command("whoami", patch)
	output, err := cmd.Output()
	if err != nil {
		return nil, err
	}

	lines := strings.Split(string(output), "\n")
	for _, line := range lines {
		if strings.HasPrefix(line, "S-1-5-21") {
			groups = append(groups, line)
		}
	}

	return groups, nil
}

func main() {
	groups, err := getGroups()
	if err != nil {
		fmt.Printf("Ошибка получения групп пользователя: %v\n", err)
		return
	}

	fmt.Println("Группы пользователя:", groups)
}
Ответ написан
@NortheR73
системный инженер
Я нашел func GroupIds пакета "os/user"
вам нужен модуль/пакет/библиотека для Go для работы с LDAP/Active Directory...
Далее в коде вы выполняете подключение к AD и LDAP-запрос с фильтром вида
(&(objectClass=user)(sAMAccountName=yourUserName)(memberof=CN=YourGroup,OU=UsersOU,DC=YourDomain,DC=YourDomainExt))

должен вернуться ненулевой результат, если конкретный пользователь (yourUserName) входит в конкретную доменную группу (YourGroup)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы