Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不允许在运行的Docker容器内进行操作chmod 0777 我试图在一个DOCKER容器中执行我的C++代码的一些单元测试,调用命令: 。。。 如果(chmod(“/tmp/ipc_unixdomain”,0777)!=0){ ... 在容器外的PC中,我可以在终端和C++代码中运行这个命令,但是一旦我移动到容器中,如果我运行为root用户或SUDO,我只能执行它们。如果我不这样做,我会得到错误消息 不允许操作_C++_Linux_Docker_Sudo_Chmod - Fatal编程技术网

不允许在运行的Docker容器内进行操作chmod 0777 我试图在一个DOCKER容器中执行我的C++代码的一些单元测试,调用命令: 。。。 如果(chmod(“/tmp/ipc_unixdomain”,0777)!=0){ ... 在容器外的PC中,我可以在终端和C++代码中运行这个命令,但是一旦我移动到容器中,如果我运行为root用户或SUDO,我只能执行它们。如果我不这样做,我会得到错误消息 不允许操作

不允许在运行的Docker容器内进行操作chmod 0777 我试图在一个DOCKER容器中执行我的C++代码的一些单元测试,调用命令: 。。。 如果(chmod(“/tmp/ipc_unixdomain”,0777)!=0){ ... 在容器外的PC中,我可以在终端和C++代码中运行这个命令,但是一旦我移动到容器中,如果我运行为root用户或SUDO,我只能执行它们。如果我不这样做,我会得到错误消息 不允许操作,c++,linux,docker,sudo,chmod,C++,Linux,Docker,Sudo,Chmod,我希望有一种不需要sudo特权就能正常执行测试的方法。有没有办法通过修改Dockerfle或更改代码来解决这个问题? 问题不完全帮助。我使用的文件夹是在我的C++程序执行期间创建的,所以我认为我不能提前访问。 很可能是你错误地创建了DOCKER用户,或者使用了错误的工作区。尝试这个UBUTU-18.04的“代码> DOCKFrase< /Cord>”作为一个例子: FROM ubuntu:18.04 RUN apt-get update && DEBIAN_FRONTEND=n

我希望有一种不需要sudo特权就能正常执行测试的方法。有没有办法通过修改Dockerfle或更改代码来解决这个问题?


问题不完全帮助。我使用的文件夹是在我的C++程序执行期间创建的,所以我认为我不能提前访问。

很可能是你错误地创建了DOCKER用户,或者使用了错误的工作区。尝试这个UBUTU-18.04的“代码> DOCKFrase< /Cord>”作为一个例子:

FROM ubuntu:18.04

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y g++
RUN useradd -ms /bin/bash newuser
USER newuser
WORKDIR /home/newuser
COPY script.sh script.sh
COPY main.cpp main.cpp
RUN ./script.sh
script.sh

#!/bin/bash

touch /tmp/xxx
chmod 0777 /tmp/xxx
echo "$(ls -lah /tmp)" > output
g++ main.cpp -o main
./main >> output
main.cpp

/*
 * Docker chmod example
 */

#include <sys/stat.h>
#include <fstream>
#include <iostream>

constexpr auto filename = "/tmp/yyy";

int main()
{
  {
    std::ofstream of(filename);
  }
  std::cout << "c++ chmod result = " << chmod(filename, 0777) << std::endl;
  return 0;
}
/*
*Docker chmod示例
*/
#包括
#包括
#包括
constexpr auto filename=“/tmp/yyy”;
int main()
{
{
std::的流(文件名);
}

STD::这是不是回答了你的问题?如果你发布了DOCKFILE,我们可以很容易地帮助你。顺便说一下,你可以在DOCKFILE文件中插入<代码>用户根<代码>。其他问题并没有完全帮助。我正在使用的文件夹是在我的C++程序执行期间创建的,所以我想我不能提前访问。我真的不能。共享DoCKFrm文件,但它是一个非常Ubuntu的图像。我很想避免将根作为默认用户,虽然我可以考虑如果没有其他选择,请提供一个示例DoCKFr档和C++代码,我们可以复制/粘贴并运行自己来复制您的问题。这不应该是完整的副本O。对于您的实际代码,这只是一个最小的工作示例。