我无法在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
答案 0 :(得分:69)
执行ls -al
,您会看到您的文件不属于任何群组(无)。
只需对您的文件执行chgrp Users *
,就可以了。
答案 1 :(得分:48)
Roi Danton's solution有效,但它无法解决根本原因,并且该问题将在您要更改权限的任何用户创建的文件中重复出现。
永久解决问题:
在/etc/group
中查找“用户”组的组ID(或您的语言环境的等效组名称)。
在我的装置中,这是545(你的里程可能会有所不同)。
cat /etc/group|egrep '^Users:'
会为您提供正确的信息。该行的第三个字段是组ID。 (cat /etc/group|egrep '^Users:'|cut -f3 -d':'
只是获取ID)。
修改您的/etc/passwd
文件。找到您的用户的记录。第四个字段是用户的“主要组”。它被错误地设置为不存在的组。将该数字更改为您在上面的步骤1中找到的数字。保存etc
密码文件。
关闭所有打开的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>