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

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

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


person mattmilten    schedule 30.10.2012    source источник


Ответы (4)


Я думаю, что он хотел получить список имен пользователей, назначенных другим пользователям. Его может беспокоить то, что администратор мог опечататься в имени при добавлении файла публичного ключа. Скажем, я посылаю ему свой "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. Что совсем не одно и то же.

person Sitaram    schedule 23.12.2012

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

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

#! /bin/bash

cat $HOME/.gitolite/usernames.txt
person mattmilten    schedule 04.03.2013
comment
Интересный. Выглядит проще, чем мой ответ ниже. +1 - person VonC; 04.03.2013

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

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

Что может помочь добраться до содержимого конфига gitolite.

ssh git@host perms -l <repo>

Отобразит текущее содержимое файла разрешений.

person VonC    schedule 30.10.2012
comment
Эти команды по-прежнему не могут отображать какую-либо информацию о других пользователях. В версии 2 можно было отображать права доступа для всех пользователей. Мне не хватает этой функции в V3. - person mattmilten; 31.10.2012
comment
@mattmilten: правда, вам может потребоваться изменить github.com/sitaramc/ gitolite/blob/master/src/commands/perms затем, чтобы выполнить команду 'info' в V2: github.com/sitaramc/gitolite/blob/g2/src/gitolite.pm#L1198 - person VonC; 31.10.2012

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

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

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

person Alexei S    schedule 12.12.2014