Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


Показаны сообщения с ярлыком net rpc group. Показать все сообщения
Показаны сообщения с ярлыком net rpc group. Показать все сообщения

четверг, 10 ноября 2016 г.

bash: Рекурсивно разворачиваем доменную группу в список пользователей

Есть у меня в домене супер-группа "разрешен доступ в интернет". Почему супер? Потому что в неё включаются преимущественно другие группы, по одной на каждое подразделение, в которые могут быть включены другие группы и т.д. Возникла задача: узнать, сколько всего пользователей прямо или косвенно входят в эту группу.

Синтаксис виндовой dsget и её родственных утилит вызывает у меня стойкое отвращение обилием лишних параметров и общей запутанностью. Но раз уж прокси-сервер у меня работает под убунтой, то почему бы не задействовать мощный язык bash-a и возможности Samba?

Что у нас есть из инструментов? В первую и главную очередь - сильномогучая команда net. Во вторую - очень полезная команда wbinfo. Надо скомпоновать результаты их работы, чтобы на выходе получить список пользователей группы и всех входящих в неё подгрупп.

Далее по тексту подразумевается, что всё выполняется на компьютере с установленной Samba, введённом в домен. Разделитель домена и имени объекта - обратный слэш "\".
Все команды выполняются от имени супер-пользователя.

среда, 20 августа 2014 г.

SAMBA: несколько полезных команд по работе с...

1. добавить пользователя в группу

net rpc group addmem группа пользователь -U админ -S сервер_каталога

ГРУППУ и ПОЛЬЗОВАТЕЛЯ можно указывать без домена, если явно указываешь СЕРВЕР_КАТАЛОГА. Впрочем, я не проверял, можно ли не указывать СЕРВЕР_КАТАЛОГА, но просто указать домен.
АДМИН - пользователь, имеющий права на изменение групп и учетных записей пользователей


Почему rpc, а не ads? Потому что с ads что-то не получалось, а по rpc прошло "со свистом". Разбираться дальше было лень

2. удалить пользователя из группы

аналогично, но заменить addmem на delmem

3. удобный список групп, в которых состоит пользователь

id домен\\пользователь|sed 's/\,/\n/g'|sort -t \\ -k 2


Вывод будет примерно такой:
 
$ getent passwd contoso\\gates_wh
CONTOSO\gates_wh:*:129125:100513:Gates, William Henry, III:/home/CONTOSO/gates_wh:/bin/false
 
$ id contoso\\gates_wh|sed 's/\,/\n/g'|sort -t \\ -k 2
113723(CONTOSO\acl_cnt304421_p-sam4200sizpi)
129126(CONTOSO\acl_cnt304421_p-sam4200sizpi-def)
122960(CONTOSO\acl_cnt30srv012_031rw)
122867(CONTOSO\acl_cnt30srv012_o)
113709(CONTOSO\acl_cnt30srv041_p022f)
123333(CONTOSO\acl_cnt30srv041_p056f)
122903(CONTOSO\acl_cnt30srv042_valid)
122900(CONTOSO\acl_cnt30srv201-l-r)
uid=129125(CONTOSO\gates_wh) gid=100513(CONTOSO\domain users) группы=100513(CONTOSO\domain users)
122893(CONTOSO\rbl_user-gpo9)

То есть, sed-ом заменяем запятые, которые выдает стандартная id, перечисляя список групп, на переводы строки, чтобы группы вывелись в столбик.
Дальше сортируем полученный столбец. Можно было, в принципе, вырезать GID-ы, но лень, поэтому, чтобы сортировать не по GID-ам, а по названиям групп, объявляем символ "\" разделителем полей (это будет "\" между ДОМЕНОМ и ПОЛЬЗОВАТЕЛЕМ), и сортируем не с начала строки, а по второму полю.