在 Ubuntu 和 WSL 之间保留文件权限

在 Ubuntu 和 WSL 之间保留文件权限

作为我工作流程的一部分,我有一个双启动系统,Ubuntu 16.04 用于开发,Windows 10 用于其他工作。当我不想重新启动到 Ubuntu 时,我会使用 WSL 1 来执行较小的 Linux 任务。作为其中的一部分,我使用以星用于做笔记,我希望这些笔记可以从原生 Ubuntu 和 WSL 访问和编辑。

我已将这些笔记存储在 WSL 的主目录中,Ubuntu 可以通过我安装在下的 Windows 系统驱动器访问该目录Users\<user>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/。不建议在 Windows 中访问这些文件,因为这会删除它们的权限,但我认为从另一个 Ubuntu 实例访问它们应该没问题。这工作正常,我的文件可以从两个操作系统访问。但我遇到了文件权限问题。如果相关的话,我通过 Ubuntu 上主目录中的符号链接访问此位置。

当我从 WSL 编辑或添加文件时,权限可以正常工作,我能够在本机 Ubuntu 中查看和访问它们。但是当我在本机 Ubuntu 中创建或编辑文件时,它们的权限似乎在 WSL 上被删除(即我没有权限)。然后我可以chmod在 WSL 中访问这些文件,但每次都必须这样做,这很令人沮丧。

我已确保 Ubuntu 和 WSL 上的用户具有相同的名称和密码,以及相同的 uid 和 gid (1000)。我注意到用户是不同组的成员。例如,我的本机 Ubuntu 用户是与 Docker 相关的组的成员,但我没有在 WSL 上安装它。

为了保留文件权限,我是否需要确保操作系统之间的其他系统设置相同?

编辑:我已经排除了 Zim 特有的问题。即使在 Ubuntu 中使用创建新文件touch也会导致它在 WSL 上没有权限。

编辑:这里有一些更明确的细节 - 也许它们会帮助某人看到这个问题。存储所有这些文件的文件夹具有以下权限(请注意,它是 Ubuntu 上的符号链接)。

# WSL:
drwxrwxrwx
# Ubuntu 16.04
lrwxrwxrwx

我还检查了umask两个操作系统的设置。WSL 似乎有一个错误,会自动将 umask 设置为 000。这些需要匹配吗?

# WSL
umask: 0000
# Ubuntu 16.04
umask: 0002

id在两个操作系统上运行并得到了以下结果。

# WSL
uid=1000(dominic) gid=1000(dominic) groups=1000(dominic),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(lxd)
# Ubuntu 16.04
uid=1000(dominic) gid=1000(dominic) groups=1000(dominic),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(docker)

相关内容