I have some docker containers running on my machine, one of them being container_1
I am able to access container_1's cli using
ant@ant~/D/m/l/db> docker exec -it container_1 bash
daemon@1997cc093b24:/$
Run Code Online (Sandbox Code Playgroud)
This allows me to go to container_1's cli but with no write permissions. The following commands give a permission denied error
ant@ant~/D/m/l/db> docker exec -it container_1 touch test.txt
bash: test.txt: Permission denied
ant@ant~/D/m/l/db>docker exec -it container_1 bash
daemon@1997cc093b24:/$ touch test.txt
bash: test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)
Also tried using --previleged option but the problem persisted
ant@ant~/D/m/l/db> docker --previleged=true exec -it container_1 touch test.txt
bash: test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)
So I have 2 questions
我最近开始使用docker。请提出疑问。提前致谢 :)
Docker以Linux用户身份运行命令,该用户绑定到Linux文件系统权限。因此,此问题的答案取决于:
您正在以命令方式运行的uid(默认为root,但可以在镜像文件中使用USERDockerfile,docker runcli中的命令或docker -compose.yml文件中的命令覆盖)。
由于您使用的是相对路径,因此命令运行的位置。这将默认设置为/,但可以通过以各种方式更改工作目录(通常是使用WORKDIRDockerfile中的方式)再次覆盖。
该位置的目录和文件权限。
ls -al在容器内部使用以查看当前权限。使用id查看当前的UID。有了docker exec你可以传递一个标志来改变当前用户。要更改权限,您可以使用chmod自己更改权限,chown更改用户所有权和chgrp更改组所有权。例如:
docker exec -u root container_1 chmod 777 .
Run Code Online (Sandbox Code Playgroud)
该命令将允许任何用户通过以root用户身份运行来读取或写入容器中的当前文件夹。
假设您尚未使用SE Linux或AppArmor启用任何其他安全性。
| 归档时间: |
|
| 查看次数: |
7053 次 |
| 最近记录: |