Cmd изменить права доступа к файлу
на форумах довольно часто встает вопрос о том как получить доступ к какому либо объекту Windows.
рассмотрим возможные варианты.
внимание!
обязательно создайте точку восстановления перед манипуляциями на доступом к ресурсам/файлам
инструкция
Для того чтобы восстановить и откатить систему до нужной точки, необходимо воспользоваться другим инструментом - Панель управления->Восстановление->Запуск восстановления системы, в окне мастера нажать Далее и выбрать в списке нужную точку, снова Далее и убедившись в правильности своего выбора нажать Готово.
самый простой способ
Способ 1.
Использование графического интерфейса (GUI)
1)
Откройте проводник (или редактор реестра) и перейдите к папке/файлу/разделу реестра, к которому необходимо получить доступ.
для файла или папки
Установите курсор на группу Администраторы или на имя своей учетной записи и нажмите ОК. В случае с папкой также, вероятно, вам понадобится отметка параметра "Заменить владельца подконтейнеров и объектов".
Для раздела реестра.
Способ 2.
Использование утилит командной строки takeown и icacls (применим только к файлам, папкам и дискам)
для windows xp -команда cacls
Нажмите Пуск - в строке поиска введите cmd – на найденном файле нажмите правую клавишу мыши и выберите пункт
Запуск от имени администратора
Примечание.
Запуск от имени администратора в данном случае обязателен независимо от того, какими правами обладает учетная запись, в которой вы работаете в данный момент. Исключение может составлять только случай, когда вы работаете во встроенной учетной записи Администратор, которая по умолчанию отключена.
вариант А
используем команду takeown
Команда takeown использует следующий синтаксис:
takeown /f <файл> [/s <система>] [/u <домен\пользователь>] [/p <пароль>]
рассмотрим возможные параметры команды.
параметр /f <файл>
Используется для указания файла, который принимается во владение. Можно использовать символ
параметр /s <система>
Используется для предоставления имени или адреса IP удаленного компьютера, на котором будет запущена команда. По умолчанию команда будет запущена на локальной системе.
парметр /u <домен\пользователь>
Используется для запуска команды от имени другого пользователя. Это может потребоваться, когда команда запускается на изолированной системе от имени локального администратора.
параметр /p <пароль>
Используется для указания пароля учетной записи пользователя, если предоставлен параметр /u.
пример:
Чтобы принять на себя владения всеми файлами в каталоге D:\Game введите такую команду:
внимание!
Сразу после принятия на себя владения файлом или папкой администратор может получать доступ к файлу. Если к папке должны получать доступ множество пользователей, не забудьте обновить права доступа для папки с помощью команды cacls или с помощью Проводника Windows (Windows Explorer).
Полный синтаксис утилиты вы можете получить по команде takeown /?
утилита icacls (для windows xp cacls)
синтаксис команды icacls выглядит следующим образом:
icacls папка\файл /setowner Пользователь параметры
Посмотрим несколько конкретных примеров, как можно изменить владельца файла или папки.
icacls "C:\Program Files (x86)\UltraISO\UltraISO.exe" /setowner Administrator /C /L /Q
icacls "C:\Program Files (x86)\UltraISO\UltraISO.exe" /setowner "NT SERVICE\TrustedInstaller" /C /L /Q
icacls "C:\Program Files (x86)\UltraISO\" /setowner Medvedev /T /C /L /Q
icacls "C:\Program Files (x86)\UltraISO\" /setowner Putin /T /C /L /Q
Теперь разберемся, что это за параметры используются в каждой команде.
А вот как можно изменять разрешения для файла или папки:
icacls папка_или_файл /grant:r пользователь:разрешение
Список разрешений выглядит следующим образом:
D – удаление;
F – полный доступ;
M – изменение;
RX – чтение и выполнение;
R – чтение;
W – запись.
В качестве примера можно привести следующие команды:
icacls "C:\Program Files (x86)\UltraISO\UltraISO.exe" /grant:r Putin:F
icacls "C:\Program Files (x86)\UltraISO\UltraISO.exe" /grant:r Putin:M
icacls "C:\Program Files (x86)\UltraISO\" /grant:r Putin:F
icacls "C:\Program Files (x86)\UltraISO\" /grant:r Putin:RX /T
Чтобы узнать больше, введите в командной строке команду icacls /? и вы получите полный перечень ее команд.
Пункт смены владельца объекта в контекстном меню проводника.
Для упрощения процедуры смены владельца вы можете добавить соответствующий пункт в контекстное меню проводника.
В предлагаемом варианте также используются утилиты командной строки takeown и icacls с определенными параметрами, а полученная команда установит владельцем объекта, на котором будет применяться пункт меню, группу Администраторы (или Administrators в английской версии ОС).
Для добавления пункта меню «Смена владельца» примените этот твик реестра:
Отображает или изменяет избирательные списки управления доступом (DACL) для указанных файлов и применяет сохраненные списки DACL к файлам в указанных каталогах.
Эта команда заменяет устаревшую команду cacls.
Синтаксис
Параметры
Комментарии
Идентификаторы SID могут быть в виде числовых или понятных имен. Если используется числовая форма, прикреплять символ-шаблон * к началу идентификатора SID.
Эта команда сохраняет канонический порядок записей ACE следующим образом:
<perm> Параметр — это маска разрешений, которая может быть указана в одной из следующих форм:
Последовательность простых прав:
F — полный доступ
M— изменение доступа
RX — доступ для чтения и выполнения
R — доступ только для чтения
W — доступ только на запись
Список с разделителями-запятыми в скобках для конкретных прав:
D — удаление
RC — контроль чтения
WDAC — запись DAC
WO — владелец записи
S — синхронизация
Безопасность системы как доступа
MA — максимально допустимый
GR — универсальное чтение
GW — универсальная запись
GE — универсальное выполнение
Общедоступная версия-общий
RD -чтение данных или каталога списка
WD : запись данных и добавление файла
AD — Добавление данных и Добавление вложенного каталога
Реа — чтение расширенных атрибутов
ВЕА — запись расширенных атрибутов
X -выполнение и обход
Контроллер домена -Удаление дочернего элемента
RA -чтение атрибутов
Атрибуты записи WA
Права на наследование могут предшествовать любой <perm> форме, и они применяются только к каталогам:
(OI) — наследование объектов
(CI) — наследование контейнера
(IO) — только наследование
(NP) — не распространять наследование
Примеры
чтобы сохранить списки dacl для всех файлов в каталоге C:\ Windows и его подкаталогах в файле аклфиле, введите:
чтобы восстановить списки dacl для каждого файла в аклфиле, который существует в каталоге C:\ Windows и его подкаталогах, введите:
Чтобы предоставить пользователю User1 разрешения на удаление и запись DAC в файл с именем Test1, введите:
Чтобы предоставить пользователю, заданному с помощью SID S-1-1-0, разрешения DAC и Write в файл с именем test2, введите:
В результате мы запустим проводник с администраторскими привилегиями. Выставляем права и радуемся своей находчивости.
Но пришло время перемен и в более новых системах эта команда запустит проводник от текущего пользователя.
Можно, конечно, выставлять права через администраторские шары со своего рабочего места, или запускать от себя другие файловые менеджеры… Но иногда выставить права нужно здесь и сейчас, а установка лишней программы на компьютер, которой придется пользоваться раз в месяц — это неправильно.
Итак, я нашел два способа побороть эту ситуацию: один правильный и интересный, второй быстрый и забавный. Начнем с первого.
Способ 1. Для любознательных и терпеливых
За разграничение прав проводника отвечает один из COM объектов. А именно — Elevated-Unelevated Explorer Factory.
Находится это чудо следующим образом:
Запускаете cmd с правами администратора — dcomcnfg и далее в настройке DCOM ищите параметр Elevated-Unelevated Explorer Factory.
и там ищите нашего спрятанного зверька:
Однако редактировать этот параметр вам скорее всего не дадут. Нет прав на изменение ветки реестра HKEY_CLASSES_ROOT\AppID\
Когда нас останавливали такие пустяки? Делаем себя владельцем, изменяем права и снова запускаем dcomcnfg
УРА! Мы можем теперь выставить параметр на вкладке Удостоверение — Запускающий пользователь.
Муторно немного, да? Можно сразу редактировать ключик реестра — HKEY_CLASSES_ROOT\AppID\\RunAs
- значение Interactive User для текущего пользователя
- удаление этого параметра для запускающего пользователя
- имя пользователя для запуска проводника от какого-то конкретного пользователя
Возможно решить данный вопрос можно через политики, но увы -я такое не нашел, да и не применимо на работе у меня такое. Разве что приходит на ум батник на ключа реестра. Ну что же, первый способ мы осилили…
А теперь время магии.
Способ 2. Быстрый и веселый
Запускаем cmd от имени администратора, открываем блокнот, выбираем Открыть и отобразить все файлы и спокойно меняем права на файлы и папки.
Картинка, иллюстрирующая мои глаза в момент этого чудного открытия прилагается:
Благодарю за внимание!
UPD
Благодаря пользователю denis_g и нескольким другим линуксойдам, вспомнил, что давно читал про консольную команду управления правами доступа — CACLS
Раз ссылка на синтаксис
Два ссылка на синтаксис
Получается, добавление пользователя с правами на изменение делается так:
cacls PATH:\To\FILE /t /e /p username:C
Где переменные: /t — подкаталоги (для папок), /e — edit т.е. изменение существующих прав, /p — изменение пав пользователю (если нет — добавит), С — чтение.
Осторожно, сперва потренируйтесь, ибо можно снести в null все права на папку!
UPD2 у меня не заработал
Зажать SHIFT и выбрать «Запуск от имени другого пользователя» экзешника проводника…
Одной из типовых задач администратора Windows при настройке доступа пользователей – управление NTFS разрешениями на папки и файлы файловой системы. Для управления NTFS разрешениями можно использовать графический интерфейс системы (вкладка Безопасность/Security в свойствах папки или файла), или встроенную утилиту командной строки iCACLS. В этой статье мы рассмотрим примеру использовании команды iCACLS для просмотра и управления разрешениями на папки и файлы.
Утилита iCACLS позволяет отображать или изменять списки управления доступом (Access Control Lists (ACLs) к файлам и папкам файловой системы. Предшественником у утилиты iCACLS.EXE является команда CACLS.EXE (доступна в Windows XP).
Чтобы просмотреть действующие разрешения на конкретную папку (например, C:\PS), откройте командную строку и выполните команду:
Данная команда вернет список всех пользователей и групп пользователей, которым назначены разрешения на данную папку. Попробуем разобраться в синтаксисе разрешений, которые вернула команда iCACLS.
c:\PS BUILTIN\Администраторы:(I)(OI)(CI)(F)
NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
BUILTIN\Пользователи:(I)(OI)(CI)(RX)
NT AUTHORITY\Прошедшие проверку:(I)(M)
NT AUTHORITY\Прошедшие проверку:(I)(OI)(CI)(IO)(M)
Успешно обработано 1 файлов; не удалось обработать 0 файлов
Напротив каждой группы и пользователя указан уровень доступа. Права доступа указываются с помощью сокращений. Рассмотрим разрешения для группы BUILTIN\Администраторы.
(OI) - Object inherit – права наследуются на нижестоящие объекты
(CI) - Container inherit – наследование каталога
(F) – Full control– полный доступ к папке
(I) — Inherit права наследованы с вышестоящего каталога
Это означает, что у данной группы есть права на запись, изменение данных в данном каталоге и на изменения NTFS разрешений. Данные права наследуются на все дочерние объекты в этом каталоге.
Ниже представлен полный список разрешений, которые можно устанавливать с помощью утилиты icacls.
Права наследования:
(OI) — object inherit
(CI) — container inherit
(IO) — inherit only
(NP) — don’t propagate inherit
(I) — Permission inherited from parent container
Список основных прав доступа:
D — право удаления
F — полный доступ
N — нет доступа
M — доступ на изменение
RX — доступ на чтение и запуск
R — доступ только на чтение
W — доступ только на запись
Детальные разрешения:
DE — Delete
RC — read control
WDAC — write DAC
WO — write owner
S — synchronize
AS — access system security
MA — maximum allowed
GR — generic read
GW — generic write
GE — generic execute
GA — generic all
RD — read data/list directory
WD — write data/add file
AD — append data/add subdirectory
REA — read extended attributes
WEA — write extended attributes
X — execute/traverse
DC — delete child
RA — read attributes
WA — write attributes
Чтобы выгрузить текущие ACL папки C:\PS и сохранить их в текстовый файл export_ps_acl.txt, выполните команду:
icacls C:\PS\* /save c:\backup\export_ps_acl.txt /t
Данная команда сохраняет ACLs не только на сам каталог, но и на все вложенные папки и файлы. Полученный текстовый файл можно открыть с помощью блокнота или любого текстового редактора.
Чтобы применить сохраненные списки доступа (восстановить разрешения на каталог и все вложенные объекты), выполните команду:
icacls C:\PS /restore :\backup\export_ps_acl.txt
Таким образом процесс переноса прав доступа с одной папки на другую становится намного легче.
С помощью команды icacls вы можете изменить списки доступа к папке. Например, вы хотите предоставить пользователю aivanov право на редактирование содержимого папки. Выполните команду:
icacls C:\PS /grant aivanov:M
Удалить все назначенные разрешения для учетной записи пользователя aivanov можно с помощью команды:
icacls C:\PS /remove aivanov
Вы можете запретить пользователю или группе пользователей доступ к файлу или папке так:
icacls c:\ps /deny "MSKManagers:(CI)(M)"
Имейте в виду, что запрещающие правил имеют больший приоритете, чем разрешающие.
С помощью команды icacls вы можете изменить владельца каталог или папки, например:
icacls c:\ps\secret.docx /setowner aivanov /T /C /L /Q
Теперь разберемся, что это за параметры используются в каждой команде.
Вы можете изменить владельца всех файлов в каталоге:
icacls c:\ps\* /setowner aivanov /T /C /L /Q
Также при помощи icacls можно сбросить текущие разрешения на объекты,
icacls C:\ps /T /Q /C /RESET
После выполнения команды все текущие разрешения на папку будут сброшены и заменены на разрешения, наследуемые с вышестоящего объекта (каталога).
Читайте также: