每次登录后我都会得到这样的信息permission denied while trying to connect to the Docker daemon socket
,所以我需要执行sudo chmod 777 /var/run/docker.sock
来解决这个问题。我很好奇为什么以及如何每次更改此文件的权限。另外我想禁止此类更改,这样我就不需要执行了chmod
。有办法吗?请不要建议诸如运行无根docker或有关docker组的任何内容(我已经看到了这个问题:如何在没有 sudo 的情况下使用 docker?在问我之前,我只对处理权限感兴趣。
答案1
为什么每次我注销时 /var/run/docker.sock 权限都会改变?我该如何禁止它?
因为 Docker 的人非常重视安全。你也应该如此。你真的需要明白,这会将你的 Docker 实例开放给每个人。要想得到彻底的解释,这是必读的.chmod 777
永远不是正确的解决方案(嗯...除非也设置了粘性位)。
如果你仍然想这样做
sudo chmod 777 /var/run/docker.sock
每次登录时都需要执行此命令。“启动应用程序”可用于在登录桌面时执行脚本。但请不要这样做。使用下面的组方法。
您还可以设置不可变位 (chattr +i {file}),这样普通用户就无法更改属性,但这只是一个技巧。有权访问系统的人可以通过使用实时会话重新启动来轻松更改该属性;甚至非管理员用户也可以这样做。
请不要建议运行无根 docker 或任何有关 docker 组的事情,我只对处理权限感兴趣。
为什么?你忘了解释为什么这些是不可接受的。理论上你可能有一个正当的理由(虽然我自己想不出一个 :) )。
看如何在没有 sudo 的情况下使用 docker?如何设置或使用官方文档了解如何设置docker团体或者无根。这些是docker提供的两种方法。
答案2
DigitalOcean 论坛上的一些人建议根据官方 Docker 文档的修复应该更加安全和永久:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
答案3
您可以通过编辑来永久更改群组所有权/etc/systemd/system/sockets.target.wants/docker.socket
。
设置右侧组
SocketGroup=docker
然后运行systemctl daemon-reload
并重启