cygwin在windows8.1上的chmod无法修改权限

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:cygwin在windows8.1上的chmod无法修改权限
  • 本文链接:http://zengrong.net/post/2048.htm

cygwin在windows8.1上的chmod无法修改权限

这几天安装了windows 8.1,在使用cygwin的时候发现了问题。

表现

在使用git clone一个项目时,cygwin告知 .ssh 的权限不正常:

$ git clone git@github.com:zrong/cocos2d-x-filters.git
Cloning into 'cocos2d-x-filters'...
Bad owner or permissions on /home/rong/.ssh/config
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

查看一下权限,是这样的:

$ ll .ssh
total 47K
-rw-rw----+ 1 rong None 1.7K 2012-04-08  admin
-rw-rw----+ 1 rong None  398 2012-04-08  admin.pub
-rw-rw----+ 1 rong None  725 09-13 22:03 config
-rw-rw----+ 1 rong None 1.7K 03-02 16:58 id_rsa
-rw-rw----+ 1 rong None  402 03-02 16:58 id_rsa.pub
-rw-rw----+ 1 rong None  13K 10-06 21:20 known_hosts

使用 chomd 600 * ,发现无效,权限依然是和上面一样。

解决

要解决这个问题,可以先为 .ssh 文件夹给予一个有效的Group。例如:

chgrp Users .ssh

然后再次执行 chmod 600 -R ~/.ssh 就搞定了。

我猜这是因为 Windows 8 的权限控制发生了变化。在 Windows 7 中,可以使用 None 作为用户组,而在 Windows 8 中就必须指定一个存在的用户组。

进一步解决

上面的方案解决了 .ssh 的权限问题,目前 git clone 正常了。但是,当我在 cygwin 下新建一个文件的时候,它的属组依然是 None 。

可以通过修改 /etc/passwd 文件来解决这个问题:

  1. /etc/group 中找到 Users 用户对应的id,我的是 545;
  2. /etc/passwd 中找到 rong 用户条目,将它的属组id改为刚才找到的id;
  3. 重启 cygwin,搞定。

参考文章