Кажется, вы путаете 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
to 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
.