![chroot가 cgi 파일을 찾을 수 없습니다](https://linux55.com/image/65320/chroot%EA%B0%80%20cgi%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
cgi 파일을 제공하거나 실행할 수 없습니다. 그 이유는 권한이 실행 가능으로 설정되어 있을 때 chroot가 cgi 파일을 찾을 수 없기 때문인 것 같습니다.
$>ls -l /var/www/my/dir/test.cgi
-rwxr-xr-x 1 root daemon 67 May 19 15:45 /var/www/my/dir/test.cgi
$> chroot /var/www/ /my/dir/test.cgi
chroot: /my/dir/test.cgi: No such file or directory
chroot가 파일을 찾을 수 없는 이유는 무엇입니까?
실행을 제거하기 위해 권한을 변경한 다음 $> chmod 644 /var/www/my/dir/test.cgi
동일한 chroot 명령을 실행하면 파일이 발견되지만 권한이 거부됩니다.
$> chroot /var/www/ /my/dir/test.cgi
chroot: /my/dir/test.cgi: Permission denied
시스템은 OpenBSD 5.7입니다. 나는 테스트를 위해 chroot를 사용하고 있으며, httpd 웹 서버의 기능을 모방하려고 시도하고 있습니다. 로그 /var/log/daemon에서 파일에 액세스하려고 시도한 후 Slowcgi가 다음과 같은 메시지를 표시하기 때문입니다.slowcgi[15587] execve /my/dir/index.cgi: No such file or directory
미리 감사드립니다.
답변1
당신은 또한 그것 perl
과 그것의 모든 의존성을 필요로 합니다 chroot
.
/var/www/usr/bin
이러한 파일은 , /var/www/usr/lib
및 에 복사되어야 합니다 /var/www/usr/libexec
.
# ldd /usr/bin/perl
/usr/bin/perl:
Start End Type Open Ref GrpRef Name
0000001b26c00000 0000001b27002000 exe 1 0 0 /usr/bin/perl
0000001da0006000 0000001da0418000 rlib 0 2 0 /usr/lib/libpthread.so.18.1
0000001d2b68b000 0000001d2bc26000 rlib 0 1 0 /usr/lib/libperl.so.17.0
0000001d6fed5000 0000001d702fd000 rlib 0 1 0 /usr/lib/libm.so.9.0
0000001d8d017000 0000001d8d423000 rlib 0 1 0 /usr/lib/libutil.so.12.1
0000001ddb924000 0000001ddbe10000 rlib 0 1 0 /usr/lib/libc.so.78.1
0000001d7f700000 0000001d7f700000 rtld 0 1 0 /usr/libexec/ld.so