Subversionのみを使用できるようにしたいユーザーがいます。時々(公開鍵などに)svn + ssh:// URLを使用するのが好きなので、ssh経由で接続し、svnserveコマンドのみを実行できるようにする必要があります。
Svn + ssh URLを使用する場合、svn sshが入り、引数「-csvnserve-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
および Subversionドキュメント 詳細