cygwin将文件权限设置为000

问题描述 投票:55回答:5

我有一个文件夹/ cygwin / d / myfolder /并且每次我在那里保存文件,从cygwin如果我做一个ls -la我看到文件被授予000权限。这实际上引起了我很多问题,因为我rsync这文件夹到我的服务器,没有任何文件可访问。如何让文件自动获得合理的许可?

cygwin
5个回答
116
投票

通过以下链接阅读答案:http://cygwin.1069669.n5.nabble.com/vim-and-file-permissions-on-Windows-7-td61390.html

那里的解决方案也适用于我:

编辑/ etc / fstab并在文件末尾添加以下行:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

然后关闭所有Cygwin进程,打开一个新终端并再次对你的文件进行ls -l。

说明:默认情况下,Cygwin使用文件系统的访问控制列表(ACL)来实现真正的POSIX权限。某些Windows本机程序或进程可能会创建或修改ACL,以便Cygwin将POSIX权限计算为000.使用noacl挂载选项,Cygwin将忽略文件系统ACL,并且仅根据DOS readonly属性伪造权限位的子集。


6
投票

检查以确保使用umask命令正确设置了umask。如果您的umask是0777,它会从新文件的权限中减去并最终获得000权限。除此之外,还有其他几种可能性需要考虑。

如果在/ etc / passwd和/ etc / group中未正确设置id,则也会导致ls显示意外结果。检查文件夹的权限。还可以使用getfacl命令检查Windows权限。也许还要检查mount命令。


3
投票

在上面的答案中,提出了解决方案:

编辑/ etc / fstab并在文件末尾添加以下行:

none / cygdrive cygdrive binary,noacl,posix = 0,user 0 0

在那个答案中有这样的评论:

当我尝试这个时,我的所有文件都是-rw-r - r--无论我做什么chmod()。我无法将文件标记为可执行文件;它只是恢复到0644.(umask == 0022)

我有同样的问题,但它表现在运行Cygwin ksh或mksh时无法执行DOS批处理文件(* .bat)。我偶然发现了这个网站:http://pipeline.lbl.gov/code/3rd_party/licenses.win/cygwin-doc-1.4/html/faq/包含这个有用的建议:

请注意,您可以使用mount -x强制Cygwin将挂载点下的所有文件视为可执行文件。这可以用于单个文件以及目录。然后Cygwin将不会费心阅读文件以确定它们是否可执行。

然后交叉引用这个页面 - https://cygwin.com/cygwin-ug-net/using.html#mount-table - 及其建议:

cygexec - 将挂载点下的所有文件视为cygwin可执行文件。

我将cygexec添加到我的fstab的第四个字段中。这样做了。我的.bat现在可以在ksh / mksh中执行,这是必要的,因为我正在运行一个调用Korn shell堆栈3个文件的Jenkins作业,我没有可修改的控制权。我只需要运行.bat!

更新:在进一步测试时,上面的解决方案并不是我所需要的。它导致一些可执行文件,如javac和cl表现得很奇怪(实用程序会打印它们的用法并退出)。我认为我所需要的而不是'cygexec'只是'exec'。正如同一页说明:

exec - 将挂载点下面的所有文件视为可执行文件。


2
投票

在我的Win7 PC上,文件通常是---------- + 1 David None 69120 Jun 17 13:17 mydoc.txt

我尝试了以上所有没有运气原来我在.zshrc中仍然有一些旧的历史挂载条目我删除了这些和Bob的你的叔叔问题消失了!

© www.soinside.com 2019 - 2024. All rights reserved.