在 win7 上,cygwin 和 git bash 对文件或文件夹的权限有不同的看法
On win7, cygwin and git bash have different ideas about a file or folder's permission
在Cygwin中,我设置了一个文件夹的权限"tmp"
$ chmod 600 tmp
$ ls -ld tmp
drw-------+ 1 leecy Users 0 Aug 15 10:56 tmp
但是Git Bash (from Git for Windows) 有不同的想法
权限:
$ ls -ld ~/tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 /c/cygwin64/home/leecy/tmp/
我已经研究、阅读并尝试了以下帖子中的建议(chgrp
、chown :Users
、setfacl
等),但仍然找不到解决方案:
- Updating file permissions with git-bash on Windows 7
- chmod cannot change group permission on cygwin
- Using Cygwin in Windows 8, chmod 600 does not work as expected?
- cygwin's chmod behaves as working, but it does not work
顺便说一句,这个问题相信是我git clone
操作的原因
(使用 SSH)最近停止工作。在上面我是
用测试文件夹 tmp
演示问题,但在现实生活中
该文件夹实际上是我的 .ssh
和我的 git clone
最近开始的
失败并出现以下错误:
$ git clone ...
Cloning into 'foo'...
Bad owner or permissions on /home/leecy/.ssh/config
fatal: Could not read from remote repository.
最近可能有一些与 Windows 域相关的更改
设置(由公司 IT 人员完成)与此相关
问题 -- 更改后问题开始浮出水面。
版本:
Cygwin: 2.8.2(0.313/5/3)
Git Bash: git version 2.14.1.windows.1
更新
感谢 Doug Henderson 的建议(见评论)。
我尝试使用命令 setfacl -b -k
,它确实删除了
额外的非标准 POSIX 权限,但它没有
解决问题。
使用前setfacl -b -k
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
default:user::rwx
default:group::r-x
default:other:r-x
使用后setfacl -b -k
leecy@USLEECY-C1 ~
$ setfacl -b -k tmp
leecy@USLEECY-C1 ~
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
但这并没有帮助
cygwin:
$ ls -ld tmp
drw------- 1 leecy Users 0 Aug 15 10:56 tmp
Git Bash:
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
更新 2
使用 getfacl
我仔细检查了文件所在的组,并且
确实cygwin
和git bash
有两个不同的想法
Cygwin
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
GitBash
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
数字1049089
在我的系统中可能意味着Domain Users
,但是
这个数字似乎被 cygwin
而不是 git bash
理解。
我说是因为我的cygwin /etc/group
有这样一行
(这个文件原来没有,我用命令创建的
mkgroup -l -d > /etc/group
在此 post)
中建议
Domain Users:S-1-5-21-1593251271-2640304127-1825641215-513:1049089:
我还尝试了命令 chgrp
和 chown
。两者都运行没有错误,
但未生效(数字 545
是 Users
的组 ID
cygwin
(但 git bash
)理解)
chgrp
无效果
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
$ chgrp 545 tmp
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
chown
无效果
leecy@USLEECY-C1 MINGW64 ~
$ chown leecy.545 tmp
leecy@USLEECY-C1 MINGW64 ~
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
leecy@USLEECY-C1 MINGW64 ~
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
感谢所有建议(来自 Doug Henerson 和 matzeri)。我的
最初的问题是关于许可的差异
通过 cygwin
和 git bash
,但确实是我想要实现的目标
是让我的 git
再次工作(它因
错误而失败
Bad owner or permissions on /home/leecy/.ssh/config
)
感谢 matzeri 的建议。我试用了 cygwin git 并意识到
git 的错误不是由于
我的 ~/.ssh
或 ~/.ssh/config
的组权限设置,而不是
它是 files/folder.
的所有者值
在这种情况下,所有者值应该是 leecy
,并且显示
cygwin
和 git bash
表明设置正确,
但事实并非如此。我必须 运行 以下内容
命令一次(在 cygwin
中)以正确设置值。
chown -R $USER ~/.ssh
此更改后,我的 cygwin git
和 git bash
都正常工作。
以下是我在修复前后看到的完整内容运行脚本:
修复前,cygwin
表示所有者是leecy
$ ls -ld ~/.ssh
drw-------+ 1 leecy EMEA+Domain Users 0 Aug 8 22:18 /home/leecy/.ssh
$ ls -ld ~/.ssh/*
-rwxr-xr-x 1 leecy EMEA+Domain Users 135 Aug 16 13:35 /home/leecy/.ssh/agent.env
-rw------- 1 leecy EMEA+Domain Users 352 Jun 6 13:33 /home/leecy/.ssh/config
-rw------- 1 leecy EMEA+Domain Users 1766 May 8 19:32 /home/leecy/.ssh/id_rsa
-rwxr-xr-x 1 leecy EMEA+Domain Users 403 Jun 6 11:58 /home/leecy/.ssh/id_rsa.pub
-rw-r--r-- 1 leecy EMEA+Domain Users 1582 Jun 6 11:50 /home/leecy/.ssh/known_hosts
(这个改变可能无关紧要,但我在测试时确实做了。)
$ chmod 600 ~/.ssh/agent.env
ssh
测试失败
$ ssh -v -p 29418 leecy@gerrit.app.foo.com
OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017
Bad owner or permissions on /home/leecy/.ssh/config
然后我运行这个命令
$ chown -R $USER ~/.ssh
表面上看,owner的价值还是一样
$ ls -ld ~/.ssh/*
-rw------- 1 leecy EMEA+Domain Users 135 Aug 16 13:35 /home/leecy/.ssh/agent.env
-rw------- 1 leecy EMEA+Domain Users 352 Jun 6 13:33 /home/leecy/.ssh/config
-rw------- 1 leecy EMEA+Domain Users 1766 May 8 19:32 /home/leecy/.ssh/id_rsa
-rwxr-xr-x 1 leecy EMEA+Domain Users 403 Jun 6 11:58 /home/leecy/.ssh/id_rsa.pub
-rw-r--r-- 1 leecy EMEA+Domain Users 1582 Jun 6 11:50 /home/leecy/.ssh/known_hosts
$ ls -ld ~/.ssh
drw-------+ 1 leecy EMEA+Domain Users 0 Aug 8 22:18 /home/leecy/.ssh
但现在我的 ssh 可以用了
$ ssh -v -p 29418 leecy@gerrit.app.foo.com
(worked)
在Cygwin中,我设置了一个文件夹的权限"tmp"
$ chmod 600 tmp
$ ls -ld tmp
drw-------+ 1 leecy Users 0 Aug 15 10:56 tmp
但是Git Bash (from Git for Windows) 有不同的想法 权限:
$ ls -ld ~/tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 /c/cygwin64/home/leecy/tmp/
我已经研究、阅读并尝试了以下帖子中的建议(chgrp
、chown :Users
、setfacl
等),但仍然找不到解决方案:
- Updating file permissions with git-bash on Windows 7
- chmod cannot change group permission on cygwin
- Using Cygwin in Windows 8, chmod 600 does not work as expected?
- cygwin's chmod behaves as working, but it does not work
顺便说一句,这个问题相信是我git clone
操作的原因
(使用 SSH)最近停止工作。在上面我是
用测试文件夹 tmp
演示问题,但在现实生活中
该文件夹实际上是我的 .ssh
和我的 git clone
最近开始的
失败并出现以下错误:
$ git clone ...
Cloning into 'foo'...
Bad owner or permissions on /home/leecy/.ssh/config
fatal: Could not read from remote repository.
最近可能有一些与 Windows 域相关的更改 设置(由公司 IT 人员完成)与此相关 问题 -- 更改后问题开始浮出水面。
版本:
Cygwin: 2.8.2(0.313/5/3)
Git Bash: git version 2.14.1.windows.1
更新
感谢 Doug Henderson 的建议(见评论)。
我尝试使用命令 setfacl -b -k
,它确实删除了
额外的非标准 POSIX 权限,但它没有
解决问题。
使用前setfacl -b -k
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
default:user::rwx
default:group::r-x
default:other:r-x
使用后setfacl -b -k
leecy@USLEECY-C1 ~
$ setfacl -b -k tmp
leecy@USLEECY-C1 ~
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
但这并没有帮助
cygwin:
$ ls -ld tmp
drw------- 1 leecy Users 0 Aug 15 10:56 tmp
Git Bash:
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
更新 2
使用 getfacl
我仔细检查了文件所在的组,并且
确实cygwin
和git bash
有两个不同的想法
Cygwin
$ getfacl tmp
# file: tmp
# owner: leecy
# group: Users
user::rw-
group::---
other:---
GitBash
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
数字1049089
在我的系统中可能意味着Domain Users
,但是
这个数字似乎被 cygwin
而不是 git bash
理解。
我说是因为我的cygwin /etc/group
有这样一行
(这个文件原来没有,我用命令创建的
mkgroup -l -d > /etc/group
在此 post)
Domain Users:S-1-5-21-1593251271-2640304127-1825641215-513:1049089:
我还尝试了命令 chgrp
和 chown
。两者都运行没有错误,
但未生效(数字 545
是 Users
的组 ID
cygwin
(但 git bash
)理解)
chgrp
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
$ chgrp 545 tmp
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
chown
leecy@USLEECY-C1 MINGW64 ~
$ chown leecy.545 tmp
leecy@USLEECY-C1 MINGW64 ~
$ ls -ld tmp
drwxr-xr-x 1 leecy 1049089 0 Aug 15 10:56 tmp/
leecy@USLEECY-C1 MINGW64 ~
$ getfacl tmp
# file: tmp
# owner: leecy
# group: 1049089 <unknown>
user::rwx
group::r-x
other:r-x
感谢所有建议(来自 Doug Henerson 和 matzeri)。我的
最初的问题是关于许可的差异
通过 cygwin
和 git bash
,但确实是我想要实现的目标
是让我的 git
再次工作(它因
Bad owner or permissions on /home/leecy/.ssh/config
)
感谢 matzeri 的建议。我试用了 cygwin git 并意识到
git 的错误不是由于
我的 ~/.ssh
或 ~/.ssh/config
的组权限设置,而不是
它是 files/folder.
在这种情况下,所有者值应该是 leecy
,并且显示
cygwin
和 git bash
表明设置正确,
但事实并非如此。我必须 运行 以下内容
命令一次(在 cygwin
中)以正确设置值。
chown -R $USER ~/.ssh
此更改后,我的 cygwin git
和 git bash
都正常工作。
以下是我在修复前后看到的完整内容运行脚本:
修复前,cygwin
表示所有者是leecy
$ ls -ld ~/.ssh
drw-------+ 1 leecy EMEA+Domain Users 0 Aug 8 22:18 /home/leecy/.ssh
$ ls -ld ~/.ssh/*
-rwxr-xr-x 1 leecy EMEA+Domain Users 135 Aug 16 13:35 /home/leecy/.ssh/agent.env
-rw------- 1 leecy EMEA+Domain Users 352 Jun 6 13:33 /home/leecy/.ssh/config
-rw------- 1 leecy EMEA+Domain Users 1766 May 8 19:32 /home/leecy/.ssh/id_rsa
-rwxr-xr-x 1 leecy EMEA+Domain Users 403 Jun 6 11:58 /home/leecy/.ssh/id_rsa.pub
-rw-r--r-- 1 leecy EMEA+Domain Users 1582 Jun 6 11:50 /home/leecy/.ssh/known_hosts
(这个改变可能无关紧要,但我在测试时确实做了。)
$ chmod 600 ~/.ssh/agent.env
ssh
测试失败
$ ssh -v -p 29418 leecy@gerrit.app.foo.com
OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017
Bad owner or permissions on /home/leecy/.ssh/config
然后我运行这个命令
$ chown -R $USER ~/.ssh
表面上看,owner的价值还是一样
$ ls -ld ~/.ssh/*
-rw------- 1 leecy EMEA+Domain Users 135 Aug 16 13:35 /home/leecy/.ssh/agent.env
-rw------- 1 leecy EMEA+Domain Users 352 Jun 6 13:33 /home/leecy/.ssh/config
-rw------- 1 leecy EMEA+Domain Users 1766 May 8 19:32 /home/leecy/.ssh/id_rsa
-rwxr-xr-x 1 leecy EMEA+Domain Users 403 Jun 6 11:58 /home/leecy/.ssh/id_rsa.pub
-rw-r--r-- 1 leecy EMEA+Domain Users 1582 Jun 6 11:50 /home/leecy/.ssh/known_hosts
$ ls -ld ~/.ssh
drw-------+ 1 leecy EMEA+Domain Users 0 Aug 8 22:18 /home/leecy/.ssh
但现在我的 ssh 可以用了
$ ssh -v -p 29418 leecy@gerrit.app.foo.com
(worked)