Makefile 文件权限在生成过程中更改,编译中止,因为访问被拒绝(Windows,Cygwin)

Makefile 文件权限在生成过程中更改,编译中止,因为访问被拒绝(Windows,Cygwin),makefile,cygwin,build-process,file-permissions,arangodb,Makefile,Cygwin,Build Process,File Permissions,Arangodb,我正在尝试使用官方软件并遵循官方软件 构建过程中的多个步骤似乎会干扰文件权限,因此编译失败,因为所需的文件无法再访问。我也不能在任何程序中打开它们(访问被拒绝,,无法加载,…),即使是管理员用户和权限提升的用户 到目前为止,我的解决办法是运行takeown/F/R和icacls/例如,V8-4.3.61\build上的T/C/Q/reset,以拥有文件并从管理员shell重置权限。但是在最后的make pack-win64过程中,解决权限问题不再有效 我想知道为什么权限会被更改。ArangoDB

我正在尝试使用官方软件并遵循官方软件

构建过程中的多个步骤似乎会干扰文件权限,因此编译失败,因为所需的文件无法再访问。我也不能在任何程序中打开它们(访问被拒绝,,无法加载,…),即使是管理员用户和权限提升的用户

到目前为止,我的解决办法是运行
takeown/F/R
icacls/例如,
V8-4.3.61\build上的T/C/Q/reset
,以拥有文件并从管理员shell重置权限。但是在最后的
make pack-win64
过程中,解决权限问题不再有效

我想知道为什么权限会被更改。ArangoDB团队提供的脚本似乎没有改变这些设置。因此,必须是在流程(
gyp
?!),cygwin环境(
bash
make
,…)或编译器(
msbuild
?)中调用的第三方构建脚本。我不认为它与
git
cmake
有关,但它们也涉及其中

  • Windows 7 64位
  • Visual Studio 2013终极版
  • Cygwin2.2.0
  • cmake 3.3.1
    • 关闭cygwin中所有装载的ACL(
      noacl
      )显然修复了权限问题:

      # /etc/fstab
      #
      #    This file is read once by the first process in a Cygwin process tree.
      #    To pick up changes, restart all Cygwin processes.  For a description
      #    see https://cygwin.com/cygwin-ug-net/using.html#mount-table
      
      # noacl = Ignore Access Control List and let Windows handle permissions
      
      C:/cygwin64/bin  /usr/bin   ntfs      binary,auto,noacl           0  0
      C:/cygwin64/lib  /usr/lib   ntfs      binary,auto,noacl           0  0
      C:/cygwin64      /          ntfs      override,binary,auto,noacl  0  0
      none             /cygdrive  cygdrive  binary,posix=0,user,noacl   0  0
      
      顺便说一句,你跑了吗

      mkpasswd > /etc/passwd
      mkgroup > /etc/group
      

      什么时候?因为这也可以设置propper权限(如果cygwin首先知道映射)

      不,我没有。Cygwin似乎误解了Windows ACL,通常对权限要求过于严格。在一些web文章中提到,通过cygwin环境创建的文件被分配了一个权限集的新实例,这造成了所有的麻烦。noacl显然是唯一(简单?)的解决方案,参见。