Конспект
Необхідні завдання з установки svn з підтримкою keyring та встановлення програми Collabnet keyring_tool вже виконані для наших серверів Linux.
1) Налаштуйте клієнт SVN для використання брелока:
1.1) Редагувати ~ / .subversion / config
[auth]
password-stores = gnome-keyring
1.2) Редагування ~ / .subversion / серверів
[global]
store-passwords = yes
store-plaintext-passwords = no
2) Створіть брелок для свого пароля. Вам буде запропоновано створити новий пароль, щоб розблокувати брелок; це може бути все що завгодно:
keyring_tool --create=svn
3) Встановіть нову брелоку за замовчуванням:
keyring_tool --setdef=svn
4) в .bash_profile або .bash_login (якщо ви використовуєте bash як свій термінал)
if [ -e /usr/bin/gnome-keyring-daemon ]; then
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
# Create dbus transport link for SVN to talk to the keyring.
eval `dbus-launch --sh-syntax`
# Start the keyring daemon.
# The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
# env values echoed out at startup.
export `/usr/bin/gnome-keyring-daemon`
fi
fi
5) В .bash_logout
# Kill the message bus established for SVN / Keyring communication
if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
fi
# Kill the Gnome Keyring Daemon prior to logout.
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
kill $GNOME_KEYRING_PID > /dev/null 2>&1
fi
Фон
Я зіткнувся з подібною проблемою, намагаючись встановити вільний спосіб забезпечити доступ авторизованого користувача до певних репортажів SVN на роботі. В основному нам доводилося примушувати перевіряти облікові дані кожного разу, коли користувач звертається до сервера, тому навіть команда оновлення svn потребує автентифікації. Очевидно, що зберігання текстового пароля було вичерпане, тому з невеликим дослідженням я почав використовувати gnome-keyring як спосіб переслідувати нашу базу користувачів постійними запитами аутентифікації, зберігаючи при цьому несанкціонованих користувачів із сховищ, до яких вони не повинні мати доступ для перегляду.
Більшість наших щоденних робіт виконується за допомогою ssh-тунелів на сервер RedHat без підтримки X, тому мені довелося знайти шлях до підтримки X11. Після деяких пошуків мені вдалося знайти шлях навколо цього:
Вихідний матеріал
http://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring-in-an-ssh -сесія
Тут важливо використовувати Collabnet keyring_tool для створення брелока без клієнта gnome-keyring-менеджера та встановлення запуску dbus самостійно, а не дозволяти SVN керувати налаштуванням. SVN використовує DBUS для підключення до gnome-keyring-демон і впливати на загальну аутентифікацію. Вручну запускаючи і зриваючи сеанс dbus за допомогою -sh-синтаксису, ви уникаєте спроб підключитися до клієнта X при запуску dbus. Якщо ви просто запустите gnome-keyring-daemon і спробуєте використовувати SVN, він все одно запропонує вам ввести пароль, але потім запропонує вам і ваші дані SVN. Dbus не вдасться, коли SVN спробує його запустити через відсутність клієнта X; мабуть, SVN не використовує жодних спеціальних прапорів при запуску dbus.
--login
Варіант є досить корисним, хоча я впевнений, що не хотів би зберігати свій незахищений пароль у скрипті або ставити його в командному рядку. читання в нетренованому режимі зсередини сценарію (без мови оболонки), який потім передає цей вхід до породженого демона, мабуть, буде хорошим способом зробити це. Я повинен був запустити цей процес лише один раз під час завантаження, тому має сенс ввести пароль; Мені просто потрібно мати можливість це робити в командному рядку, а не через діалоговому вікні GTK.