如何在 Msys 或 Cygwin 中将文件设置为只写或只读?

How to set a file to write-only or read-only in Msys or Cygwin?

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

Since 1.7.34, chmod does not always affect the POSIX permission mask as returned by stat(2) or printed by ls(1), due to the improved POSIX ACL handling. However, that's still far from perfect, so, as a temporary workaround, [...]

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

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

如何在 Msys/Cygwin 中将文件的权限分别更改为 "read-only" 和 "write-only"?

谢谢

您可以使用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

第一行删除所有权利。 第二行添加 "Read" 或 "Write"

如果您没有使用 Windows XP,您可以使用 icacls 代替:

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

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