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

Posted

技术标签:

【中文标题】如何在 Msys 或 Cygwin 中将文件设置为只写或只读?【英文标题】:How to set a file to write-only or read-only in Msys or Cygwin? 【发布时间】:2016-08-16 11:23:17 【问题描述】:

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 中将文件的权限分别更改为“只读”和“只写”?

谢谢

【问题讨论】:

【参考方案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

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

cacls: http://ss64.com/nt/cacls.html 或 technet.microsoft.com icacls: http://ss64.com/nt/icacls.html 或 technet.microsoft.com

【讨论】:

以上是关于如何在 Msys 或 Cygwin 中将文件设置为只写或只读?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 NetBeans 使用 Cygwin bin 目录并使其使用 MSYS?

如何使用/在 Cygwin 中正确安装 FLTK?

如何使用 MSYS2 获取旧版本的软件包?

Cygwin/MSYS2文件夹书签功能函数favorite-dirs,调用Windows资源管理器快速打开文件夹;

如何在cygwin中将-pg传递给gcc

REVISIT:如何在msys2 / mintty中配置默认 Shell?