Есть ли в Windows эквивалент Linux chmod
для изменения прав доступа к файлу?
8 ответов
Грег упоминает attrib
- но attrib
не близок к chmod
- attrib
может устанавливать атрибуты «Только для чтения» /«Скрытый» для одного файла - он не предоставляет детализированных элементов управления, как icacls
.
icacls
устанавливает / сбрасывает списки контроля доступа, поэтому вы можете предоставлять / запрещать права для отдельных идентификаторов безопасности и групп. Это довольно сложно, хотя.
Вот пример, который я сохранил в своем Github Gist ; он сбрасывает список владения и контроля доступа для всех файлов в папке и особенно полезен для исправления тех раздражающих «Требуются разрешения от .. для выполнения этого действия», особенно при перемещении файлов из предыдущей установки:
icacls * /reset /t /c /q
Сброс заменяет существующий список по умолчанию.
/t
действует рекурсивно на все файлы, папки и подпапки
/q
не отображает сообщения об успехе
/c
продолжается с остальными файлами даже при возникновении ошибки.
Вы также можете создавать резервные копии существующих ACL и применять их ко всем. Взгляните на ss64, который очень хорошо объясняет различные опции и переключатели.
Там (к сожалению) не может быть точного эквивалента, так как Linux и DOS/Windows используют атрибуты для разных целей, и (как сказал ранее Чатуранга) модель безопасности отличается:
- В файловых системах Windows есть атрибуты "скрытый" (
H
) и "системный" (S
), которые не имеют эквивалента в Linux; там файлы скрываются путем добавления имени к точке (.
). - Также нет эквивалента атрибуту Windows "архив" (
A
). - В атрибутах файла DOS/Windows нет эквивалента "исполняемым" (
x
) атрибутам Linux. - Существует эквивалент для Windows "директории"
D
атрибута (но он не может быть изменен в любом случае). - В файловых системах Linux каждая запись принадлежит только одному пользователю и одной группе, и чтение / запись / выполнение может быть разрешено для каждой из них и для других. ACL (например, используемые в Windows) еще более гибкие, но и более сложные, а синтаксис командной строки - это PITA (по моему скромному мнению, конечно)
Атрибут файла DOS R
(только для чтения) - это тот, который можно считать имеющим эквивалент: этот набор атрибутов примерно соответствует атрибуту w
для всех отсутствующих; но разрешение на изменение этого атрибута зависит от ACL.
Было бы здорово иметь эквивалент chmod
/chown
в Windows, возможно написанный на каком-то языке сценариев, который в свою очередь вызывает attrib
и cacls
(или преемники), но у меня его нет.
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C
Работает как брелок для изменения прав доступа к папке для пользователей домена. Дополнительная информация о cacls
и icacls
.
Команда attrib
наиболее близко подходит для самых простых вещей (только для чтения, архивные флаги). Тогда существует команда ACL (список контроля доступа) cacls
И последнее, но не менее важное: поскольку Windows на самом деле совместима с Posix, флаги, подобные Unix, существуют. Если вы установите набор инструментов Cygwin, вы получите chmod
. (Немного не по теме, так как вы ищете эквивалент команды unix, загрузка и установка Cgygwin может быть чем-то интересным для вас.)
Я использую команду Windows takeown.exe
чтобы изменить права доступа к файлу для моего текущего зарегистрированного идентификатора пользователя: http://technet.microsoft.com/en-us/library/cc753024.aspx
В Windows нет ничего, что называется chmod, потому что модель безопасности Windows отличается от Linux. Вы можете использовать команду attrib
чтобы изменить свойства объектов. (Но они больше к глобальным свойствам.)
Для меня обходной путь заключается в установке Cygwin и добавлении его папки bin в системный путь. Затем, если вы запустите "chmod" в командной строке, он будет работать. Хотя я не проверил его правильность.