我无法提供或执行 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 Web 服务器的功能,因为在日志 /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