等效于chmod来更改Windows中的文件权限


Answers:


25

格雷格 提到 attrib -但attrib 不是任何接近chmod- attrib可以设置只读/单个文件的隐藏属性-它不提供细粒度的控制一样icacls呢。

icacls设置/重置访问控制列表,因此您可以授予/拒绝单个SID和组的权限。但是,这相当复杂。

这是我保存在github gist中的示例;它会重置文件夹中所有文件的所有权和访问控制列表,对于修复那些烦人的“您需要..权限才能执行此操作”尤其有用,尤其是在将文件从以前的安装中移出时:

icacls * /reset /t /c /q 

重置将现有列表替换为默认列表。
/t递归地作用于所有文件,文件夹和子文件夹,即使出现错误,
/q也不会显示任何成功消息,并
/c继续显示剩余文件。

您还可以执行诸如备份现有ACL并将其应用于所有ACL之类的操作。看看ss64,它很好地解释了不同的选项和开关。


问题是,我无法执行此操作,对于每个文件,都有消息:“访问被拒绝”。有没有办法解决?在阻止此问题的学校系统上,但不阻止cmd?
theonlygusti 2015年

您需要管理员权限;cmd通过按[Win] + [R]获得的“正常” 缺少这些。对于此类特殊需求,我有一个“管理员外壳”快捷方式,选中了“以管理员身份执行”(或类似权限;我使用的是德语Windows系统)(并且背景色为深红色)。
Tobias

我实际上遇到了“权限被拒绝”错误的问题。如果我是管理员和运行控制台,为什么还能做些什么呢?那是什么?
迷彩


9

(很难)不能完全等同,因为Linux和DOS / Windows使用属性的目的不同,并且(如Chathuranga之前所述)安全模型是不同的:

  • 在Windows文件系统中,有“隐藏”(H)和“系统”(S)属性,它们在Linux中没有对应的属性。在那里,文件名通过在名称前加上点(.)来隐藏。
  • 也没有等效于Windows的“归档”(A)属性。
  • x在DOS / Windows文件属性中没有等效于“可执行文件”()Linux属性。
  • 这里一个相当于Windows的“目录”( D)属性(但不能仍然会改变)。
  • 在Linux文件系统中,每个条目仅由一个用户和一个组拥有,并且可以为每个用户和其他用户允许读/写/执行。ACL(就像Windows使用的一样)更加灵活,但也更加复杂,并且命令行语法是PITA(当然,我的拙见)

DOS文件属性R(只读)是一种等效的属性:此属性大致类似于w缺少所有属性的属性;但是更改此属性的权限取决于ACL。

在Windows上有一个chmod/ chown等效项,也许用某种脚本语言编写,然后依次调用attribcacls(或后继),可能很酷,但我没有。


好的第一篇文章!
slm 2012年

您会混淆文件属性和权限。Linux具有可以通过chattr更改的文件属性。Linux具有对属性的细粒度访问控制(例如[i] mmutable属性只能由root或CAP_LINUX_IMMUTABLE进程设置),而对Windows中的set属性的访问则是全部或全部。对于Windows的实现,使用此命令设置只读文件属性是一个常见错误chmod。不幸的是,系统仅与开发它们的程序员一样多。
Eryk

@eryksun:有趣-我不知道该chattr命令。但是,您并不是故意要我“混淆文件属性和权限”,对吗?AFAICS,我写的有关DOS属性的每个单词仍然正确。
Tobias '18

文件由很多(扩展)属性组成。在Unix中,核心属性集存储在inode中,包括文件模式(权限)。其他扩展属性(例如ACL)可以存储在外部。Windows没有等效于Unix的“模式”属性。它还没有用于文件系统的公共inode记录。NTFS MFT记录与此类似。从其POV来看,标准Windows文件属性是文件记录的单个属性。这些对应于通过设置的Linux文件属性chattr,但Windows没有目录节点,因为没有索引节点,因此具有目录属性。
Eryk Sun

该问题询问“等效于chmod以更改Windows中的文件权限”。chmod在Windows中没有直接等效项,因为没有类似文件“ mode”属性的东西。Windows文件属性的标准集与此无关。只读属性不是文件许可权。它基本上说文件是用石头写的,因此所有修改它的尝试都必须失败。Linux的“不可变”文件属性与此类似。Windows仅将ACL用于权限,因此icacls.exe等是在权限主题上唯一类似的命令。
Eryk


5

attrib命令是最基本内容(只读,归档标志)的最接近匹配项。然后是ACL(访问控制列表)命令cacls。最后但并非最不重要的一点,因为Windows实际上是Posix兼容的,所以确实存在类Unix的标志。如果安装Cygwin工具集,则会显示chmod。(有点偏离主题,因为您正在寻找与Unix命令等效的命令,所以下载和安装Cgygwin对您来说可能很有趣。)



2

Windows中没有所谓的chmod,因为Windows的安全模型不同于Linux。您可以使用attrib命令来更改对象的属性。(但它们更倾向于全球资产。)


2

对我来说,解决方法是安装Cygwin,并将其bin文件夹添加到系统路径。然后,如果在命令行中运行“ chmod”,它将起作用。尽管我尚未验证其正确性。


1
参考:简单详细
Bob
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.