gpt4 book ai didi

c++ - 为什么我的代码在没有 chroot 功能的情况下工作,但在 chroot 功能下却失败了?

转载 作者:行者123 更新时间:2023-11-30 04:44:43 24 4
gpt4 key购买 nike

我尝试让我的代码在 chroot('/root/test1') 下工作,但它不能正常工作。

但是当我删除chroot('/root/test1'),修改execl("/test2", "test2", NULL) execl("/root/test1/test2", "test2", NULL),它将按预期工作得很好。这是为什么?

另外,我想问一下,如果我设置fp重定向到stdin,然后使用execl函数运行另一个程序, 子程序是否会在 fp 处获取输入?

'/root/test1/'中的文件:

test2
test2.cpp
test3
test3.cpp

execl函数返回值为-1,errno为2。

test3.cpp

int main() {
FILE *fp;
errno = 0;
fp = fopen("log.txt", "r");
dup2(fileno(fp), fileno(stdin));
cout << chdir("/root/test1") << endl;
cout << chroot("/root/test1") << endl;

DIR *dir = opendir("/");
dirent *list;
while ((list = readdir(dir)) != NULL) {
cout << list -> d_name << " ";
}
cout << endl;
closedir(dir);
errno = 0;
cout << execl("/test2", "test2", NULL) << endl;
cout << errno << endl;
cout << strerror(errno) << endl;
return 0;
}

test2.cpp

#include <cstdio>
#include <iostream>
using namespace std;
int main() {
int a,b;
cin >> a;
scanf("%d",&b);
cout << a+b << endl;
printf("%d",a+b);
return 0;
}

日志.txt

111 222

输出*

0
0
. test3.cpp test3 .. test2 test2.cpp log.txt
-1
2
No such file or directory

最佳答案

复制/usr/lib/lib64 和/bin/bash 到/root/test1

关于c++ - 为什么我的代码在没有 chroot 功能的情况下工作,但在 chroot 功能下却失败了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com