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

190776
nhinkle

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

42

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

18
Sathya

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

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

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

icacls * /reset /t /c /q 

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

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

Проблема в том, что я не могу этого сделать, для каждого файла появляется сообщение: «Доступ запрещен». Нет ли способа обойти это? На школьной системе, которая блокирует это, но не CMD? theonlygusti 9 лет назад 0
Вам нужны права администратора; «нормальный» `cmd`, который вы получаете, нажимая [Win] + [R], лишен этого. Для таких особых нужд у меня есть ярлык «Оболочка администратора» с проверкой «Выполнить от имени администратора» (или аналогичной; я в немецкой системе Windows) (и с темно-красным цветом фона). Tobias 9 лет назад 0
Я на самом деле сталкиваюсь с проблемой «Отказано в доступе». Почему, черт возьми, я могу что-то сделать, если я администратор, а консоль, которую я запускаю, тоже работает как администратор. Что это такое? Čamo 6 лет назад 0
10
Bryan

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

Я считаю, что icacls доступен только в Vista / 7. Hello71 13 лет назад 1
6
Tobias

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

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

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

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

Хороший первый пост! slm 11 лет назад 0
Вы путаете атрибуты файла и права доступа. В Linux есть атрибуты файлов, которые можно изменить с помощью [chattr] (https://linux.die.net/man/1/chattr). В Linux есть детальное управление доступом к атрибутам (например, атрибут [i] mmutable может быть установлен только пользователем root или процессом `CAP_LINUX_IMMUTABLE`), тогда как доступ к установленным атрибутам в Windows - все или ничего. Это распространенная * ошибка * в реализациях `chmod` для Windows - использовать эту команду для установки атрибута файла только для чтения. К сожалению, системы информированы только так, как их программисты. eryksun 6 лет назад 0
@eryksun: Интересно - я не знал об этой команде `chattr`. Но вы не имели в виду меня, чтобы "перепутать атрибуты файлов и разрешения", верно? AFAICS, каждое слово, которое я написал об атрибутах * DOS *, все еще верно. Tobias 6 лет назад 0
Файл состоит из множества (расширенных) атрибутов. В Unix основной набор атрибутов хранится в inode, включая режим файла (права доступа). Другие расширенные атрибуты (например, ACL) могут храниться извне. Windows не имеет эквивалента атрибуту Unix «mode». Он также не имеет общей записи inode для файловых систем. Запись NTFS MFT похожа. От его POV стандартные атрибуты файла Windows являются единственным атрибутом записи файла. Они соответствуют атрибутам файлов Linux, установленным через `chattr`, за исключением того, что в Windows есть атрибут каталога, так как нет inode. eryksun 6 лет назад 0
Вопрос задает вопрос о «[e] эквиваленте chmod для изменения прав доступа к файлам в Windows». В Windows нет прямого эквивалента `chmod`, потому что нет ничего похожего на атрибут файла mode. Стандартный набор атрибутов файлов Windows не имеет к этому никакого отношения. Атрибут только для чтения не является разрешением файла. Это в основном говорит, что файл написан в камне, поэтому все попытки изменить его должны потерпеть неудачу. Linux «неизменяемый» атрибут файла аналогичен. Windows использует только ACL для разрешений, поэтому icacls.exe и тому подобное являются единственными подобными командами на предмет разрешений. eryksun 6 лет назад 0
5
MDT Guy
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C 

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

Хороший первый пост! Никогда не слышал о icacls. slm 11 лет назад 0
4
user27570

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

2
Chathuranga Chandrasekara

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

2
Roman Kharkovski

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

0
WHOIF

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

Ссылка: [просто] (https://cygwin.com/cygwin-ug-net/using-filemodes.html) и [подробно] (https://cygwin.com/cygwin-ug-net/ntsec.html) Bob 6 лет назад 1