我在 chroot 监狱中执行 shell 命令时遇到问题。这是一个例子:
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
int main()
{
if (geteuid() == 0) // check root privileges
{
chroot("/bin");
chdir("/");
execl("/ls", "ls", "-l", (char *) NULL); // "/ls" should be equivalent to "/bin/ls"
perror(strerror(errno));
}
else
printf("Permission denied\n");
return 0;
}
问题是exec:根据errno,错误是“没有这样的文件或目录”。如果我使用 exec("/bin/ls", ...)
我认为“ls”不能使用他需要的共享库,因为 chroot jail。
有什么建议可以解决这个问题吗?