У меня есть пользователь, которому я бы хотел использовать только 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
и документация по подрывной деятельности для подробностей