cygwin将文件权限设置为000

cygwin将文件权限设置为000,cygwin,Cygwin,我有一个文件夹/cygwin/d/myfolder/ 每次我在那里保存文件,从cygwin开始,如果我做ls-la,我会看到这些文件被授予了权限000。这实际上给我带来了很多问题,因为我把这个文件夹同步到我的服务器上,并且没有一个文件可以访问。如何让文件自动获得合理的权限?检查以确保使用umask命令正确设置了umask。如果您的umask是0777,则会从新文件的权限中减去,最终将获得000个权限。除此之外,还有其他几种可能考虑的可能性。 如果您的id在/etc/passwd和/etc/gro

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

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


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

阅读此链接中的答案:

那里的解决方案也对我起了作用:

编辑/etc/fstab,并在文件末尾添加此行:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
然后关闭所有Cygwin进程,打开一个新的终端并再次对文件执行ls-l

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

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

我尝试了以上所有方法,但都没有成功 原来我的.zshrc中还有一些古老的历史坐骑条目
我删除了这些,鲍勃的叔叔问题就消失了

在上述回答中,提出了解决方案:

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

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
none/cygdrive-cygdrive二进制文件,noacl,posix=0,用户0

在回答中有这样的评论:


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

我也有同样的问题,但它表现为在运行Cygwin ksh或mksh时无法执行DOS批处理文件(*.bat)。我偶然发现了这个网站:其中包含以下有用的建议:

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

因此,请与本页交叉引用,并给出建议:

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

我将cygexec添加到我的fstab的第四个字段中。这就成功了。My.bat现在在ksh/mksh中是可执行的,这是必要的,因为我正在运行一个调用Korn shell stack 3文件深的Jenkins作业,我无法对其进行修改控制。我只是需要球棒来跑

更新:在进一步的测试中,上面的解决方案并不是我所需要的。这导致一些可执行文件(如javac和cl)行为异常(实用程序将打印它们的用法并退出)。我想我需要的不是“cygexec”,而是“exec”。如同页所述:

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


我想把这个加10。我多年来一直在解决这个问题。谢谢当我尝试这样做时,我所有的文件都是
-rw-r--
无论我做什么
chmod()
。我无法将文件标记为可执行文件;它只是恢复到0644。(umask==0022)我想强调的是,当从CYGWIN shell外部运行
patch
命令并重置已修补文件的权限时(非常讨厌!),这是唯一一种也有帮助的解决方法。这里有更多信息:我现在正在删除我两年前为修复这个问题而编写的脚本。但愿我当时能找到这个。:)这起作用了。我尝试的另一件事也很有效,那就是放松Windows(7)中的权限。我基本上从Windows资源管理器中创建了所有
chmod u+rw.
chown-r me.
(用Unix术语)。我不推荐我的解决方案,因为这是一场安全灾难。我做此注释只是为了提供更多数据。
getfacl.
是我所寻找的。通过在Windows上设置正确的安全属性,可以修复这些错误。右键单击文件夹->选择属性->选择安全选项卡。现在修复所有不正确的设置。同时选中“高级”选项。尝试“启用继承”并用当前文件夹设置替换子对象权限。这非常有用。知道在哪里寻找古老的历史记录保存了我。