Tag: 文件权限

除了Docker容器中的两个用户以外,如何让我的桌面Ubuntu机器的用户对泊坞窗的完全权限?

我有一个docker容器,它有一个www-data用户的PHP-FPM。 我有一个卷,我的本地应用程序映射到/var/www/html目录。 我find了www-data的UID(比方说33)。 在我的本地机器上,我将应用程序目录chown到33:hostuser,其中33是Docker中的www-data用户,hostuser是我在主机上的组。 现在PHP-FPM可以在应用程序中写入日志等,我可以在本地写入文件。 现在,棘手的部分:我正在努力让PhpStorm运行PHPUnittesting,并且将Docker容器设置为PHP的远程解释器。 换句话说,PhpStorm将HHS放入容器并运行testing。 所以现在我需要在容器中创build一个新的用户,我可以SSH进入。 现在的问题是:这个新用户不是应用程序目录(www-data是)的所有者,并且该组不属于容器内的任何人。 我正在以正确的方式进行吗? 如果是这样,让所有3个用户访问容器的最佳方式是什么? 我正在考虑为www数据用户启用SSH,但是我无法正常工作,反正我不确定这是个好主意。

无法在Docker中访问装入的卷

更新:当我在Mac上设置我的项目时,这不是一个问题。 我在这个问题上使用了Fedora 24。 我想在我的docker实例中访问我的应用程序。 当我尝试并挂载目录时,我得到一个权限错误: root@591d02d0d6d2:/app# ls: cannot open directory .: Permission denied 这是我的docker文件看起来像: FROM pvlltvk/ubuntu-trusty-php-fpm-5.6 RUN apt-get install -y\ php5-curl \ php5-sybase \ freetds-dev \ libxml2-dev ADD freetds.conf /etc/freetds/freetds.conf USER root RUN echo 'alias sf="php /app/app/console"' >> ~/.bashrc WORKDIR /app 我知道这是一个权限问题,但我无法得到任何解决scheme的工作。 如果我运行ls -lh,我可以看到所有者ID是1000而不是root。 root@591d02d0d6d2:/# ls -lh total 24K drwxrwxr-x. 11 1000 1000 4.0K Dec […]

Docker容器中的用户和文件权限configuration(docker-compose版本3)

Docker 声明它的容器是 “…默认情况下是非常安全的;特别是如果你照顾在容器内运行你的进程作为非特权用户(即非root)” 因此,我试图: 使用适当处理用户执行的官方图像 避免在生产中安装主机卷,并使用COPY 当我将代码和configuration文件复制到容器卷中时,所有目录和文件都将创build为“… UID和GID为0”(根拥有者),如文档中所述。 问题:如果文件和目录由root拥有,但是运行的进程是由非root用户拥有,如www-data ,那么是否仍然存在安全风险? 例如,用php-fpm : root@7bf71145c18c:/var/www/html# ls -l total 1220 -rw-rw-r– 1 root root 5931 May 10 12:28 index.php drwxrwxr-x 3 root root 4096 May 10 12:28 logs -rw-rw-r– 1 root root 28 May 10 12:28 robots.txt root@7bf71145c18c:/var/www/html# ps -ef UID PID PPID C STIME TTY TIME CMD […]

在Docker中构buildgradle项目

我有一个简单的Gradle项目,我想在Docker容器中构build 我有一个多阶段dockerbuild设。 第一阶段只是从github克隆项目。 第二阶段必须build立项目,以便在最后阶段运行。 但它没有进入 FROM gradle:4.2.1-jdk8-alpine WORKDIR /app COPY –from=0 /app/myProject /app RUN ./gradlew build –stacktrace 命令./gradlew build –stacktrace无法执行并失败,并显示以下错误: FAILURE: Build failed with an exception. * What went wrong: Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin 和堆栈跟踪: org.gradle.api.UncheckedIOException: Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin at org.gradle.api.internal.changedetection.state.FileTimeStampInspector.updateOnFinishBuild(FileTimeStampInspector.java:72) at org.gradle.api.internal.changedetection.state.BuildScopeFileTimeStampInspector.stop(BuildScopeFileTimeStampInspector.java:38) at org.gradle.internal.concurrent.CompositeStoppable.stop(CompositeStoppable.java:98) ….. Caused by: java.io.FileNotFoundException: /app/.gradle/3.5-rc-2/file-changes/last-build.bin (Permission denied) at java.io.FileOutputStream.open0(Native […]

让非root用户写入Docker中的linux主机

我有一个OpenSuse 42.3docker容器的图像,我创build了一个用户,我们称之为“streamuser”。 我希望这是每当有人从我的图像创build容器时处于活动状态的用户。 我已经将主机的主目录挂载到streamuser的主目录。 我遇到的麻烦是,如果我在Linux主机上运行Docker容器,streamusercan不会向主机目录写任何东西。 这是因为streamuser与主机不共享相同的UID和GID。 有没有一种干净的方式来解决这个问题,避免我设置图像的默认用户帐户到root帐户? 如果我在容器中以root身份login,那么我可以写入到Linux主机,但这是不可取的。 我的docker电话是: docker run -it -d –name ${containerName} –user="streamuser" \ –workdir="/home/streamuser" –volume="${home}:/home/streamuser" \ ${imageName} /bin/bash -rcfile /opt/Codebase/image_env_setup_v206.sh 我已经看到一个解决scheme,有人使用–volume选项将主机passwd,sudoers等文件传递给容器。 我不喜欢这个选项,因为它覆盖了我制作的容器内的环境,而且看起来像是一个蹩脚的解决scheme。 我的dockerfile是: FROM opensuse:42.3 RUN zypper update -y && \ zypper install -y \ sudo \ vim \ gcc-fortran \ infinipath-psm-devel \ openmpi \ openmpi-devel \ openmpi-libs \ hdf5-openmpi \ […]

如何处理来自docker的卷内的权限?

我有一个运行PHP应用程序的容器, php-fpm服务无法将caching文件写入泊坞窗提供的文件夹中。 我从主机上给我需要写的文件夹777权限,但是它只工作了一段时间。 由php-fpm创build的文件没有必要的权限。 此外,用chown命令更改所有者和组是不可能的。 这是我的docker-composer.yml文件: web: image: eduardoleal/nginx external_links: – proxy links: – php:php container_name: "app-web" environment: VIRTUAL_HOST: web.app volumes_from: – data volumes: – ./src/nginx-vhost.conf:/etc/nginx/sites-enabled/default php: image: eduardoleal/php56 container_name: "app-web-php" volumes_from: – data data: container_name: "app-web-data" image: phusion/baseimage volumes: – /Users/eduardo.leal/Code/vidaclass/web:/var/www/public 我使用VirtualBox在OSX上运行docker。

TravisCI泊坞窗权限

我使用Docker来运行我的PHP应用程序。 现在我想让Travis CI来testing我的应用程序。 但是,我所有的构build失败,因为容器无法打开我的应用程序的/ temp目录中的文件。 我有数据容器: FROM ubuntu COPY ./ /project VOLUME /project CMD ["true"] 我用我自己的PHP fpm容器基于php:7.0-fpm – 只有安装了一些扩展。 同样的nginx。 我的docker写作看起来像这样 version: '2' services: data: build: ./ volumes: – .:/project command: "true" nginx: image: myNginx ports: – "80:80" – "443:443" volumes_from: – data links: – php php: image: myPhp ports: – "9000:9000" volumes_from: – data […]

docker命名卷在安装时会获得哪个权限?

自从1.9版本以来,我正在使用Docker中的新命名卷进行试验。 他们应该取代纯数据容器。 但是,我很难在以下用例中使用命名卷: 我有几个容器运行应用程序作为一些非root用户,称之为appuser; 我确实在我的基础图像中的所有应用程序容器图像派生的uid和gid。 每个应用程序都将一个日志文件写入appuser拥有的文件夹。 然后,我build立了一个只有数据的容器,从相同的基础图像派生。 使用volumes-from指令,我挂载这个只有数据的容器来存储我的日志文件。 这是因为uid是固定的。 相反,如果我尝试使用命名卷,那么应用程序将无法写入其日志文件,因为命名卷由某个依赖于卷驱动器的用户所拥有(对于本地驱动器,用户xfs)。 是否有可能在指定的卷中使用正确的权限创build日志文件夹? 或者更一般地说 – 如果装入指定卷的容器中的应用程序以非root用户身份运行,那么这些卷的命名是否合适? 从我刚才所描述的,这样的应用程序将无法写入或创build任何文件夹在指定的卷。

Docker复制并更改所有者

给定以下的Dockerfile FROM ubuntu RUN groupadd mygroup RUN useradd -ms /bin/bash -G mygroup john MKDIR /data COPY test/ /data/test data RUN chown -R john:mygroup /data CMD /bin/bash 在我的testing目录,这是复制我已经设置文件权限为770。 如果我在我的容器中执行su john ,我无法访问我的testing目录中的任何文件或子目录。 看起来这个问题与aufs文件系统中的所有权有关,在这里复制的目录仍然由root拥有,权限被设置为770。 有没有解决这个问题正确设置权限? 可以在复制之前将原始目录的权限设置为容器用户的uid。 但是这看起来更像是一个黑客。

build立docker图像的文件所有权

我想为添加到泊坞窗图像的文件设置文件权限。 我有这个简单的Dockerfile: FROM ubuntu:utopic WORKDIR /app RUN groupadd -g 1000 baz && useradd -u 1000 -g baz baz -d /app -s /bin/false RUN chown baz:baz /app && chmod g+s /app # want this to be have group baz ADD foo /app/ 用docker build -t abc .构build这个docker build -t abc . 哪里有一个foo文件. 创build一个图像。 不过, /app/foo里面的权限并不是我想要的。 docker […]