단일 명령으로 제한된 SSH 사용자에게 사용되는 기본 셸은 무엇입니까?

단일 명령으로 제한된 SSH 사용자에게 사용되는 기본 셸은 무엇입니까?

사용자를 단일 명령으로 제한할 때 ssh사용자에게 어떤 기본 셸을 사용해야 합니까 ? 후속작입니다SSH를 통해 Shellshock을 활용하는 방법은 무엇입니까?SSH 서버를 실행하는 컴퓨터가 있고 가상 사용자가 있습니다. command파일에 옵션을 지정하여 이 가상 사용자가 ssh를 통해 단일 명령을 실행하도록 제한 했습니다 authorized_keys. 저는 가상 사용자로서 기본 셸을 사용해 왔지만 bash, 셸쇼크 버그 이후로 좀 더 안전한 셸이 있을 수도 있겠다는 생각을 해왔습니다. 가상 사용자는 하나의 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

관련 정보