当前位置: 首页>>技术教程>>正文


无法在Windows 10的Ubuntu Bash上更改文件权限

问题描述

我试图使用ssh实例,但收到此错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'privkey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "privkey.pem": bad permissions
Permission denied (publickey).

真奇怪我尝试使用’chmod’命令更改权限,但这似乎不起作用。 bash给人的印象是命令已注册,但是我检查了密钥的权限,它仍然在777。打开git bash,我可以毫无问题地进入ssh实例,并且权限不是777,好。

最佳回答

如果您在Windows文件系统中引用文件,则默认情况下它们不会保留Linux权限。但是,有一种方法可以启用它。编辑或创建(使用sudo)/etc/wsl.conf并添加以下内容:

[automount]
options = "metadata"

关闭所有WSL实例并重新启动实例,现在将保留所有chmod更改。

次佳回答

私钥是否在Windows文件系统上(在/mnt /下)?您无法在Windows的Ubuntu上的Bash上使用chmod来修改Windows的文件系统上的文件的权限。您必须将私钥复制到WSL主目录(〜)并在那里进行。

一些讨论在这里:https://github.com/Microsoft/WSL/issues/81

第三种回答

处理此问题的正确方法:

  1. 创建一个名为/etc/wsl.conf的文件,并将其编辑为包含以下内容:

    [automount]
    enabled = true
    root = /mnt/
    options = "metadata,umask=22,fmask=11"

要了解上面每个参数的含义,请参考msdn上的此文章:https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/

  1. 关闭所有打开的WSL终端,然后打开一个新终端。

现在您已经准备就绪,可以通过WSL “metadata”功能在/mnt /c /中更改Windows中文件的权限,从而正确反映在Linux子系统上。

WSL配置将始终在WSL启动时正确安装。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7870.html,未经允许,请勿转载。