windows – How to set permissions with xcacls.vbs – Stack Overflow

Как дать разрешение пользователям на каталог с помощью командной строки в windows?

Поврежденные разрешения: восстановление доступа к папке и ее подобъектам

Хотя большинство ответов, опубликованных в ответ на вопрос, имеют определенную ценность, ИМХО ни один из них не дает полного решения. Следующее (может быть) идеальное решение для Windows 7, если вы заблокированы в папке из-за поврежденных настроек разрешений:

icacls "c:folder" /remove:d /grant:r Everyone:(OI)(CI)F /T  

Для Windows 10 после команды /remove:dos должен быть указан / SID пользователя.

icacls "c:folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T  

,
Примечания :

  1. Команда применяется к указанному каталогу.

  2. Указание пользователя «Все» позволяет пользователям использовать максимально широкое разрешение, поскольку оно включает каждого возможного человека.

  3. Все явные настройки DEN удаляются и отменяются опцией “/ remove: d”, поскольку они определяют требования для добавления новой настройки ALLOW. Поскольку часто настройки DEN отсутствуют, это просто мера предосторожности.

  4. Параметр “/ grant” создает новый параметр ALLOW, явное разрешение которого заменяет все явные параметры в ASLOW.

  5. Параметр “F” (т.е. дает полный контроль над тем, что происходит на экране монитора благодаря созданному разрешению.

  6. Параметр “T” добавляет рекурсию ко всем текущим объектам в указанном каталоге (то есть файлам и папкам).

  7. Параметры «(OI)» и «(CI)» также добавляют рекурсию, применяя эти изменения к подобъектам, созданным впоследствии.
    ,

В ДОБАВЛЕННОМ ПОСОБНЕНИИ (2022/02/10) – ЕР

Вот командная строка Windows 10, которая была любезно предоставлена мне сегодня. Я не могу проверить ее, потому что у меня нет Windows 10. Пожалуйста, попробуйте; в противном случае комментарий ниже не появится.

Единственным изменением является первоначальное удаление настройки DEND. Возможно, что в системе нет настройки DEN. Я считаю, что Windows 7 не позволяет указывать пользователя после / delete: d? Я могу ошибаться!

,

Д ОБАВЛЕНИЕ (2022/11/21)

Astark предлагает использовать термин * S-1-0 вместо “All”, чтобы сделать команду нейтральной к языку. Мне трудно проверить это предложение, поскольку у меня не установлена Windows на английском языке.

Как измененить права доступа к файлам и папкам (команда icacls). – … – как сделать…. – полезные советы ит – бесплатная компьютерная помощь

Команда icacls позволяет отобразить или модифицировать дискретный список управления доступом для файла и файлов. Если у пользователя есть подозрения, что он не может получить доступ к файлу из-за проблем с правами доступа или ошибок в работе браузера и если его права нарушены.

Когда после запуска утилиты cacls в правах доступа для файла или каталога обнаруживаются проблемы, то можно воспользоваться этой же командой для исправления списков управления доступом.

Синтаксис команды cacls:

cacls <имя_файла> [/t] [/e] [/c] [/g <пользователь|группа:разрешение> ] [/r <пользователь|группа>] [/p <пользователь|группа:разрешение>] [/d <пользователь|группа>]

Мне пришлось включить наследование, пройдя через каждую папку и файл в каталоге M.

windows - How to set permissions with xcacls.vbs - Stack Overflow

В моём случае команда выглядила так: icacls “S:PDM FOLDERS” /inheritance:e /T

Команда iCACLS позволяет отображать или изменять список управления доступом (Access Control Lists) к файлам и папкам файловой системы. Утилита iCACLS. EXE является дальнейшим усовершенствованием утилиты управления доступом CAPELS EGO в будущем!

N TFS управляется с помощью специальных записей в таблице MFT (Master File Table). NTFS имеет специальную запись в таблице MFT, содержащую специальный дескриптор безопасности. Два списка контроля доступа составляют каждый дескриптор безопасности.

System Access-Control List (SACL) – системный список управления доступом .

Селективный список управления доступом называется дискреционным списком управления доступом (DACL).

S ACL управляется системой и используется для оценки попыток доступа к объектам файловой системы. В операционных системах Windows Vista и более поздних, SACL используется для защиты системы от проникновения в нее нежелательных элементов (ILE).

Список управления доступом AD – это то, чем на самом деле является DACL. Кто может предоставлять или запрещать доступ к объекту, определяется DACL.

Каждый список контроля доступа (ACL) представляет собой набор элементов (записей) контроля доступа – Access Control Entries, или ACE) . Записи ACE бывают двух типов (разрешающий и запрещающий доступ), и содержит три поля:

SID пользователя или группы, к которому применяется данное правило

Количество доступов, к которым применяется данное правило

Тип ACE – разрешающий или запрещающий.

Пользователь или группа пользователей могут быть однозначно идентифицированы по их SID, или идентификаторам безопасности. Примеры SID можно посмотреть с помощью команды WHOAMI /ALL. Как видите, имена SID не используются системой управления доступом к объектам NTFS. Тем не менее, пользователь, учетная запись которого была удалена из системы, не сможет получить доступ к своим файлам и папкам, так как получит новый SID.

При определении результатов запросов на доступ к объектам файловой системы NTFS применяются следующие рекомендации:

Если в дескрипторе безопасности отсутствует DACL, объект считается незащищенным.

Если объект закрыт для любого доступа, а DACL существует, но в нем отсутствуют элементы ACE.

Для того чтобы изменить DACL объекта, пользователь (процесс) должен обладать правом записи в WDAC. Право записи может быть разрешено или запрещено, с помощью утилиты icalc.exe (или иной альтернативный способ), но даже если установлен запрет на запись имеется хотя бы у одного пользователя владельца файла либо папки — поле Owner в дескрипторе безопасности; владелец всегда имеет право изменять DAC без ограничений по умолчанию для всех пользователей программы: от администраторов файлов до системных менеджером приложений из списка API-приложения Fast Events/Picture Scooping System Publications за пределами Windows Xbox One

Как можно использовать команду iCACLS:

I CACLS name /mail] (?) /save [T] [C], – сохранение DACl для любых файлов или папок с указанным именем. Обратите внимание, что метки целостности, владельца и SACL не сохраняются.

:/>  Перенос Windows 10 на ssd - подробная информация

ICACLS каталог [/substitute SidOld SidNew […]] /restore ACL_файл [/C] [/L] [/Q] – применение ранее сохраненных DACL к файлам в каталоге.

I CACLS имя /setowner пользователь [T][/C], [, L) – смена владельца всех соответствующих имен. Этот параметр не предназначен для принудительной смены владельца; используйте программу takeown.exe

I CACLS имя /findsid Sad [/T] [C], (Л)[/D] – поиск всех имен, имеющих ИД безопасности.

I CACLS имя /verify [T][/C], [NHD], [UE] – поиск всех файлов с неканоническими ACE.

Замените другие имена на унаследованные по умолчанию с помощью команды ICACLS name /reset.

ICACLS имя [/grant[:r] Sid:perm[…]] [/deny Sid:perm […]] [/remove[:g|:d]] Sid[…]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy[…]]

Команда Sidperm /grant[:r] предоставляет права доступа указанному пользователю. Эти разрешения заменяют все предыдущие явные разрешения, предоставленные с помощью параметра :r. Без параметра:r разрешения добавляются к любым явным разрешениям, которые уже были предоставлены.

/deny Sid:perm — явный отзыв указанных прав доступа пользователя. Добавляется ACE явного отзыва для заявленных разрешений с удалением этих же разрешений в любом явном предоставлении.

Все вхождения идентификатора безопасности ACL удаляются параметром Sid. Параметр:g удаляет все экземпляры предоставленных прав. Параметр:d удаляет все экземпляры прав, которые были отозваны.

/setintegritylevel [(CI)(OI)]уровень — явное добавление ACE уровня целостности ко всем соответствующим файлам. Уровень задается одним из следующих значений:

L[ow]: низкий

Средний, средний

High: высокий.

Уровню могут предшествовать параметры наследования для ACE целостности, примененные только к каталогам.

Механизм целостности Windows Vista и более поздних версий ОС, расширяет архитектуру безопасности путём определения нового типа элемента списка доступа ACE для представления уровня целостности в дескрипторе безопасности объекта (файла, папки). Новый ACE представляет уровень целостности объекта. Он содержится в системном ACL (SACL), который ранее используемом только для аудита. Уровень целостности также назначается токену безопасности в момент его инициализации. Уровень целостности в токене безопасности представляет уровень целостности (Integrity Level, IL) пользователя (процесса). Уровень целостности в токене сравнивается с уровнем целостности в дескрипторе объекта когда монитор безопасности выполняет проверку доступа. Система ограничивает права доступа в зависимости от того выше или ниже уровень целостности субъекта по отношению к объекту, а также в зависимости от флагов политики целостности в соответствующей ACE объекта. Уровни целостности (IL) представлены идентификаторами безопасности (SID), которые представляют также пользователей и группы, уровень которых закодирован в относительном идентификаторе (RID) идентификатора SID. Наиболее распространенные уровни целостности:

SID = S-1-16-4096 RID=0x1000 – уровень Low (Низкий обязательный уровень)

SID= S-1-16-8192 RID=0x2000 – уровень Medium (Средний обязательный уровень)

SID= S-1-16-12288 RID=0x3000 – уровень High (Высокий обязательный уровень)

SID= S-1-16-16384 RID=0x4000 – уровень системы (Обязательный уровень системы). 

/inheritance:e|d|r

e – включение наследования

D – отключить наследование и копирование ACE

r – удаление всех унаследованных ACE

И Д безопасности могут быть в числовой форме (SID), либо иметь понятное имя. Если задана числовая форма, добавьте * в начало ИД безопасности. Например: – S-1-2-0. iCACLS’s team performance metrics

При использовании опции /T операция выполняется для всех файлов и каталогов, найденных в заданном списке.

– операция выполняется, несмотря на любые ошибки файла. На экране по-прежнему отображаются сообщения об ошибках.

С помощью команды /L операция выполняется над символьной ссылкой, а не над целевым объектом.

/Q – утилита ICACLS подавляет сообщения об успешном выполнении. 

Канонический порядок записи ACE поддерживается утилитой ICACLS:

Явные отзывы

Явные предложения :

Унаследованные отзывы

Унаследованные права

Есть два способа указать разрешение, которое является маской разрешения.

Последовательность простых прав:

N – доступ отсутствует

F — полный доступ

M – доступ на изменение

RX – доступ на чтение и выполнение

Доступ только для чтения

W – только на запись

D – доступ на удаление

Список отдельных прав через запятую в скобках:

DE – удаление
RC – чтение
WDAC – запись DAC
WO – смена владельца
S – синхронизация
AS – доступ к безопасности системы
MA – максимально возможный
GR – общее чтение
GW – общая запись
GE – общее выполнение
GA – все общие
RD – чтение данных, перечисление содержимого папки
WD – запись данных, добавление файлов
AD – добавление данных и вложенных каталогов
REA – чтение дополнительных атрибутов
WEA – запись дополнительных атрибутов
X – выполнение файлов и обзор папок
DC – удаление вложенных объектов
RA – чтение атрибутов
WA – запись атрибутов 

Право наследования распространяется только на справочники и может наступать перед любой формой:

Что такое (OI)?

C I – наследование контейнеров.

I O — это только наследование.

( NP) запрещает распространение наследования

( I) – наследование разрешений от родительского контейнера.

I CACLS для определения чувствительности к свету

icacls – запуск без ключей используется для получения краткой справки по использованию команды.

Icacls C:USers – отобразить список управления доступом для папки Users. Пример отображаемой информации

C:Users NT AUTHORITYсистема:(OI)(CI)(F)
BUILTINАдминистраторы:(OI)(CI)(F)
BUILTINПользователи:(RX)
BUILTINПользователи:(OI)(CI)(IO)(GR,GE)
Все:(RX)
Все:(OI)(CI)(IO)(GR,GE)

Успешно обработано 1 файлов; не удалось обработать 0.

C:windows* / save DWIN7.acl – сохранение ACL для всех файлов в каталоге с:windows и его подкаталогах, включая файлы из CSV-файла Сохраненные списки ACL позволят восстановить управление доступом к файлам и каталогам в исходное состояние.

Пример сохраненных данных списка доступа ACL:

acpimof.dll 

D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;0x1200a9;;;BU) 

addins

D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1301bf;;;SY)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)(A;OICIIO;GA;;;CO)

AppCompat

D:AI(A;ID;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;CIIOID;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)(A;OICIIOID;GA;;;CO) 

. . . 

В тех случаях, когда при выполнении команды iCACLS возникает ошибка или отказ в доступе к обрабатываемому объекту, можно продолжить выполнение команды. Если задан параметр /С:

Icacls “C:Systems Volume Information*” / save D SVI-c.acl – сохранение списка управления доступом для всех файлов и подкаталогов каталога C:SIV в случае возникновения ошибки. По результатам обработки отображается количество успешно обработанных файлов.

:/>  Windows 10: как изменить размер шрифта (чтобы он не был таким мелким и не уставали глаза)

Метрика /restore используется для восстановления доступа к файлам и папкам:

Icacls c:windows /restore D:Win7.acl – восстановление списков контроля доступа к файлам и папкам каталога с wine 7, в котором был сохранен ABCL-файл C:wIN7.acl

icacls C:Usersuser1tmpMyfile.doc /grant boss:(D,WDAC) – предоставление пользователю boss разрешений на удаление и запись DAC для файла C:Usersuser1tmpMyfile.doc.

Icacls C:Usersuser1tmpMyfile.doc /grante *S-1-0, WDAC) – предоставление пользователю с ИД безопасности S-1-2 (группа “Все”) разрешений на удаление и запись DAC для файла С: Usersuser1. TMP Music Program. icacls C:Usersuser1tmpMyfile.doc /grante bossF – предоставление пользователю Boss полного доступа к файлу c:USERSuzer 1TMPMotion.doc

iCACLS.exe (2003 sp2, Vista )

Change file and folder permissions – display or modify Access Control Lists (ACLs) for files and folders.
iCACLS resolves various issues that occur when using the older CACLS & XCACLS

Syntax
Add or remove permissions:
ICACLS Name
[/grant[:r] User:Permission[…]][/deny User:Permission[…]][/remove[:g|:d]] User[…]][/inheritance:e|d|r ][/setintegritylevel Level[…]][/T] [/C] [/L] [/Q]

   Store ACLs for one or more directories matching name into aclfile for later use with /restore:
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]Restore ACLs to all files in directory:
ICACLS directory [/substitute SidOld SidNew […]]/restore aclfile [/C] [/L] [/Q]

   Change Owner:
ICACLS name /setowner user [/T] [/C] [/L] [/Q]

   Find items with an ACL that mentions a specific SID:
ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]

   Find files whose ACL is not in canonical form or with a length inconsistent with the ACE count:
ICACLS name /verify [/T] [/C] [/L] [/Q]Replace ACL with default inherited acls for all matching files:
ICACLS name /reset [/T] [/C] [/L] [/Q]This is equivalent to “Replace all child permission entries with inheritable permission from this object” in the GUI.

Key
name  The File(s) or folder(s) the permissions will apply to.

   /T  Traverse all subfolders to match files/directories. This will apply permission changes to
all subfolders whether or not they are set to inherit permissions from the parent. On very large
directory structures this may take some time as the command has to traverse the entire tree.
/C  Continue on file errors (access denied) Error messages are still displayed.
/L  Perform the operation on a symbolic link itself, not its target.

/ Q Quiet – подавление сообщений об успехе.

   /grant :r user:permission
Grant access rights, with :r, the permissions
will replace any previouly granted explicit permissions (for the given user).
Otherwise the permissions are added.

   /deny user:permission
Explicitly deny the specified user access rights.
This will also remove any explicit grant of the 
same permissions to the same user.

   /remove[:[g|d]] User 
Remove all occurrences of User from the acl. 
:g remove all granted rights to that User/Sid.
:d remove all denied rights to that User/Sid.

   /inheritance:e|d|r
e – Enable inheritance
d – Disable inheritance and copy the ACEs 
r – Remove all inherited ACEs

   /setintegritylevel [(CI)(OI)]Level 
Add an integrity ACE to all matching files. 
level is one of L,M,H (Low Medium or High)

       A Directory Inheritance option for the integrity ACE can precede the level
and is applied only to directories:

Пользователь Группа, идентификатор SID или учетная запись пользователя

   /restore  Apply the acls stored in ACLfile to the files in directory

   permission is a permission mask and can be specified in one of two forms:
a sequence of simple rights:
D – Delete access
F – Full access (Edit_Permissions Create Delete Read Write)
N – No access
M – Modify access (Create Delete Read Write)
RX – Read and eXecute access
R – Read-only access
W – Write-only access
a comma-separated list in parenthesis of specific rights:
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
inheritance rights can precede either form and are applied
only to directories:
(OI) – object inherit
(CI) – container inherit
(IO) – inherit only
(NP) – don’t propagate inherit
(I)  – Permission inherited from parent container
Unlike earlier command-line tools, iCACLS correctly preserves the canonical ordering of ACE entries:

Explicit Deny
Explicit Grant
Inherited Deny
Inherited Grant
Access Control Lists apply only to files stored on an NTFS formatted drive, each ACL determines which users (or groups of users) can read or edit the file. When a new file is created it normally inherits ACL’s from the folder where it was created.

Список записей управления доступом называется списком управления доступом (ACL). Даже если вас интересуют ACE только для нескольких определенных файлов, вы должны создать резервную копию или восстановить ACL с помощью iCACLS для всего каталога (используя /save и /restore). На самом деле, большинство разрешений устанавливаются для каждого каталога.

:/>  Список всех команд командной строки (CMD) |

Multiple /Grant /Deny /Remove clauses can be included in a single icacls command, on a large directory tree this has the advantage that the tree only has to be traversed once, rather than multiple times if you were to issue several consecutive icacls commands instead.

Modify vs Full control
To edit a file you must have the “Modify/Change” ACL (or be the file’s owner)
To use the iCACLS command to change the permissions of a file requires “FULL Control” (or be the file’s owner)
File “Ownership” will always override all ACL’s – you always have Full Control over files that you create.
Inheritance
Inherited folder permissions are given as:

 OI – Object inherit    – This folder and files. (no inheritance to subfolders)
CI – Container inherit – This folder and subfolders.
IO – Inherit only      – The ACE does not apply to the current file/directory

These can also be combined as folllows:
(OI)(CI)      This folder, subfolders, and files.
(OI)(CI)(IO)  Subfolders and files only.
(CI)(IO)  Subfolders only.
(OI)    (IO)  Files only. 
So BUILTINAdministrators:(OI)(CI)F means that both files and Subdirectories will inherit ‘F’ (Full control) 
similarly (CI)R means Directories will inherit ‘R’ (Read folders only = List permission)

It is worth spending some time working out which permissions can be inherited and which need to be applied directly. On large/complex directory structures, minimising the number of ACLs can improve fileserver performance.

If inheritance is combined with /T (traverse subfolders) the change will apply to all folders, not just the top level.
for example:
icacls “C:demoexample” /inheritance:e /T
Will traverse all subfolders below”C:demoexample” and enable the inheritance for every one, this will replace any inheritance permissions that have been removed.

If no inheritance is specified, inheritance rules will not be changed but existing inherited permissions will be re-applied to existing objects in the specified location for the specified users/groups.
for example: 
icacls “C:demoexample” /grant administrators:(F) /T 
This is similar to applying /reset to the child items of “C:demoexample” but only resets the administrators group.

Built-In Groups
A command which addresses a built-in group by name like ICACLS foldername /GRANT Everyone:F /T
will only work when the system language is English.

To make this language independent, use an asterisk followed by the well-known SID for the group, see Q243330 for a list.

Чтобы предоставить всем полный контроль над папкой, например, используйте команду ICACLS foldername /GRANT *S-1-1-0:F /T.

Examples:

Change the NTFS permissions on C:DEMO, remove all existing inherited permissions and replace with Full control for the Administrators group and Change/Modify permission for jsmith. 
Apply the new permissions to the folder and inherit down to subfolders and files (OI)(CI):

icacls “C:demoexample” /inheritance:r /grant:r Administrators:(OI)(CI)F
icacls “C:demoexample” /grant:r Administrators:(OI)(CI)F /T
icacls “C:demoexample” /grant:r ss64Domjsmith:(OI)(CI)M /T

or you can combine grants like:

icacls “C:demoexample” /grant:r Administrators:(OI)(CI)F /T /grant:r ss64Domjsmith:(OI)(CI)M /T
View the permissions currently set on a folder:

icacls “C:demoexample”

Grant the group FileAdmins ‘Delete’ and ‘Write DAC’ permissions to C:demoexample:

icacls “C:demoexample” /grant:r FileAdmins:(D,WDAC)

Сбросьте разрешения для всех дочерних элементов под C:example. Обратите внимание на использование *; в противном случае использовались бы разрешения C:example.

icacls “C:demoexample*” /c /t /reset

Propagate a new permission to all files and subfolders of C:example, without using inheritance:
(so if any of the subfolders contain specific permissions, those won’t be overwritten)

icacls “C:demoexample” /grant:r accountName:(NP)(RX) /T

A CL каждого файла в текущем каталоге должны быть созданы резервные копии:

icacls * /save Myacl_backup.txt

Используя ранее сохраненный файл acl, восстановите ACLS

icacls /restore Myacl_backup.txt

Change the Integrity Level (IL) of a file to High:

icacls MyReport.doc /setintegritylevel H 

Remove all inheritance on the ‘Demo’ folder and grant access to the domain user ‘Volta’, in this command the /t will traverse existing subfolders and files, and the (CI) will ensure that new folders/files added in future will inherit these permissions:

icacls C:demoexample /inheritance:r /grant SS64domVolta:(CI)F /t

Grant the user jdoe rights to create, edit and delete files in the folder C:demoexample, but prevent deletion of the folder itself:

:: First remove inheritance and grant admins Full control to the top folder
icacls “C:demoexample” /inheritance:r /grant:r administrators:(OI)(CI)(F)

:: Grant Modify Delete Child to subfolders and files only
icacls “C:demoexample” /grant:r ss64Domjdoe:(OI)(CI)(IO)(M,DC) /T

:: Grant Read/Execute, Write and Append to the top level folder
icacls “C:demoexample” /grant:r ss64Domjdoe:(RX,WD,AD)

:: if any pre-existing subfolders Grant admins Full control
icacls “C:demoexample” /grant:r administrators:(OI)(CI)(F) /T

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

Оставьте комментарий

Adblock
detector