在 Windows 8 中使用 Cygwin,chmod 600 没有按预期工作?

Cas*_*taa 79 windows cygwin chmod windows-8-preview

我想的权限更改为我的密钥文件key.pemCygwin的1.7.11。它具有权限标志:-rw-rw----

chmod -c 600 key.pem
Run Code Online (Sandbox Code Playgroud)

报告:

'key.pem' 的模式从 0660 (rw-rw----) 更改为 0600 (rw-------)

然而:

ls -l key.pem 
Run Code Online (Sandbox Code Playgroud)

仍然报告

key.pem 的权限标志仍然是:-rw-rw----

我问的这个原因是 ssh 在抱怨:

“key.pem”的权限 0660 太开放了。

当我尝试通过 ssh 进入我的 Amazon EC2 实例时。 这是 Cygwin 和 Windows 8 NTFS 的问题还是我遗漏了什么?

Jes*_*hia 99

我在 Win8CP 中使用 Cygwin,我遇到了同样的问题。这绝对是 Cygwin 的错误,但有一个解决方法:尝试运行:

 chgrp -R Users ~/.ssh
Run Code Online (Sandbox Code Playgroud)

更长的解释是,出于某种原因,Cygwin/etc/passwd/etc/group一代将用户的默认/主组设置为None. 并且您无法更改 的权限None,因此chmodfor 组无效。

我没有尝试自己修复passwd/group文件,但我确实做了chgrp -R Users ~/.ssh(或者,如果您使用的是 Windows 8 预发布版,则使用组名HomeUsers)。之后,您可以执行该操作chmod 0600,它会按预期工作。

chgrpUsers组中可以找到哪些其它类似的情况来完成。它甚至可以按预期工作,因为 Cygwin 将用户放在Users组中作为辅助组(而不是主要组,这将是正确的行为)。

  • 我需要 chgrp -Rv Users ~/.ssh/* chmod -vR 600 ~/.ssh/* (12认同)
  • 请注意,如果您安装了另一种语言的 Windows,`Users` 将无法工作。使用 `cat /etc/group` 来检查你应该替换的 `Users`。例如,在荷兰语中,您必须将“用户”替换为“Gebruikers”。 (4认同)
  • 它不再起作用了。新的解决方案是@luke-lee 的解决方案。 (3认同)

Luk*_*Lee 28

从 Cygwin 1.7.34 (2015-02-04) 开始,将组更改为Users不再有效的方法。相反,您需要使用 Cygwin 的setfacl实用程序。

Cygwin 用户指南“setfacl”部分提供了完整的手册。我想知道为什么 Cygwin 还没有chmod同样改变效用。

  • 卢克,我认为您在“o”之后的第一个代码块中遗漏了一个冒号。 (2认同)

小智 11

这是一个使用 Luke Lee 的建议但支持八进制参数(如 chmod)的脚本。它提供了一个可以扩展的框架。尽管它目前仅支持修复 key.pem 和/或 ~/.ssh 目录和文件的权限所需的八进制参数。

#!/bin/bash

# convert chmod octal permission args to equivalent setfacl args
ARGS=() ; FILES=()
while [ $# -gt 0 ]; do
  A=$1 ; shift
  case "$A" in
  600|0600) ARGS+=("u::rw-,g::---,o::---") ;;
  640|0640) ARGS+=("u::rw-,g::r--,o::---") ;;
  644|0644) ARGS+=("u::rw-,g::r--,o::r--") ;;
  700|0700) ARGS+=("u::rwx,g::---,o::---") ;;
  *) if [ -e "$A" ]; then FILES+=( "$A" ) ; else
    echo "unrecognized arg [$A]" 1>&2
    exit 1
  fi
  ;;
  esac
done
for F in "${FILES[@]}" ; do
  setfacl -s "${ARGS[@]}" "$F"
done
Run Code Online (Sandbox Code Playgroud)

我用它来修复我的 .ssh 目录和文件:

chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

40263 次

最近记录:

5 年,9 月 前