首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >windows 10 wsl2上的Ubuntu - chown chmod不适用于复制的文件

windows 10 wsl2上的Ubuntu - chown chmod不适用于复制的文件
EN

Stack Overflow用户
提问于 2020-08-26 15:18:43
回答 3查看 15.1K关注 0票数 10

我刚刚从windows商店在windows 10 (2004) WSL 2上安装了ubuntu20.04.1LTS。

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

代码语言:javascript
运行
复制
cp -R /mnt/d/dev/cygwin64/root/home/myuser/.ssh/ .

我通常的ssh连接不工作,它似乎来自~/.ssh的文件/文件夹权限

此文件夹上的ls无法工作

代码语言:javascript
运行
复制
$ 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

我试过了

代码语言:javascript
运行
复制
sudo chown myuser:myuser .ssh
sudo chown myuser:myuser .ssh/*

.ssh????????仍然一样

以下是主文件夹的视图

代码语言:javascript
运行
复制
$ 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

我尝试用automount添加一个wsl.conf文件,但没有成功。

代码语言:javascript
运行
复制
$ cat /etc/wsl.conf
[automount]
enabled = true
options = "metadata"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-26 16:19:36

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

作为您的WSL用户:

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

代码语言:javascript
运行
复制
[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 (权限错误)

然后:

代码语言:javascript
运行
复制
cp -r /mnt/c/dev/cygwin64/root/home/myuser/.ssh/ ~/.ssh
sudo chown myuser:myuser .ssh 
sudo chown myuser:myuser .ssh/*
sudo chmod 600 ~/.ssh/id_rsa
票数 14
EN

Stack Overflow用户

发布于 2021-01-05 12:06:04

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2021-02-06 17:23:58

在两个操作系统上共享SSH密钥。

代码语言:javascript
运行
复制
sudo umount /mnt/c

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

或者尝试

代码语言:javascript
运行
复制
 ln -s /mnt/c/Users/MyUsername/.ssh ~/.ssh

问题是要在windows 10中挂载ssh键,这样wsl就可以读取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63600692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档