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

时间:2012-03-05 04:45:57

标签: windows-8 cygwin

我无法在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

5 个答案:

答案 0 :(得分:69)

执行ls -al,您会看到您的文件不属于任何群组(无)。

只需对您的文件执行chgrp Users *,就可以了。

答案 1 :(得分:48)

Roi Danton's solution有效,但它无法解决根本原因,并且该问题将在您要更改权限的任何用户创建的文件中重复出现。

永久解决问题:

  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窗口/终端,然后打开一个新的。创建一个新文件。它应该有一组“用户”,您应该可以根据需要更改其权限。

答案 2 :(得分:1)

此问题的一个可能原因是您已将.ssh文件夹复制到实际的PC上...

创建自己的文件夹,然后获得正确的用户组。不要复制文件夹...它们被分配给不匹配的用户组。

答案 3 :(得分:1)

我在Windows Server 2012 R2上遇到了同样的问题。尝试更改所有者或组甚至文件的权限后,它仍显示原始值并忽略我的设置。

阅读 File permissions 后,

  

文件权限

     

在NTFS上,如果没有为挂载指定noacl挂载选项   此时,Cygwin将文件权限设置为POSIX系统。

我发现为mountpoins设置了 noacl 选项:

$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,noacl)
C:/cygwin/lib on /usr/lib type ntfs (binary,noacl)
C:/cygwin on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,noacl,auto)

因此,我从/etc/fstab中的挂载点中删除了 noacl 选项,并关闭了所有Cygwin窗口。重新打开控制台后,chown,chgrp和chmod的权限设置按预期工作。

答案 4 :(得分:0)

在Windows 10的Cygwin命令提示符下,我遇到了同样的问题。

对于id文件,只有root用户应该具有完全权限,而对于其他用户受限制/没有权限应该没问题。

下面的命令解决了这个问题,

 chmod 700 <id-file>