Я хочу, чтобы наши разработчики (включая moi) могли запускать svn update
как пользовательские www-данные на нашем сервере, для прав доступа к файлам / каталогам.
Мое решение заключалось в том, чтобы предоставить доступ для запуска sudo -u www-data svn
с NOPASSWD в visudo. Я также добавил псевдоним для этой команды и назвал его svn
чтобы сделать его прозрачным для наших разработчиков.
Это работает, но меня просят svn учетные данные каждый раз (они не сохраняются, даже если я скажу). Думаю добавить -i
параметр, хотя я решил сначала уточнить у вас, ребята :)
Как сделать это так же плавно, как запустить svn update
команда нормально?
Уточнение: Сейчас он работает. Я просто не хочу вводить свои учетные данные svn каждый раз при запуске svn update
:)
Я не совсем уверен, но мимоходом -H
в качестве аргумента sudo может позаботиться о проблеме с учетными данными (спрашивается каждый раз).
По умолчанию для переменной среды HOME будет установлено значение / root, поэтому я бы угадать что тогда клиент svn, который я знаю, должен искать в /root/.subversion информацию об авторизации. Укажите другой домашний каталог, где должны быть учетные данные для вашего конкретного случая. Также убедитесь, что любой пользователь может писать / читать в этот файл.
Почему бы не попробовать запустить его с помощью svn update --username wwwdata
Разве не для этого был создан setuid? Создайте скрипт или скомпилированный двоичный файл (в зависимости от требований безопасности), который выполняет обновление (один system
call должен делать это), и иметь его setuid и принадлежать www-data.
Это поведение по-разному реализовано в разных дистрибутивах - какой вы используете?
Для RHEL5:
Cmnd_Alias SVN = /usr/bin/svn herbert ALL = NOPASSWD: SVN
В качестве альтернативы вы можете добиться того же с помощью одного скрипта (чтобы ограничить пользователя подмножеством функций целевой программы)