Cygwin 创建文件权限问题

CListery ARE YOU OK?

在通过命令行,如:mkdir test 创建一个目录或文件后,通过右键属性打开安全选项卡时,Windows 会提示 test 上的权限顺序不正确,而后可能会导致一些文件权限操作上的异常问题发生

原因

Cygwin 的主要目的是通过重新编译,将 POSIX 系统(例如 Linux、BSD,以及其他 Unix 系统)上的软件移植到 Windows 上。

所以 Cygwin 自带的对文件的创建命令同样也是通过移植 POSIX 的方式实现,这一点我们可以通过 cygwin 安装目录下的 /etc/fstab 文件内容得到验证

1
2
# This is default anyway:
none /cygdrive cygdrive binary,posix=0,user 0 0

解决方案

默认情况下,Cygwin 使用文件系统的访问控制列表 (ACL) 来实现真正的 POSIX 权限。

某些 Windows 本地程序或进程可能会创建或修改 ACL,导致 Cygwin 将 POSIX 权限计算为 000。

所以需要将 /etc/fstab 改为如下内容:

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

使用 noacl 挂载选项,Cygwin 会忽略文件系统 ACL,并且只会根据 DOS 只读属性伪造权限位的子集。

最后关闭所有 Cygwin 及相关进程(或者直接重启系统),打开一个新终端并再次对您的文件执行 ls -l

参考

  • 标题: Cygwin 创建文件权限问题
  • 作者: CListery
  • 创建于 : 2023-02-15 16:38:17
  • 更新于 : 2024-11-15 15:53:32
  • 链接: http://clistery.github.io/2023/02/15/cygwin/fstab-error-cygwin/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Cygwin 创建文件权限问题