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

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

我试图使用 ssh 实例,但收到以下错误,这很奇怪,因为我尝试使用 更改权限chmod,但这似乎不起作用,因为权限仍然是777

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).

我打开了git bash,并且能够毫无问题地通过 SSH 进入我的实例,但权限也不是777很好。

答案1

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

[automount]
options = "metadata"

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

答案2

正确的处理方式:

  1. /etc/wsl.conf使用以下内容创建:

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

    要了解上述每个参数的含义,请参阅MSDN 上的文章

  2. 关闭所有 WSL 终端并打开一个新终端

  3. 重新启动你的机器(如一些评论所示)

/mnt/c/现在您已全部设置完毕;通过该选项,在启动时在 WSL 中正确反映并正确安装Windows 中文件的权限更改metadata

答案3

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

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

答案4

我想补充@basilA 的答案,因为创建文件并不是那么容易/etc/wsl.conf,特别是因为我不断收到:

-bash: /etc/conf.wsl: Permission denied

即使我用 运行命令sudo。无论如何,诀窍是更改为 root 用户。

因此,从常规命令提示符中键入以下命令:

  • wsl
  • sudo su
  • cat > /etc/wsl.conf << EOF
    [automount]
    options = "metadata"
    EOF
    

相关内容