WSL + Docker 文件权限问题
Posted
技术标签:
【中文标题】WSL + Docker 文件权限问题【英文标题】:WSL + Docker file permission issues 【发布时间】:2021-12-29 20:08:54 【问题描述】:我在 WSL 环境中使用 docker-compose。目前 Wordpress 在 docker composer 中运行。 Projects 文件夹中的所有文件都位于 www-data 组和用户中,这允许 Wordpress 创建所有内容并上传插件。 但是一旦我想编辑文件,vs-code就会出现文件权限错误。
切换用户和 www-data 组允许 vs-code 编辑文件,但 Wordpress 在上传插件或删除插件/文件时出现权限错误。
wsl.conf 看起来像这样:
# Enable extra metadata options by default
[automount]
enabled = true
root = /windir/
options = "metadata,umask=22,fmask=11"
mountFsTab = false
# Enable DNS – even though these are turned on by default, we'll specify
here just to be explicit.
[network]
generateHosts = true
generateResolvConf = true
在 Ubuntu-20.04 中使用 Win 11 - 内核:5.10.60.1 和最新的 docker 版本。
编辑:
不过,当我想在 Wordpress 中编辑内容、上传媒体或上传插件时,我需要 sudo chown -R www-data *
,如果我想在 VScode 中编辑文件,我需要 sudo chown -R <username> *
【问题讨论】:
【参考方案1】:我在本地 WordPress 开发设置中遇到了类似的问题。 (Windows 10 + WSL2),这里是 git repo 的链接: https://github.com/dorumarginean/wordpress-docker
为了上传图片/插件,我像你提到的那样更新了所有者,为了使用 Visual Studio Code 写入权限,我在我的 docker-compose.yml 中编辑了 php 容器。
用户:“1000:1000”
【讨论】:
【参考方案2】:当我遇到类似问题时,我会这样做: 创建一个包含 www-data 和运行编辑器的用户的新组。
现在让我们呼叫您的本地用户myuser
和您的新组mygroup
。
首先你需要创建一个新组
sudo addgroup mygroup
将网络服务器用户和您的用户都添加到这个新组中
sudo adduser myuser mygroup
sudo adduser www-data mygroup
现在将网站目录的所有权授予这个新组。 cd
到你网站的目录,然后
sudo chown -vR :mygroup .
向组授予写入权限
sudo chmod -vR g+w .
检查以确保更改生效,ls -ld
查看文件的所有者和权限,groups myuser www-data
查看两个用户是否确实在 mygroup
。
然后确保重新初始化用户环境,以便更新来自新组的权限
newgrp - mygroup
您可能需要注销并重新登录才能在 GUI 中更新用户环境。
【讨论】:
以上是关于WSL + Docker 文件权限问题的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu WSL上权限损坏的文件,无法删除但可以访问[关闭]
SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04
WSL+samba+git:“错误:将对象添加到存储库数据库.git/objects的权限不足” / git-clone / git-add 权限错误