如何在chroot中执行命令?
在我的源代码中,我做了chroot,然后让一些代码做了一些工作,然后我想执行linux命令。但是这个命令不起作用,因为我用chroot更改了根 在源代码之后:如何在chroot中执行命令?,c,linux,chroot,C,Linux,Chroot,在我的源代码中,我做了chroot,然后让一些代码做了一些工作,然后我想执行linux命令。但是这个命令不起作用,因为我用chroot更改了根 在源代码之后: int main(void) { if (chroot("/tmp") < 0) printf("error in chroot\n"); /* some source code doing staffs */ system("ls > /logloglog.txt");
int main(void)
{
if (chroot("/tmp") < 0)
printf("error in chroot\n");
/* some source code doing staffs */
system("ls > /logloglog.txt"); // command failed
return 0;
}
int main(无效)
{
if(chroot(“/tmp”)<0)
printf(“chroot中的错误\n”);
/*一些源代码正在运行*/
系统(“ls>/loglog.txt”);//命令失败
返回0;
}
如何在chroot中执行命令
或者是否可以退出ChROD,然后执行命令,然后再次返回到Chelt?
如果使用<代码> CheloTo()/Cuth>,你必须考虑你所做的事情的后果。其中一个主要后果是,除非在
chroot()
'd环境中使其可用,否则通常可用的许多(大多数、所有)命令都不可用
正确地做那项工作不是小事。您可能需要在新根目录下适当安装/dev
、/bin
、/etc
、/usr
、/lib
(可能还有其他)的部分。通常,返回到“在chroot()环境之外”的符号链接将不起作用。你必须复制重要的东西。所有这些的一个副作用是:/tmp
很少是创建完全可操作的chroot()
环境的合适场所。您可能会在/tmp
下获得一个访问权限有限的子目录,但将用户放入/tmp
并不能很好地将他们与其他用户或其他用户隔离开来
另一个主要的可能性是:在执行chroot()
之后,您不允许用户访问其他命令。也就是说,您不尝试在代码中使用system()
;并且您不给受害者用户访问shell或shell实用程序的权限
换句话说,使用chroot()。要把工作做好需要相当多的仔细思考和准备
使用容器或某种虚拟机会更好吗
请使用谷歌或任何其他搜索引擎搜索以下术语:
- “chroot越狱”
- “chroot监狱设置”
- “chroot监狱vs docker”
是否可以退出chroot
,然后执行命令,然后再次返回chroot
不是真的。您可能有一个控制程序,该程序分叉一个子对象,该子对象执行chroot()
并处理材料,然后终止,这样控制程序就可以执行其任务(执行命令),然后您可以分叉另一个子对象,使其返回chroot()
监狱。但这与当前的越狱过程不同-如果任何程序可以一时兴起取消其监禁时间并恢复未失败的活动,那么这将使chroot()
完全无效。
system("chroot /tmp /bin/bash -c \"<COMMAND>\"");
system(“chroot/tmp/bin/bash-c\”);
您可以直接使用系统运行chroot,并在/tmp环境中使用-c execute命令很可能没有/tmp/bin/bash
或/tmp/bin/ls
-如果有,另一个就已经工作了!tmp和bin/bash之间有空间。第一个/tmp参数表示chroot环境位于何处。第二种说法是,/bin/bash不应该用于从c代码执行命令,而应该用于从它工作的控制台执行命令。由于系统函数正在调用终端命令,所以它也可以工作。所以您试过了吗?结果是什么?