r2e*_*ans 14 file-permissions windows-subsystem-for-linux
在我测试 WSL 作为 git-for-windows bash 和准 unix 工作环境的可能替代品时,我在 WSL 中为我的/home/me/.ssh/目录设置了一个符号链接到相应的/mnt/c/users/me/.ssh/目录。不足为奇(因为ssh对目录/文件权限很严格),这不起作用:
me@d2book:~$ ssh myth
Bad owner or permissions on /home/me/.ssh/config
me@d2book:~$ ll -d .ssh .ssh/config
lrwxrwxrwx 1 me me 20 Oct 16 13:12 .ssh -> /mnt/c/Users/me/.ssh/
-rwxrwxrwx 1 root root 6335 Dec 5 07:47 .ssh/config*
Run Code Online (Sandbox Code Playgroud)
我可能会在 linux 中创建文件,然后找到一种方法从 windows 链接到 linux 文件系统 ( %localappdata%/lxss/...),但他们强烈建议不要使用 windows 工具来编辑 linux 文件(参考:https : //blogs.msdn.microsoft.com/ commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/),所以每当我需要调整某些东西时,我必须跳入 WSL。(如果不出意外,这可能是首选的折衷方案,但是......)
我总是可以维护两个不同的目录(每个目录都属于自己的系统),但我更愿意共享它们。然而,更大的图景是如何修改 Windows 安全权限以模仿足够的 linux 文件系统属性,以便 WSL 看到我们最终所需的权限。
当前对WIN/.../.ssh/config文件的权限为:SYSTEM、me 和 Administrators 都具有完全控制权。当我想更改 SYSTEM 时,它会警告我有关继承权限等问题。我知道 Windows 目录/文件权限在很多方面都不同,但最终...
问:对于 Windows 文件/目录,是否有一种简单的安全状态,以便 WSL 将它们视为仅限用户(所有者)访问?(类似于 umask 0077)。更一般地说,是否有一种方法可以映射ugounix-y 分配和 Windows 文件安全性之间的至少一些相似性?
ab.*_*ab. 19
WSL 的这部分在最新的内部版本(即下一个 Windows 10 版本)中要好得多。由于构建 17063 WSL 存储 Linux 元数据,因此共享文件上的 chmod 等“正常工作”,而无需更改 Windows 端的 ACL。我现在正按照您的建议从我的用户配置文件挂载我的主目录,并且 SSH 工作正常。
这是我的设置:
$ cat /etc/wsl.conf
[automount]
enabled=true
options=metadata,uid=1000,gid=1000,umask=022
$ mount | grep /mnt
C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,metadata)
$ echo $HOME
/mnt/c/Users/me
$ ls -ld /home
lrwxrwxrwx 1 root root 11 Jan 11 16:15 /home -> mnt/c/Users
$ ls -ld ~/.ssh
drwxr-xr-x 1 me me 4096 Feb 27 11:44 /mnt/c/Users/me/.ssh
$ ls -ld ~/.ssh/authorized_keys
-rw-r--r-- 1 me me 745 Feb 27 11:44 /mnt/c/Users/me/.ssh/authorized_keys
$ ls -ld ~/.ssh/config
lrwxrwxrwx 1 me me 29 Oct 6 14:14 /mnt/c/Users/me/.ssh/config -> ../share/dotfiles/.ssh/config
$ ls -l ~/share/dotfiles/.ssh/config
-rwxr-xr-x 1 me me 741 Feb 26 21:23 /mnt/c/Users/me/share/dotfiles/.ssh/config
Run Code Online (Sandbox Code Playgroud)