在测试 WSL 作为 git-for-windows bash 和 quasi-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*
我可能会在 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、我和管理员都具有完全控制权。当我想更改 SYSTEM 时,它会警告我有关继承权限等。我知道 Windows 目录/文件权限在很多方面都不同,但最终...
问:是否有一种简单的 Windows 文件/目录安全态势,使 WSL 将它们视为仅用户(所有者)访问权限?(类似于 umask 0077
)。更一般地说,是否有一种方法可以映射 unix-y 分配和 Windows 文件安全性之间的至少一些相似性ugo
?
答案1
WSL 的这一部分在最新的内部版本(即下一个 Windows 10 版本)中要好得多。由于内部版本 17063WSL 存储 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