为什么我不能在Windows 8 CP上使用Cygwin进行chmod?

Kee*_*ero 36 cygwin windows-8

我无法在Windows 8上对Cygwin中的chmod组权限进行操作,因此我无法使用ssh密钥连接到服务器.

Bash提示警告:"'/home/KeepZero/.ssh/id_rsa'的权限0660过于开放.要求其他人无法访问您的私钥文件."

KeepZero@t400win8 ~
$ ls
test

KeepZero@t400win8 ~
$ ls -l
total 0
-rwxrwx--- 1 KeepZero KeepZero 0 Mar  4 15:07 test

KeepZero@t400win8 ~
$ chmod 700 test

KeepZero@t400win8 ~
$ ls -l test
-rwxrwx--- 1 KeepZero KeepZero 0 Mar  4 15:07 test

KeepZero@t400win8 ~
$ chmod 777 test

KeepZero@t400win8 ~
$ ls -l test
-rwxrwxrwx 1 KeepZero KeepZero 0 Mar  4 15:07 test
Run Code Online (Sandbox Code Playgroud)

小智 70

做一个ls -al,您将看到您的文件不属于任何组(无).

只需chgrp Users *对你的文件做一个,你再次没事了.

  • 是的,记得之后你的`chmod 600 <file>` (3认同)

Rob*_*ert 48

Roi Danton的解决方案可行,但它无法解决根本原因,并且该问题将在您要更改权限的任何用户创建的文件中重复出现.

要永久解决问题:

  1. /etc/group(或您的语言环境的等效组名称)中查找"用户"组的组ID .

    在我的装置中这是545(你的里程可能会有所不同). cat /etc/group|egrep '^Users:'会得到你正确的路线.该行的第三个字段是组ID.(cat /etc/group|egrep '^Users:'|cut -f3 -d':'只是获得id).

  2. 编辑您的/etc/passwd文件.找到您的用户的记录.第四个字段是用户的"主要组".它被错误地设置为不存在的组.将该数字更改为您在上面的步骤1中找到的数字.保存etc密码文件.

  3. 关闭所有打开的Cygwin窗口/终端,然后打开一个新的.创建一个新文件.它应该有一组"用户",您应该能够根据需要更改其权限.

  • 这个答案应该被接受,因为它解决了最初的问题并且不是一点点修复.请注意,组的名称取决于用户计算机的lang.就我而言,它是"Utilisateurs"(法语). (4认同)
  • $ cat/etc/group | egrep'^ Usuarios:'| cut -f3 -d':'为西班牙用户. (2认同)