我不仅询问(和回答)如何在 Windows 上更改权限,因为在使用 Windows 大约 20 年后,我想要这样做的原因有点特殊。我现在是 Winux 用户,在我的 Windows10 机器上运行 Ubuntu (WSL),我也在这里为 Winux 社区发布此内容。
我遇到的问题:
我有一个 OpenSSH 私钥,用于从 Linux 环境登录我的 VPS。
我将此密钥存储在 Windows 内部的某个位置(因此位于 下/mnt/c
)。我将其存储在那里作为备份。
在 WSL 中,我通过以下命令对服务器的端口 22 和端口 80 建立隧道:
ssh [email protected] -L 22:localhost:22 -L 2222:localhost:80 -i /mnt/c/location/private_key_file_name
然后我得到:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/mnt/c/location/private_key_file_name' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /mnt/c/location/private_key_file_name
Permission denied (publickey).
使用 Putty 时我从未遇到过类似的问题,但尽管我使用 Putty,我仍然想通过原则更改权限,以及使用 OpenSSH 的密钥。
我似乎无法在私钥文件的相关位置执行 chmod 600(它会改变但随后自动改回 777)。
由于 Windows 没有提供类似 Linux 的 GUI 来更改权限,我认为我需要找到一种从 CMD 进行更改的方法。有人可能会问“我怎样才能在 Windows 中更改文件的权限,以便它等同于 Linux 权限”。
在阅读了有关以类似 Linux 的方式在 Windows 中更改权限的信息后,我得出结论,最简单最快的方法就是执行mv file ~
,,chmod 600 ~/file
然后执行 mv file /mnt/c/location
,但这失败了,因为在我移动文件的那一刻,它又变回了 777。
以下是我的回答:
答案1
据我所知,Windows 始终会将文件的权限转换为 Windows 中常见的权限。这并不一定会有问题,因为 Windows 的安全模型与 Linux 不同,并且如果您使用强 Windows 密码来保护文件并受到 Windows Defender(包括防火墙、IIBA、暴力攻击预防机制)的保护。
因此,基本上,要解决这个问题,只需将您的私钥从 Windows 中的备份复制到 WSL,在那里更改权限(chmod 600),然后使用 WSL 副本。