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

Вопрос или проблема

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

Грег упоминает attrib, но attrib совсем не сопоставим с chmodattrib может устанавливать атрибуты “Только для чтения”/”Скрытый” для одного файла – он не предоставляет таких тонких настроек, как icacls.

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

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

icacls * /reset /t /c /q 

Вот что у нас имеется

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

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

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

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

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

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

Либо cacls, xcacls, или мой личный фаворит icacls вероятно решат вашу задачу.

icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Отлично подходит для изменения разрешений на папку для пользователей домена. Дополнительная информация о cacls и icacls.

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

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

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

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

В Ms. Windows есть команда icacls /?

Попробуйте выполнить эту команду icacls rsa-key.ppk, и она вернет

rsa-key.ppk BUILTIN\Administrators:(I)(F)
    NT AUTHORITY\SYSTEM:(I)(F)
    NT AUTHORITY\Authenticated Users:(I)(M)
    BUILTIN\Users:(I)(RX)

Код означает

(I) - разрешение, унаследованное от родительского контейнера
(F) - полный доступ
(M) - доступ на изменение
(RX) - доступ на чтение и выполнение

Вы можете использовать команду

icacls file /grant user:(M) или icacls file /remove user

Ответ или решение

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

Вопрос изменения прав доступа к файлам в Windows, как аналог команды chmod в Linux, представляет собой интересную задачу, поскольку две операционные системы используют разные модели управления доступом и права на файлы. В этом ответе мы рассмотрим инструменты и команды, которые позволяют управлять правами доступа в Windows.

1. Команды для управления правами доступа

1.1. icacls

Команда icacls является наиболее мощным и гибким инструментом для управления списками контроля доступа (ACL) в Windows. Она позволяет задавать, изменять и отменять права доступа к файлам и папкам.

Синтаксис:

icacls <имя_файла> /grant <пользователь>:(<права>) [/T] [/C] [/Q]

Пример использования:
Чтобы предоставить группе пользователей полные права на определённую папку, можно использовать следующую команду:

icacls "C:\Папка" /grant "Домен\Пользователи":(OI)(CI)M /T /C
  • (OI) — права наследуются объектами в этой папке,
  • (CI) — права наследуются дочерними папками,
  • M — модификация прав доступа.

В этом примере ключи /T, /C и /Q означают:

  • /T – рекурсивно применять команду ко всем файлам и подпапкам,
  • /C – продолжать выполнение команды, даже если возникнут ошибки,
  • /Q – подавлять вывод сообщений о выполнении.
1.2. attrib

Команда attrib позволяет изменять атрибуты файлов, такие как "только для чтения" и "скрытый". Однако она не предоставляет такого же уровня контроля за доступом, как chmod.

Синтаксис:

attrib +r <имя_файла>   // Установка атрибута "только для чтения"
attrib -h <имя_файла>   // Установка атрибута "недоступен"

2. Альтернативные инструменты

Существует также возможность использовать альтернативные инструменты, такие как Cygwin. Установив эту среду, вы сможете получать доступ к командам UNIX, включая chmod.

3. Личные разные аспекты

Важно отметить, что в Windows отсутствуют некоторые атрибуты, аналогичные тем, что есть в Linux. Например, нет прямого эквивалента атрибута "исполняемый" для файлов. В Windows для выполнения файлов используется другая концепция — приложений и ассоциаций файлов.

4. Вывод

Хотя в Windows нет точного аналога chmod, команды icacls и attrib обеспечивают достаточно мощные средства для управления правами доступа к файлам. Понимание различных команд и их возможностей поможет вам более эффективно управлять файлами и папками в вашей системе.

Если вам необходима более детализированная информация по использованию команд, вы можете обратиться кократким справкам через icacls /? или на сайте Microsoft.

Понимание различий между моделями безопасности Windows и Linux важно для эффективного управления правами доступа, особенно при переносе данных между платформами. Ваша готовность использовать предложенные команды и принципы позволит вам более уверенно управлять системой Windows.

Оцените материал
Добавить комментарий

Капча загружается...