Посмотреть доступных пользователей в Gitolite

Иногда неясно, какое имя пользователя имеет определенный пользователь gitolite. Если люди хотят контролировать права доступа для своих диких репозиториев, им нужно знать имена пользователей. Одним из очевидных решений было бы спросить их имена пользователей. В нашей среде наиболее распространенным случаем является то, что у администратора запрашиваются имена пользователей, поскольку иногда сами пользователи не знают своих имен.

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

4 ответа

Решение

Я добавил новую команду 'usernames', которая просто печатает текстовый файл, содержащий все имена пользователей с соответствующими реальными именами. Я поместил этот файл в основной каталог gitolite-admin-repo. Единственным недостатком является то, что этот файл требует ручного обновления после добавления нового пользователя.

Поместите это в ~/gitolite-source/src/commands/usernames:

#! /bin/bash

cat $HOME/.gitolite/usernames.txt

Я думаю, что он хотел, чтобы был способ перечислить имена пользователей, назначенные другим пользователям. Его беспокоит то, что администратор мог опечатывать имя при добавлении файла pubkey. Скажем, я отправил ему мой "id_rsa.pub". Он хранит его как "sitram.pub" вместо "sitaram.pub". До тех пор, пока права в файле conf также неправильно написаны, вы можете даже не осознавать этого.

У человека, который хочет предоставить доступ к своим репозиториям, есть только один выбор: попросить каждого из тех, кому он хочет дать доступ, запустить 'ssh git @ host info' и сообщить, какое имя пользователя они видят.

Частично это вопрос раскрытия информации, чтобы пользователь без прав администратора мог запрашивать все другие имена пользователей.

Другая часть заключается в том, что если вы находитесь в режиме HTTP или что-то в этом роде, на самом деле нет разумного способа узнать, кто является всеми возможными аутентифицированными (аутентифицируемыми!) Пользователями. Для ssh вы можете, конечно, сделать что-то вроде этого:

perl -lne 'print $1 if /-shell (.*?)"/' < ~/.ssh/authorized_keys

У Gitolite есть команда list-users, но она знает только тех пользователей, которые уже названы в каком-то правиле доступа в файле conf. Что не совсем то же самое.

Gitolite (V3) имеет список команд, в том числе

ssh git@host info -h
ssh git@host perms -h

Который может помочь добраться до содержимого конфигурации gitolite.

ssh git@host perms -l <repo>

Будет перечислять текущее содержимое файла разрешений.

Это то, что я использую

perl -le 'while(<>) {$h{$1}=1 if /-shell (.*?)"/};foreach (sort(keys(%h))){print $_;}' < ~/.ssh/authorized_keys

Он очень похож на фрагмент кода, предоставленный Ситарамом, за исключением того, что он удаляет дубликаты и сортирует.

Другие вопросы по тегам