Webserver

chroot 找不到 cgi 文件

  • May 12, 2016

我無法提供或執行 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

提前致謝。

您還需要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

引用自:https://unix.stackexchange.com/questions/204205