Ubuntu/WSL1环境使用Github的brownie包时遭遇PermissionError: [Errno 13]权限拒绝问题求助
解决WSL1/Ubuntu中Brownie重命名目录的权限拒绝问题
我来一步步帮你分析和解决这个权限问题:
先明确问题根源
你的错误 PermissionError: [Errno 13] Permission denied: '/home/wardu/nft-mix-main' -> '/home/wardu/nft',是尝试将nft-mix-main目录重命名为nft时被权限拒绝;而后续chown命令失败,要么是因为目录在Windows挂载的分区(WSL1对NTFS的Linux权限支持有限),要么是目录归root所有但你没使用sudo提权。
分步解决方案
1. 先排查目录所在的文件系统
执行这条命令查看目录的挂载位置:
df -h /home/wardu/nft-mix-main
- 如果输出的挂载点是
/mnt/c(或其他/mnt下的路径):说明目录在Windows的NTFS分区上 - 如果挂载点是
/(根目录):说明目录在WSL自身的Linux文件系统中
情况A:目录在WSL自身的Linux文件系统中
先查看目录的当前归属信息:
ls -ld /home/wardu/nft-mix-main
如果显示结果以root root开头,说明目录是root用户创建的,需要用sudo提权修改:
- 修改目录所有权为你的用户(Ubuntu默认用户组和用户名一致,建议用
wardu:wardu而非wardu:admin):sudo chown -R wardu:wardu /home/wardu/nft-mix-main - 确保你对目录有完整的读写执行权限:
sudo chmod -R u+rwx /home/wardu/nft-mix-main - 现在再尝试重命名:
mv /home/wardu/nft-mix-main /home/wardu/nft
情况B:目录在Windows的NTFS分区上
WSL1对NTFS分区的Linux权限支持有限,直接用chown/chmod不会生效,需要修改WSL的挂载配置:
- 创建/编辑WSL配置文件:
sudo nano /etc/wsl.conf - 添加以下内容(启用NTFS分区的metadata支持,让Linux权限规则生效):
[automount] options = "metadata,umask=0022,fmask=0133" - 按
Ctrl+O保存,Ctrl+X退出编辑器 - 完全关闭WSL:在Windows命令提示符/PowerShell中执行:
wsl --shutdown - 重新打开WSL终端,再尝试重命名操作即可。
额外排查点:目标目录是否已存在
如果以上操作后仍失败,检查目标目录/home/wardu/nft是否已经存在:
ls -l /home/wardu/
如果存在,先删除或备份它:
# 谨慎删除目标目录(确保无重要内容) sudo rm -rf /home/wardu/nft # 或备份原目录 mv /home/wardu/nft /home/wardu/nft-old
之后再执行重命名命令即可。
内容的提问来源于stack exchange,提问作者W______
相关产品推荐
相关产品推荐

