我正在尝试在命令行上查看文件权限。我遇到了类似的问题但无法理解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\Users
到Deny 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\Users
到Deny 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\Users
到Allow 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
。