соответствие dir / a: r и icacls

742
Miserable Variable

Я пытаюсь увидеть права доступа к файлам в командной строке. Я сталкивался с подобным вопросом, но не могу понять icaclsвывод.

В следующем примере c10.datэто файл только для чтения, как показано, dir /a:rи ошибка при его перезаписи dir > c10.dat.

В icaclsвыводе DOMAIN\USERэто местозаполнитель для моего идентификатора. Как это означает, что c10.datэто файл только для чтения? Из того, что я понимаю, его acls означают (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. 
0
Атрибуты файла (например, только для чтения) и разрешения - это совершенно разные вещи. Команда icacls показывает ACL файла. David Marshall 11 лет назад 1
Спасибо @DavidMarshall. Кажется, я неправильно понял другой вопрос и его ответ. Есть ли способ найти атрибут файла только для чтения в командной строке, кроме как с помощью `dir / a: r` или` attrib`? Miserable Variable 11 лет назад 0

2 ответа на вопрос

2
STTR

Сlear read-only attribute:

X:\>attrib -R c10.dat 

test:

X:\>dir > c10.dat 

SKU:

ls -al

Output:

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 
Я не пытаюсь очистить атрибут только для чтения, я пытаюсь понять, как определить, что файл доступен только для чтения из вывода icacls Miserable Variable 11 лет назад 0
@ HemalPandya С icacls, вероятно, делает. Это инструмент для управления списком прав, а не изменениями и просмотра простых атрибутов. `dir / A: RD c10.dat | find / C / I "c10.dat" `или` dir / A: RD c10.dat` Возможно, я не понял вопроса, и вы ищете эффективные права для пользователя на предоставление ACL только для чтения .. , STTR 11 лет назад 0
Я пытаюсь найти способ получить список файлов вместе с их статусом только для чтения, что-то вроде `ls -al` в unix Miserable Variable 11 лет назад 0
@HemalPandya http://www.suacommunity.com/SUA.aspx может использовать SFU / SUA или сервер - http://www.microsoft.com/en-us/download/details.aspx?id=274 STTR 11 лет назад 0
Благодарю. Я уже использую `cygwin` на моей машине, которая дает эту информацию, но я искал что-то предустановленное. Miserable Variable 11 лет назад 0
2
Kevin Fegan

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

Благодарю. Я понял, что ACL отличается от readonly от другого ответа; но спасибо, что потрудились подготовить подробный ответ Miserable Variable 11 лет назад 0
Можете ли вы сказать, почему вы не хотите (или не можете) использовать ** `attrib` ** для этого? Kevin Fegan 11 лет назад 0
Я не хотел использовать attrib, потому что я забыл, как это работает. Теперь я в порядке :) Miserable Variable 11 лет назад 0

Похожие вопросы