在监禁一个进程后使用execlp

时间:2013-01-12 11:50:26

标签: unix exec posix chroot

基本上我想在jailed进程中执行shell命令。当我尝试下面的代码(作为普通用户和root用户)时,它没有产生输出

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

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

我尝试了perror()函数,它给了我一个“没有这样的文件或目录”错误。 是否可以在被监禁的进程中运行shell命令?如果是这样,我们该怎么做?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,但你必须让它可以访问jail(通常,它意味着将所需的程序+所有库复制到jail; symlinking不起作用,hardlinking是可以的)。否则,如果您将程序限制在没有/bin的目录树的一部分中,则不会出现/bin/ls