単一のコマンドで制限されたSSHユーザーに使用されるデフォルトのシェルは何ですか?

単一のコマンドで制限されたSSHユーザーに使用されるデフォルトのシェルは何ですか?

ユーザーを単一のコマンドに制限するときは、sshユーザーにどのデフォルトシェルを使用する必要がありますか?フォローアップです。SSHでShellshockを活用する方法は?SSHサーバーを実行しているコンピューターがあり、仮想ユーザーがいます。commandファイルにオプションを指定して、この仮想ユーザーがsshを介して単一のコマンドを実行するように制限しましたauthorized_keys。私は仮想ユーザーとしてネイティブシェルを使用してきましたがbash、シェルショックバグ以降、もう少し安全なシェルがあるかもしれないという考えをしてきました。仮想ユーザーは1つのrsyncコマンドしか実行できないため、ほとんどのシェルで機能すると思います。具体的には、ユーザーが実行できるコマンドは次のとおりです。

rsync --server --sender -lHogDtpre.iLs . //home/dummyuser/data/"

私はサーバー管理者ではありませんが、いくつかの簡単な変更を要求する可能性があるため、ファイルにchroot刑務所のようなものを設定することは/etc/sshd/sshd_config不可能です。理想的には、無制限のキーを使用して仮想ユーザーとしてログインしてコマンドを制限できます。

答え1

次のシェルを作成できます。

cat >/tmp/rsyncshell.c <<EOF
#include <unistd.h>
char *argv[] = (char *[]) {
        "/usr/bin/rsync", "--server", "--sender", 
        "-lHogDtpre.iLs", ".", "//home/dummyuser/data/" };
int main () { execv(argv[0], argv); }
EOF

新しいシェルをコンパイルします。

gcc -o /bin/rsyncshell /tmp/rsyncshell.c

次に dummyuser インタプリタを次に設定します。/bin/rsyncshell

関連情報