chroot jail 내부에서 쉘 명령을 실행하는 데 문제가 있습니다. 다음은 예입니다 :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에 따르면 오류는 "No such file or directory"입니다. exec ("/ bin/ls", ...)를 사용하면 같은 오류가 나타납니다.
"ls"는 chroot jail 때문에 필요한 공유 라이브러리를 사용할 수 없다고 생각합니다.
이 문제를 해결하기위한 제안이 있으십니까?
OpenBSD 랩톱에서 잘 작동합니다. "ldd/bin/ls"를 실행하면 정적 실행 파일이라고 알려줍니다. 라이브러리가 필요하다는 것을 알게되면 chroot에서 찾을 수있는 방법을 만들어야합니다. – tbert
/usr/bin에 있고'/ bin '에 대한 심볼릭 링크 만있는'ls'처럼 간단 할 수 있습니다. ataylor가 아래에서 말했듯이, chroot는/lib 디렉토리,/usr/lib 디렉토리,/dev에있는 일부 파일들과 함께 실제 루트 환경을 원합니다. –