我怎样才能允许 Linux Subversion 用户仅执行 svnserve?

我怎样才能允许 Linux Subversion 用户仅执行 svnserve?

我有一个用户,我希望他只能使用 subversion。我们有时喜欢使用 svn+ssh:// URL(用于公钥等),所以我需要他们能够通过 ssh 连接并仅运行 svnserve 命令。

当使用 svn+ssh URL 时,svn ssh 会进入并传递参数“-c svnserve -t”。我编写了一个自定义 shell,如下所示,以过滤可以运行的命令。这有效,但它不会将输入传递给 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

答案1

我很确定你可以在 sshd_config 的末尾放置类似的内容。

Match User svnuser
  ForceCommand svnserve -t

答案2

在文件 authorized_keys 中,在command="svnserve"他的密钥开头添加行和其他内容。这样,当他使用 ssh 连接时,它将运行该命令然后退出,例如

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

检查man sshd颠覆文档了解详情

相关内容