我有一个用户,我只想能够使用颠覆。 我们喜欢使用svn + ssh:// URLs(对于公钥和whatnot),所以我需要它们能够通过ssh连接并且只运行svnserve命令。
当使用svn + ssh URL时,svn ssh'es并传递参数“-c svnserve -t”。 我按如下方式编写了一个自定义的shell来过滤可以运行的命令。 这工作,但它没有把input传递给svnserve,所以当我试图“svn up”时,我得到了“svn:Connection意外closures”。
#!/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和subversion文档以获取详细信息