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

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

Грег упоминает attrib но attrib не находится где-то близко к chmodattrib может устанавливать атрибуты Read-only / Hidden одного файла – он не обеспечивает мелкозернистых элементов управления, таких как icacls .

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

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

 icacls * /reset /t /c /q 

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

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

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

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

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

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

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

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

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

  • Википедия – cacls & icacls
  • Технология Microsoft

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

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

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

Да, разрешения совершенно разные, но вы соответствуете этому

Лучшие примеры

https://codex.wordpress.org/Changing_File_Permissions

 Permission Modes 7 5 5 user, group, world, r+w+x, r+x, r+x, 4+2+1, 4+0+1, 4+0+1 = 755 

Режим разрешения вычисляется путем суммирования следующих значений для пользователя, группы файлов и для всех остальных. Диаграмма показывает, как.

Чтение 4 – Разрешено читать файлы Запись 2 – Разрешено писать / изменять файлы eXecute1 – Чтение / запись / удаление / изменение / каталог

 7 4 4 user group world r+w+xrr 4+2+1 4+0+0 4+0+0 = 744 

Примеры режимов разрешения

 Mode Str Perms Explanation 0477 -r--rwxrwx owner has read only (4), other and group has rwx (7) 0677 -rw-rwxrwx owner has rw only(6), other and group has rwx (7) 0444 -r--r--r-- all have read only (4) 0666 -rw-rw-rw- all have rw only (6) 0400 -r-------- owner has read only(4), group and others have no permission(0) 0600 -rw------- owner has rw only, group and others have no permission 0470 -r--rwx--- owner has read only, group has rwx, others have no permission 0407 -r-----rwx owner has read only, other has rwx, group has no permission 0670 -rw-rwx--- owner has rw only, group has rwx, others have no permission 0607 -rw----rwx owner has rw only, group has no permission and others have rwx 
  • Пользовательские разрешения: Daemon и User
  • Как сбросить права доступа к папкам по умолчанию в Ubuntu?
  • Как я могу сделать рекурсивный chmod только в каталогах?
  • Невозможно изменить разрешение / право собственности / группу внешнего жесткого диска на Ubuntu
  • Chmod для разрешения на чтение и запись для каталога
  • Как сбросить права доступа к папкам по умолчанию в Ubuntu?
  • Невозможно редактировать файлы в группе _www на OS X
  • Chmod 777: как сделать все файлы «RWX»
  • Групповые разрешения для apache
  • Эквивалент chmod для изменения прав доступа к файлам в Windows
  • Interesting Posts

    Когда использовать инициализатор, заключенный в скобки?

    Диспетчер задач всегда сбой в течение нескольких секунд

    Почему структуры хранятся в стеке, а classы хранятся в куче (.NET)?

    Доступ к локальному хосту на Mac OS X с машины Parallels

    Разница между char a = “string”; char * p = “string”;

    Можно ли «привязать» верх / низ вместо левого / правого в Windows 7?

    Как переписать только часть файла в c ++

    Как эффективно случайным образом выбирать элемент массива без повторов?

    Safari больше не открывается, "повторно открывать"

    Ctrl + Backspace вставляет небольшой ящик вместо стирания

    Есть ли способ доступа к локальной переменной во внешней области в C ++?

    Выполнить функцию оболочки с тайм-аутом

    Проверьте, является ли строка действительным целым числом

    В чем разница между module_init и subsys_initcall при инициализации драйвера?

    Неподдерживаемая архитектура при установке Linux-программы в OSX

    Давайте будем гением компьютера.