如何在 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 处理。然而,这仍然远非完美,所以,作为一个 临时解决方法,[...]
Msys 中chmod
的实现不起作用,如以下错误报告中所述:https://sourceforge.net/p/mingw/bugs/1475/
This question 询问如何提供对 Msys 中文件的完全访问权限。
如何在 Msys/Cygwin 中将文件的权限分别更改为“只读”和“只写”?
谢谢
【问题讨论】:
【参考方案1】:可以使用windows提供的命令:cacls
和icacls
只读与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?