Windows 10 wsl2上的Ubuntu-chown chmod在复制的文件上不起作用

问题描述

我刚刚从Windows Store在Windows 10(2004)WSL 2上安装了ubuntu 20.04.1 LTS。

我想从cygwin切换,所以我将cygwin ssh配置从/mnt/d复制到~

cp -R /mnt/d/dev/cygwin64/root/home/myuser/.ssh/ .

我通常的ssh连接不起作用,它似乎来自~/.ssh文件/文件夹许可

文件夹上的ls不起作用

$ ls -al .ssh/
ls: cannot access '.ssh/id_rsa.pub': Permission denied
ls: cannot access '.ssh/id_rsa': Permission denied
ls: cannot access '.ssh/..': Permission denied
ls: cannot access '.ssh/.': Permission denied
ls: cannot access '.ssh/kNown_hosts': Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? id_rsa
-????????? ? ? ? ?            ? id_rsa.pub
-????????? ? ? ? ?            ? kNown_hosts

我尝试过

sudo chown myuser:myuser .ssh
sudo chown myuser:myuser .ssh/*

.ssh????????

相同

这是主文件夹的视图

$ ls -al
total 44
drwxr-xr-x 5 myuser myuser 4096 Aug 25 10:54 .
drwxr-xr-x 3 root  root  4096 Aug 24 21:14 ..
-rw------- 1 myuser myuser  974 Aug 25 11:12 .bash_history
-rw-r--r-- 1 myuser myuser  220 Aug 24 21:14 .bash_logout
-rw-r--r-- 1 myuser myuser 5026 Aug 25 10:53 .bashrc
drwxr-xr-x 2 myuser myuser 4096 Aug 24 21:19 .docker
drwxr-xr-x 2 myuser myuser 4096 Aug 24 21:15 .landscape
-rw-r--r-- 1 myuser myuser    0 Aug 26 17:00 .motd_shown
-rw-r--r-- 1 myuser myuser  807 Aug 24 21:14 .profile
drw-r--r-- 2 myuser myuser 4096 Aug 25 10:54 .ssh
-rw-r--r-- 1 myuser myuser    0 Aug 24 21:16 .sudo_as_admin_successful
-rw------- 1 myuser myuser  792 Aug 25 10:53 .viminfo

我尝试添加自动安装的wsl.conf文件,但未成功

$ cat /etc/wsl.conf
[automount]
enabled = true
options = "Metadata"

解决方法

SSH配置是针对每个用户的,因此您实际上需要将其复制到/home/myuserhttps://devblogs.microsoft.com/commandline/sharing-ssh-keys-between-windows-and-wsl-2/提供了很好的方法。总结并调整以匹配Cygwin路径:

作为您的WSL用户:

编辑/etc/wsl.conf以匹配以下内容:

[automount]
enabled = true
options = "metadata,uid=1000,gid=1000,umask=0022,fmask=11,case=off"
mountFsTab = false
crossDistro = true

[filesystem]
umask = 0022

[network]
generateHosts = true
generateResolvConf = true

[interop]
enabled = true
appendWindowsPath = true

其他元数据选项以及文件系统选项应有助于确保正确分配权限。您还需要重置WSL发行会话,以读取和传播更改。在CMD或Powershell中,执行wsl --shutdown。再次输入您的发行版,通常使用wsl.exe

删除先前的文件和文件夹.ssh(具有错误的权限)

然后:

cp -r /mnt/d/dev/cygwin64/root/home/myuser/.ssh/ ~/.ssh
sudo chown myuser:myuser .ssh 
sudo chown myuser:myuser .ssh/*
sudo chmod 600 ~/.ssh/id_rsa
,

另一种解决方案是使用 Ubuntu 文件系统。

您可以通过 Windows 上的路径 \\wsl$ 访问它。

使用 Ubuntu 文件系统可能会产生其他问题。但文件权限不会是一个,因为您将仅使用 Ubuntu 文件系统并将这些文件同步到 Windows(而不是相反)。

,

在两个操作系统之间共享您的 SSH 密钥。

sudo umount /mnt/c

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

或者试试

 ln -s /mnt/c/Users/MyUsername/.ssh ~/.ssh

问题是将您的 ssh 密钥以 wsl 可以读取的方式安装在您的 Windows 10 中。