chroot jail 内でのシェル コマンドの実行に問題があります。次に例を示します。
#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", ...) を使用すると、同じエラーが表示されます
chroot監獄のため、「ls」は必要な共有ライブラリを使用できないと思います。
この問題を解決するための提案はありますか?