Ubuntu on windows 10 wsl2 - chown chmod 对复制的文件不起作用
Ubuntu on windows 10 wsl2 - chown chmod doesn't work on copied files
我刚刚在 windows 10 (2004) WSL 2 上安装了 ubuntu 20.04.1 LTS,来自 windows 商店。
我想从 cygwin 切换,所以我使用
将 cygwin ssh 配置从 /mnt/d
复制到 ~
cp -R /mnt/d/dev/cygwin64/root/home/myuser/.ssh/ .
我常用的 ssh 连接不起作用,它似乎来自 ~/.ssh
的 file/folder 许可
此文件夹上的 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/myuser
。 https://devblogs.microsoft.com/commandline/sharing-ssh-keys-between-windows-and-wsl-2/ 提供了出色的 how-to。总结和调整以匹配 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/c/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(而不是相反)。
在 OS 之间共享您的 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 中。
我刚刚在 windows 10 (2004) WSL 2 上安装了 ubuntu 20.04.1 LTS,来自 windows 商店。
我想从 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/myuser
。 https://devblogs.microsoft.com/commandline/sharing-ssh-keys-between-windows-and-wsl-2/ 提供了出色的 how-to。总结和调整以匹配 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/c/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(而不是相反)。
在 OS 之间共享您的 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 中。