2010-02-08 09:34:14 +0000 2010-02-08 09:34:14 +0000
63
63

Эквивалент chmod для изменения прав доступа к файлу в Windows

Есть ли эквивалент Windows в Linux chmod для изменения прав доступа к файлу?

Ответы (8)

27
27
27
2011-08-02 17:10:18 +0000

Greg упоминает attrib - но attrib нигде не приближается к chmod - attrib может установить атрибуты только для чтения/скрытия одного файла - он не предоставляет точных элементов управления, как это делает icacls .

icacls устанавливает/сбросает списки контроля доступа, так что вы можете предоставить/отменить права для отдельных SID'ов и групп. Однако это довольно сложно.

Вот пример, который я сохранил в github gist ; он сбрасывает список прав собственности и контроля доступа для всех файлов в папке и особенно полезен для исправления этих надоедливых “Вам нужны права от … для выполнения этого действия”, особенно при перемещении файлов из предыдущей установки:

icacls * /reset /t /c /q

Reset заменяет существующий список списком по умолчанию.
/t действует рекурсивно на все файлы, папки и вложенные папки /q не выводит никаких сообщений об успешности /c продолжает с оставшимися файлами даже при возникновении ошибки

Вы также можете делать такие вещи, как резервное копирование существующих ACL и применять их ко всем. Взгляните на ss64 , который очень хорошо объясняет различные опции и переключатели.

13
13
13
2010-02-08 10:41:26 +0000

Либо cacls , xcacls , либо мой любимый icacls наверняка сделает то, что вам нужно.

10
10
10
2012-12-28 18:04:43 +0000

Точного эквивалента (к сожалению) быть не может, так как Linux и DOS/Windows используют атрибуты для разных целей, и (как уже говорил Чатуранга) модель безопасности отличается:

  • В файловых системах Windows есть “скрытые” (H) и “системные” (S) атрибуты, которые не имеют эквивалента в Linux; там файлы скрываются путем добавления имени с точкой (.).
  • Эквивалента атрибута Windows “архив” (A) тоже нет.
  • В атрибутах файлов DOS/Windows нет эквивалента “исполняемого” (x) Linux.
  • В атрибуте Windows “directory” (D) есть is эквивалент (но его все равно нельзя изменить).
  • В файловых системах Linux каждая запись принадлежит ровно одному пользователю и ровно одной группе, и чтение/запись/исполнение может быть разрешено для каждого из них, а также для других. ACL (как в Windows) еще более гибкие, но и более сложные, а синтаксис командной строки - PITA (по моему скромному мнению, конечно)

  • Атрибут файла DOS R (только для чтения) - это тот, который можно считать эквивалентным: этот атрибут set примерно похож на атрибут w для всех отсутствующих; но разрешение на изменение этого атрибута зависит от ACL.

Было бы круто иметь chmod/chown эквивалент в Windows, возможно, написанный на каком-нибудь языке сценариев, который, в свою очередь, вызывает attrib и cacls (или преемников), но у меня его нет.

7
7
7
2012-12-28 18:26:58 +0000
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Работает как талисман для изменения разрешений в папке для пользователей домена. Дополнительная информация относительно cacls и icacls.

5
5
5
2010-02-08 11:37:51 +0000

Команда attrib - самое близкое совпадение для очень простых вещей (только для чтения, флаги архива). Затем есть команда cacls ACL (список контроля доступа). И последнее, но не менее важное: поскольку Windows на самом деле соответствует Posix, флаги unix-подобные существуют. При установке набора инструментов Cygwin вы получите chmod. (Немного нестандартно, поскольку вы ищете эквивалент команды unix, загрузка и установка Cgygwin может быть чем-то интересным для вас).

3
3
3
2014-07-29 14:22:12 +0000

Я использую команду Windows takeown.exe для изменения файловых разрешений на свой текущий идентификатор пользователя, вошедшего в систему: http://technet.microsoft.com/en-us/library/cc753024.aspx

2
2
2
2017-12-22 03:29:44 +0000

Для меня обходным путем является установка Cygwin и добавление его папки bin в системный путь. Затем, если вы запустите “chmod” в командной строке, это сработает. Хотя я не проверил его правильность.

2
2
2
2010-02-08 09:37:07 +0000

В Windows нет ничего, называемого chmod, потому что модель безопасности Windows отличается от Linux. Вы можете использовать команду attrib для изменения свойств объектов. (Но они больше похожи на глобальные свойства).

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

3
19
10
28
7