Como posso permitir que um usuário do subversion do Linux execute apenas o svnserve?

3

Eu tenho um usuário que gostaria de poder usar apenas o subversion. Nós gostamos de usar svn + ssh: // URLs às vezes (para chaves públicas e outros), então eu preciso que eles sejam capazes de se conectar através do ssh e executar apenas o comando svnserve.

Ao usar uma URL svn + ssh, o svn ssh entra e passa os argumentos "-c svnserve -t". Eu escrevi um shell personalizado da seguinte forma para filtrar os comandos que podem ser executados. Isso funciona, mas não está passando a entrada para o svnserve, então quando eu tento "svn up" eu recebo "svn: Conexão fechada inesperadamente".

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

2 respostas

4

Tenho certeza que você poderia colocar algo assim no final do seu sshd_config.

Match User svnuser
  ForceCommand svnserve -t
    
por 17.03.2010 / 19:26
1

No arquivo authorized_keys, adicione a linha command="svnserve" e outras no início de sua chave. Desta forma, quando ele se conectar com o ssh, ele executará esse comando e sairá, por exemplo,

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

verifique man sshd e a documentação do subversion para detalhes

    
por 17.03.2010 / 23:34

Tags