【问题标题】:How to set a file to write-only or read-only in Msys or Cygwin?如何在 Msys 或 Cygwin 中将文件设置为只写或只读?
【发布时间】:2025-12-19 11:40:06
【问题描述】:

chmod 函数在 Cygwin 中实现,但与 Windows 中的访问权限不完全匹配。这出现在以下更改日志中:https://cygwin.com/cygwin-ug-net/ov-new1.7.html

从 1.7.34 开始,chmod 并不总是影响 POSIX 权限掩码 由于改进的 POSIX,由 stat(2) 返回或由 ls(1) 打印 ACL 处理。然而,这仍然远非完美,所以,作为一个 临时解决方法,[...]

Msyschmod 的实现不起作用,如以下错误报告中所述:https://sourceforge.net/p/mingw/bugs/1475/

This question 询问如何提供对 Msys 中文件的完全访问权限。

如何在 Msys/Cygwin 中将文件的权限分别更改为“只读”和“只写”?

谢谢

【问题讨论】:

    标签: cygwin msys file-attributes


    【解决方案1】:

    可以使用windows提供的命令:caclsicacls

    只读cacls

    $ cacls "$file_path" //E //P Everyone:N 1>/dev/null
    $ cacls "$file_path" //E //G Everyone:R 1>/dev/null
    

    只写cacls

    $ cacls "$file_path" //E //P Everyone:N 1>/dev/null
    $ cacls "$file_path" //E //G Everyone:W 1>/dev/null
    

    第一行删除所有权限。 第二行添加“读取”或“写入”

    如果您使用的不是 Windows XP,您可以改用icacls

    • 只读icacls "$file_path" //grant :r Everyone:R 1>/dev/null
    • 只写icacls "$file_path" //grant :r Everyone:W 1>/dev/null

    有关这些命令的更多信息:

    【讨论】: