2013-01-12 3 views
0

기본적으로 jail 된 프로세스 내에서 쉘 명령을 실행하려고합니다. 나는 (일반 사용자 & 루트 사용자로 모두) 아래의 코드를하려고하면, 그것은 내가 perror는() 함수를 시도에는 출력프로세스를 jailing 한 후 execlp 사용

if(!(pid=fork)){ 
    chroot("./jail_folder"); 
    chdir("/"); 

    execl("/bin/ls","ls",NULL); 
} 

을 생산하지 않으며 그것은 나에게 "해당 파일 또는 디렉터리"오류를 주었다. 감옥에있는 프로세스에서 쉘 명령을 실행할 수 있습니까? 그렇다면 어떻게해야할까요?

답변

1

예, 가능하지만 감옥에서 액세스 할 수 있도록해야합니다 (일반적으로 원하는 프로그램 + 모든 라이브러리를 감옥에 복사하면 symlink가 작동하지 않고 하드 링크는 정상입니다). 그렇지 않으면 /bin없이 프로그램을 디렉토리 트리의 일부로 제한하면 /bin/ls에 액세스 할 수 없습니다.