Назад | Перейти на главную страницу

Sudo svn для обновления от имени другого пользователя

Я хочу, чтобы наши разработчики (включая 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

В качестве альтернативы вы можете добиться того же с помощью одного скрипта (чтобы ограничить пользователя подмножеством функций целевой программы)