추가 읽기

추가 읽기

내 NAS 서버 중 하나에 ssh-chroot 감옥을 설정하려고 합니다. 시스템은 NAS4Free(nanobsd 기반)에서 실행됩니다. 사용자는 다른 서버에 대해 ssh를 열고 그곳에서 명령을 실행하는 bash 스크립트인 하나의 명령만 실행할 수 있어야 합니다.

chroot를 설정하려면 sshd 구성에 이 정보가 있습니다.

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

스크립트에는 다음 줄이 있습니다.

ssh -i /.ssh/id_rsa backup@$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"

ssh를 사용하여 해당 chroot에 로그인할 수 있지만 스크립트를 실행할 때 ssh 명령을 실행하려고 하면 다음 오류가 발생합니다.

Couldn't open /dev/null: Operation not supported

chroot에서 ssh 일반을 실행하려고 하면 같은 일이 발생합니다.

[I have no name!@nas /]$ ssh
Couldn't open /dev/null: Operation not supported

/dev/null은 다음과 같습니다:

$ ls -la dev/
total 8
drwx--x--x  2 root  staff    512 Nov 29 18:16 .
drwxr-xr-x  8 root  staff    512 Nov 29 18:06 ..
crw-rw-rw-  1 root  staff   0x18 Nov 29 18:16 null

666 권한이 없으면 물론 /dev/null 권한 거부 오류가 발생합니다.

나는 다음을 사용하여 dev/null을 만들었습니다.

mknod dev/null c 2 2

/dev/null이 허용되지 않는 작업을 반환하는 이유에 대한 설명을 찾으려고 했지만 도움이 되는 내용을 찾지 못했습니다.

누군가 이 문제를 해결하는 방법을 설명해 줄 수 있나요?

답변1

나는 다음을 사용하여 dev/null을 만들었습니다.

mknod 개발/null c 2 2

당신의 지식은 구식입니다. 이제 NAS4Free는 FreeBSD 10 및 11과 같은 시스템을 기반으로 하므로 더 이상 그렇지 않습니다. (어쨌든 빈 장치에 대한 장치 번호는 아닙니다.) 설명서를 읽어보세요 mknod. 실제 디스크나 RAM 파일 시스템에 생성된 장치 노드를 계속 실행할 수 있지만 mknod생성한 노드는 거의 완전히 쓸모가 없습니다. 보시다시피 커널에서는 이를 사용하여 장치를 여는 것을 허용하지 않습니다.

이것이 바로 감옥(설정할 수 있는 단순한 chroot 환경이 아닌 운영 체제와 함께 제공되는 실제 감옥)에서 사람들이 sshd_config감옥 내부에 인스턴스를 설치하여 장치 파일을 얻는 이유입니다. 이것이 감옥 에 마운트 가능 devfs여부와 어떤 devfs 규칙 세트가 적용되는지를 제어하는 ​​손잡이가 있는 이유이기도 합니다 .devfs

/dev/null변경된 루트 환경에서 사용 하려면 변경된 루트에 mount_nullfs실제 트리가 표시되도록 해야 합니다. /dev실제 감옥을 사용하는 경우 /dev.

실제 감옥을 사용한다면 물론 실행되도록 설정할 수도 있습니다.sshd 감옥 내부, 교도소의 IP 주소를 수신하고 서비스로 활성화감옥 /etc/rc.conf정상적인 방법으로.

추가 읽기

관련 정보