Gitolite: вручную скомпилировать файл conf?

Я пишу веб-интерфейс для управления репозиториями на сервере, чтобы избежать клонирования gitolite-admin, редактирования файла conf и keydir, а затем нажатия.

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

Я искал модуль Python, который делает все для меня, но лучшее, что я смогла найти https://github.com/smailq/gitolite-manager/blob/master/gitolite_manager/gitolite.py и это далеко не завершение, поэтому я написал скрипт Python, который может анализировать и редактировать разрешения в gitolite.добавляет / удаляет ключи SSH и добавляет / удаляет новые репозитории в каталоге репозиториев.

Я хотел, чтобы избежать необходимости клонировать gitolite-admin, редактировать и подтолкнуть его, потому что это означало бы создание ключа SSH для Apache, добавив, что ключ к администратору gitolite, и т.д. Много хлопот с точки зрения установки и распространения.

Я вошел в систему как git и побежал ~git/bin/gitolite compile и конфи компилировались нормально, все шло как положено, разрешения для репозиториев были в порядке.

проблема возникла, когда я попытался запустить команду компиляции от имени root или пользователя Apache.

я получил эти сообщения об ошибках:

root@debian:/home/git/bin# ./gitolite compile
FATAL: errors found but logfile could not be created
FATAL: /root/.gitolite/logs/gitolite-2014-05.log: No such file or directory
FATAL: die      chdir /root/.gitolite failed: No such file or directory<<newline>>


www-data@debian:/home/git/bin$ ./gitolite compile
FATAL: errors found but logfile could not be created
FATAL: /var/www/.gitolite/logs/gitolite-2014-05.log: No such file or directory
FATAL: die      chdir /var/www/.gitolite failed: No such file or directory<<newline>>

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

Я пробовал устанавливать переменные окружения GL_BINDIR,GL_REPO_BASE,GL_ADMIN_BASE указать на соответствующие каталоги, но не повезло:

root@debian:/home/git/bin# export GL_BINDIR=/home/git/bin/
root@debian:/home/git/bin# export GL_REPO_BASE=/home/git/repositories/
root@debian:/home/git/bin# export GL_ADMIN_BASE=/home/git/.gitolite
root@debian:/home/git/bin# ./gitolite compile
FATAL: errors found but logfile could not be created
FATAL: /root/.gitolite/logs/gitolite-2014-05.log: No such file or directory
FATAL: die      chdir /root/.gitolite failed: No such file or directory<<newline>>

есть ли способ, без изменения кода gitolite, запустить компиляцию от имени другого пользователя, кроме git?

25
задан Virgiliu
29.12.2022 13:27 Количество просмотров материала 3095
Распечатать страницу

1 ответ

после разговора с автором gitolite я нашел решение:

я добавил Это в sudoers в качестве теста:

yoshi ALL=(git) NOPASSWD: /home/git/bin/gitolite

и запуск этих команд работал должным образом:

yoshi@debian ~ $ sudo -u git /home/git/bin/gitolite compile

Initialized empty Git repository in /home/git/repositories/testrepo.git/

yoshi@debian ~ $ sudo -u git /home/git/bin/gitolite trigger POST_COMPILE
yoshi@debian ~ $
1
отвечен Virgiliu 2022-12-30 21:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх