Unix 在监禁进程后使用execlp

Unix 在监禁进程后使用execlp,unix,exec,posix,chroot,Unix,Exec,Posix,Chroot,基本上我想在一个被囚禁的进程中执行一个shell命令。当我尝试下面的代码时(作为普通用户和root用户),它没有产生任何输出 if(!(pid=fork)){ chroot("./jail_folder"); chdir("/"); execl("/bin/ls","ls",NULL); } 我尝试了perror()函数,它给了我一个“没有这样的文件或目录”错误。 是否可以在被监禁的进程中运行shell命令?如果是这样,我们该怎么做?是的,这是可能的,但您必须让监狱能够访问

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

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

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

是的,这是可能的,但您必须让监狱能够访问它(通常,这意味着将所需的程序及其所有库复制到监狱;符号链接不起作用,硬链接可以)。否则,如果在没有
/bin
的情况下将程序限制在目录树的一部分,则无法访问
/bin/ls
,这也就不足为奇了