내 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
정상적인 방법으로.
추가 읽기
mknod
. FreeBSD 11.0 매뉴얼.devfs
. FreeBSD 11.0 매뉴얼.devfs.rules
. FreeBSD 11.0 매뉴얼.- 문서: 방법: 감옥. NAS4 무료 위키.
- 마테오 리오르다토. "감옥". FreeBSD 매뉴얼.
- 스콧 롭(2015-03-04). FreeBSD 감옥.