linux conf文件读写,WSL文件读写权限的配置方法

Windows subsystem for Linux

92af4622b3f159c5865a2d8475ebe9e1.png

昨天晚上俄罗斯世界杯开踢了,看起来足球世界还是没怎么变,梅罗仍然统治世界,沙特仍然被欧洲球队打穿,中国队仍然四年一度的缺席……但是技术的世界却是日新月异,连微软都拥抱开源了,Windows subsystem for Linux (WSL) 简直是在赤裸裸的勾引程序员扔掉Mac投奔Windows。

既有Windows的桌面和Office套件,又可以方便的使用Linux的工具链,这样的生活不要太美好!当然前期坑是少不了的,经过两年时间的改进,wsl团队解决了不少问题(比如本文将提到的文件权限问题),个人觉得已经可以入坑了。当前时间节点18年6月,版本windows 10 1803, build 17134。

WSL的介绍和安装请看下这里:

What’s new for the Command Line in Windows 10 version 1803

文件读写权限配置启动WSL,windows的硬盘会自动mount到linux系统下,但是早期版本所有windows文件的owner和group都会设置为root,读写权限则是从windows系统下继承过来。经常可以看到一片绿油油的777权限的文件和文件夹列表,这显然和linux系统中的最佳实践不符的,特别是从Git上拉下来的文件的权限都被改变了,而且对这些文件使用chmod或者chown是不起作用的,简直没法忍。

d90b5ebf4d7d2cdd6ec68da58cca0ed9.png

在Insider Build 17063 中,wsl加入了DrvFs功能,在WSL和Windows文件系统中充当桥梁,使WSL的文件权限可以支持更多的Metadata和更多的Mount选项。详细介绍看这里 Chmod/Chown WSL Improvements。

使用简单命令就可以用drvfs重新mount硬盘:

1

2sudo umount /mnt/c

sudo mount -t drvfs C: /mnt/c -o metadata

或者使用添加umask和fmask等参数:

1sudo mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=111

但是每次使用时手动mount也太麻烦了,这时正好用上另一个新特性 Automatically Configuring WSL。把下面automount的选项添加到/etc/wsl.conf文件中就可以了。

1

2

3

4

5[automount]

enabled = true

root = /mnt/

options = "metadata,umask=22,fmask=11"

mountFsTab = false

现在重启WSL的console, windows硬盘上的文件和文件夹都拥有正常权限了。但是坑还没有完,如果这时用mkdir命令创建一个空文件夹,就会发现新的文件夹还是777权限。这可能是wsl的一个bug (Issue 1801, Issue 352),console默认的umask值仍然是0000。work-around的方法是在.profile、.bashrc、.zshrc或者其他shell配置文件中重新设置一下umask。

1

2

3

4

5

6#Fix mkdir command has wrong permissions

if grep -q Microsoft /proc/version; then

if [ "$(umask)" == '0000' ]; then

umask 0022

fi

fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值