匹配 dir /a:r 和 icacls

匹配 dir /a:r 和 icacls

我正在尝试在命令行上查看文件权限。我遇到了类似的问题但无法理解icacls输出。

在下面的例子中,c10.dat是一个只读文件,如图所示,dir /a:r并且用 覆盖它时会出现错误dir > c10.dat

icacls输出中DOMAIN\USER是我的 ID 的占位符。它如何表明这c10.dat是一个只读文件?据我了解,它的 acl 表示(I)继承和(F)完全访问。

X:\>dir /a:r c10.dat
 Volume in drive X is OSDisk
 Volume Serial Number is 6621-4FA8

 Directory of X:\

04/08/2013  11:11 AM             8,192 c10.dat
               1 File(s)          8,192 bytes
               0 Dir(s)  40,525,492,224 bytes free

X:\>icacls c10.dat
c10.dat NT AUTHORITY\SYSTEM:(I)(F)
        BUILTIN\Administrators:(I)(F)
        DOMAIN\USER:(I)(F)

Successfully processed 1 files; Failed processing 0 files

X:\>dir > c10.dat
Access is denied.

答案1

清除只读属性:

X:\>attrib -R c10.dat

测试:

X:\>dir > c10.dat

库存单位:

ls -al

输出:

total 148
drwxrwxrwx+ 1 Domain Users     Domain Users      0 Apr  9 04:06 .
drwxrwxrwx+ 1 +Administrators  513               0 Apr  8 14:43 ..
-rwxrwxrwx+ 1 +Administrators  Domain Users    354 Jun  5  2012 2.ps1
-rwxrwxrwx+ 1 +Administrators  Domain Users    115 Oct 22 22:43 3.ps1
-rwxrwxrwx+ 1 +Administrators  Domain Users    154 Apr  9 02:15 4.ps1
-r-xr-xr-x+ 1 +Administrators  Domain Users  12030 Apr  9 02:25 Aliases.txt
-rwxrwxrwx+ 1 +Administrators  Domain Users    267 Feb 21  2012 ps-run.cmd
-rwxrwxrwx+ 1 +Administrators  Domain Users  61436 Apr  9 04:07 sub2.txt

答案2

似乎你混淆了Read-only文件的属性ACL(正如其他人提到的)。

如果文件标有Read-only属性(可以看出attrib或者dir /a:r),它将无法写入(Read-only)由系统和所有用户决定,无论ACL任何用户的该文件的权限。

如果你试图找到Write允许(ACL)对于给定用户的文件,你会看到使用icacls

例如,我创建了一个名为“test.txt”的文件。该文件未标记Read-only

C:\>attrib test.txt
A            C:\test.txt

C:\>


我使用检查了文件icacls

C:\>icacls test.txt
test.txt BUILTIN\Administrators:(I)(F)
         NT AUTHORITY\SYSTEM:(I)(F)
         NT AUTHORITY\Authenticated Users:(I)(M)
         BUILTIN\Users:(I)(RX)

C:\>


我标记了文件Read-only使用attrib

C:\>attrib +R test.txt
A    R       C:\test.txt

C:\>attrib test.txt
A    R       C:\test.txt

C:\>


我再次使用检查了文件icacls

C:\>icacls test.txt
test.txt BUILTIN\Administrators:(I)(F)
         NT AUTHORITY\SYSTEM:(I)(F)
         NT AUTHORITY\Authenticated Users:(I)(M)
         BUILTIN\Users:(I)(RX)

C:\>

如您所见,输出没有变化icacls对于此文件。

然后我改变了文件的权限BUILTIN\UsersDeny Write(这近似于Read-only),然后使用icacls

C:\>icacls test.txt
test.txt BUILTIN\Users:(DENY)(W)
         BUILTIN\Administrators:(I)(F)
         NT AUTHORITY\SYSTEM:(I)(F)
         NT AUTHORITY\Authenticated Users:(I)(M)
         BUILTIN\Users:(I)(RX)

C:\>

请注意,现在它显示BUILTIN\Users:(DENY)(W)对于文件。

如果我更改文件的权限BUILTIN\UsersDeny Full control并再次检查文件icacls显示:

C:\>icacls test.txt
test.txt BUILTIN\Users:(N)
         BUILTIN\Administrators:(I)(F)
         NT AUTHORITY\SYSTEM:(I)(F)
         NT AUTHORITY\Authenticated Users:(I)(M)
         BUILTIN\Users:(I)(RX)

C:\>

现在显示BUILTIN\Users:(N)对于文件。

如果我更改文件的权限BUILTIN\UsersAllow Full control进而Deny Modify并再次检查文件icacls显示:

C:\>icacls test.txt
test.txt BUILTIN\Users:(DENY)(M)
         BUILTIN\Administrators:(I)(F)
         NT AUTHORITY\SYSTEM:(I)(F)
         NT AUTHORITY\Authenticated Users:(I)(M)
         BUILTIN\Users:(I)(RX)

C:\>

现在显示BUILTIN\Users:(DENY)(M)对于文件。

如果你想查看文件“只读”属性的设置,则无法使用icacls因为Read-only不属于ACL. 你应该使用attrib

相关内容