我有一个文件夹/ cygwin /d/myfolder/,每次我在那里保存文件,从cygwin,如果我执行ls -la,我会看到这些文件被授予了权限。这实际上给我带来了相当多的问题,因为我将这个文件夹同步到我的服务器上,并且没有一个文件是可以访问的。如何让文件自动获得合理的权限?
发布于 2011-08-17 01:43:59
请阅读以下链接中的答案: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。使用Cygwin noacl挂载选项时,会忽略文件系统ACL,并且仅根据只读属性伪造权限位的子集。
发布于 2011-08-10 13:27:54
检查以确保使用umask命令正确设置了umask。如果umask是0777,那么就会从新文件权限中减去,最终得到000个权限。除了这一点,可能还有其他几种可能性需要考虑。
如果您的id在/etc/passwd和/etc/group中设置不正确,也会导致ls显示意外的结果。检查文件夹的权限。还要使用getfacl命令检查Windows权限。也许还可以检查mount命令。
发布于 2018-01-24 03:46:18
在上面的回答中,提出了解决方案:
编辑/etc/fstab并在文件末尾添加以下行:
none /cygdrive cygdrive二进制文件,noacl,posix=0,用户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中执行,这是必要的,因为我正在运行一个Jenkins作业,该作业调用Korn shell stack 3深度文件,我无法对其进行可修改的控制。我只是需要.bat来运行!
更新:在进一步的测试中,上面的解决方案并不完全符合我的需求。这导致了一些可执行文件,如javac和cl的行为异常(实用程序将打印它们的用法和退出)。我想我需要的不是'cygexec‘,而是'exec’。如同一页所述:
exec -将挂载点以下的所有文件视为可执行文件。
https://stackoverflow.com/questions/5828037
复制相似问题