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

Как я могу разрешить пользователю subversion linux выполнять только svnserve?

У меня есть пользователь, которому я бы хотел использовать только Subversion. Нам нравится иногда использовать URL-адреса svn + ssh: // (для открытых ключей и прочего), поэтому мне нужно, чтобы они могли подключаться через ssh и запускать только команду svnserve.

При использовании svn + ssh URL-адреса svn ssh'es и передает аргументы "-c svnserve -t". Я написал настраиваемую оболочку, как показано ниже, для фильтрации команд, которые можно запускать. Это работает, но не передает входные данные в svnserve, поэтому, когда я пытаюсь «svn up», я получаю «svn: соединение неожиданно закрыто».

#!/bin/bash
if [ "$1" == "-c" ] && [ "$2" == "svnserve" ] && [ "$3" == "-t" ] && [ "$4" == ""] ; then
        exec svnserve -t
else
        echo "Access denied. User may only run svnserve."
fi

Я почти уверен, что вы можете поместить что-то подобное в конец файла sshd_config.

Match User svnuser
  ForceCommand svnserve -t

В файле authorized_keys добавьте строку command="svnserve" и еще много чего в начале его ключа. Таким образом, когда он подключится к ssh, он запустит эту команду, а затем выйдет, например

command="svnserve" ssh-rsa AAA...LONG AND TEDIOUS KEY...== user@localhost

чек man sshd и документация по подрывной деятельности для подробностей