Msys shell命令用于更改文件的属性

时间:2012-06-06 13:27:28

标签: mingw msys file-attributes

请告诉我一个MSYS shell命令,该命令可用于更改文件的属性。当我以ls -l运行命令时,我得到以下内容:

-rw-r--r-- 1 lenovo Admin .....m4sugar.m4

我想提供完全访问权限。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

@cdhowie是对的;这是msys跟踪的错误 - > http://sourceforge.net/tracker/?func=detail&atid=102435&aid=3071537&group_id=2435

  

除非它假装它,否则它不能做任何比它更有用的事情   在POSIX仿真中,正如Cygwin所做的那样。然而,Cygwin所做的是   大部分无关紧要;因为MSYS是从Cygwin-1.3派生的,其中大部分是   伪造故意禁用 - 它不是 MSYS的目标,   在Cygwin支持的范围内提供伪造的POSIX功能。如果你   想要Cygwin的行为,而MSYS并没有足够的保留它   需要,然后你应该使用Cygwin。

     

MSYS旨在更好地与原生 MS-Windows功能集成   由MinGW支持。在这个本机MS-Windows环境中,没有   文件系统属性,可以将文件标记为可执行文件 - 即   由文件数据空间中的魔术字节序列表示,(和   通常也通过文件扩展名来限定匹配)。没有办法   其他,MSYS chmod可以安全地修改它,没有文件损坏的风险   而不是更完全地接受Cygwin的模仿。但是,就是这样   与MSYS项目的目标截然相反 - 它只是不会   发生。

@kbulgrien提供了改变权限的好方法:

注意:icaclscacls的新版本,可以解决几个问题,但似乎在Windows XP中不存在。

您可以使用以下任一命令为Everyone提供完全访问权限:

  • cacls "$file_path" //E //P Everyone:F
  • icacls "$file_path" //grant Everyone:F

请注意,使用ls -lcacls后,Msys中的icacls将无法显示有关实际ACL的准确信息。

答案 1 :(得分:0)

问题很可能是MSYS工具中最小的实现之一。您也将无法使用attrib.exe等Windows工具进行更改。

$ >test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ chmod u-w test
$ ls -l test
-r--r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ chmod u+w test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test

正如您所看到的,chmod工作正常。现在,看看使用Windows二进制文件attrib.exe会发生什么:

$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ attrib +R test
$ ls -l test
-r--r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
$ attrib -R test
$ ls -l test
-rw-r--r--    1 kbulgrie Administ        0 Aug 24 13:51 test
Windows工具

attrib对ugoa权限不可知,并将事情简化为拥有或不拥有权利:

$ attrib +R test
$ attrib test
     R     C:\msys\1.0\home\kbulgrien\test

我注意到,确保MSYS工具比Windows“等效”更多。 MSYS中的M表示“最小”。

cacls.exe可以在MSYS下做一些事情。例如,这表示我和管理员完全控制,即使ls -l似乎表示Administrat没有写入。小心。如果在Windows上,也许使用Windows方法。     $ cacls test
    C:\ msys \ 1.0 \ home \ kbulgrien \ test BUILTIN \ Administrators:F                                     NT AUTHORITY \ SYSTEM:F                                     APD \ kbulgrien:F                                     BUILTIN \ Users:R

以下命令是我在MSYS环境中使用的命令,用于在从归档还原后修复SQL数据库文件的权限。您可以从MSYS运行Windows二进制文件。我一直这样做...例如,脚本在MSYS shell中运行diskpart,format等,而不调用cmd.exe。

$ cacls "Mantis*.*" //E //G "NETWORK SERVICE":F