С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
0 / 13 / 0
Регистрация: 04.01.2018
Сообщений: 58

Icacls и запрет прав удаления папки

14.01.2018, 17:15. Показов 8203. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно запретить %username%(учётка с админ правами) удалять папку, находящуюся в %appdata%
Windows Batch file
1
icacls %dir% /deny %username%:(DE,DC)
никакой реакции.
В вкладке "Безопасность" появляется строчка, которая задаёт запрет для "Удаление" и "Удаление подпапок и файлов".Так же написано "Применяется к:Только для этой папки". Спокойно удаляется.

Если поставить "Применяется к:Для этой папки, ее подпапок и файлов" и закинуть в эту папку файл, то уже удалить не получается. Но как тогда поставиться "Применяется к:Для этой папки, ее подпапок и файлов" через bat?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2018, 17:15
Ответы с готовыми решениями:

Изменение прав доступа к сетевой папке с использованием ICACLS
Доброго времени суток, господа и дамы! Я сразу извинюсь за возможные глупости, которые могу спросить/сказать. Уважая правила форума, я...

Расшаренные папки в локальной сети. Запрет копирования файлов/папки?
При разрешенном чтении запретить копирование файлов или папки целиком в локальной сети? очень слабо верится что такое возможно, но всё...

Запрет удаления листа
Как сделать чтобы нельзя было удалять листы через (ПКМ по названию > Удалить)

3
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
14.01.2018, 18:52
И для подпапок /t на конце:
Windows Batch file
1
2
3
4
5
@echo off
set "d=C:\papka"
set "user=Name_user"
icacls "%d%" /deny "%user%":(DE,WDAC,WO,AS,WD,AD,WEA,DC,WA,WD) /t
pause
0
5 / 5 / 0
Регистрация: 24.11.2014
Сообщений: 51
26.10.2021, 04:36
Вообще, это полное безобразие. Мы прописываем запрет на удаление папки, а ОС игнорирует эти настройки. И это при том, что, в проводнике, в контекстном меню каталога (или, кстати, соединения (Junction)), перед пунктом "Удалить" будет показан значок щита, который говорит о том, что у нас нет прав на удаление объекта без повышения прав. Интересно, что для соединения команда "RmDir /Q "Full_Path_Junction"" не работает, сообщая "Отказано в доступе.", а вот с ключом /S удаляет его без проблем (папка на которую указывает соединение остаётся на своём месте).
Для папки я эту проблему смог решить только созданием в ней файла и каталога с таким же файлом. На все эти объекты прописан запрет на удаление, изменение и запись. А вот с соединением пока облом.
0
5 / 5 / 0
Регистрация: 24.11.2014
Сообщений: 51
09.11.2021, 10:17
Нашёл 2 решения, как запретить пользователю удалять папку, соединение (связь, junction) или символическую ссылку (symbolic link) с папкой (не проверял), но при этом сохранить все другие права для работы с подпапками и файлами. В данном случае я рассматриваю вариант настройки личной папки пользователя. То есть, на эту папку у него изначально есть полные права и только у него (у других пользователей, помимо «Система» и группы «Администраторы», прав быть не должно). Если в вашем варианте будет использоваться общая папка, то и пользователи (скорее всего группы) будут иными, но суть подхода это не меняет.
Идеи не мои, поэтому скажем спасибо одному сайту и форуму и четырём их пользователям, двое спросили, а другие двое ответили.

1-й вариант (работает только на запрет удаления, переименование остаётся доступным).
Оказалось, что достаточно выставить атрибут «Только чтение» для папки (соединения или ссылки) и запретить «Только для этой папки» «Запись атрибутов». Я предпочитаю подстраховаться, поэтому добавляю ещё немного запрета (тем более, иначе почему-то возникают проблемы в настройках, подробности под спойлером). В итоге, есть два варианта: а) оставить наследование прав и добавить запрет; б) снять наследование и прописать разрешения без определённых прав. Тут, конечно, дело не в самом наследовании, а в том, что с ним приходят, в данном случае, полные права. Так что, если не используются какие-либо дополнительные участники безопасности, то права будут следующие:
а) (с использованием наследования прав и явного запрета)
%UserName% - Запрет - Только для этой папки - Запись атрибутов, Удаление, Смена разрешений, Смена владельца.
%UserName% - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
б) (без наследования прав и явного запрета)
%UserName% - Разрешение - Только для подпапок и файлов - Полный доступ.
%UserName% - Разрешение - Только для этой папки - Чтение и выполнение, Создание файлов / Запись данных, Создание папок / Дозапись данных, Запись дополнительных атрибутов, Удаление подпапок и файлов.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.

В этом варианте есть два недостатка, папка всё равно доступна для переименования и мы не сможем менять все основные атрибуты — «Архивный», «Скрытый», «Системный» и «Только чтение» (небольшая справка по атрибутам под спойлером).

2-й вариант (запрещает как удалять папку, так и переименовывать её).
Настройки будут касаться двух папок, той, которую мы хотим запретить удалять и её родительской папки. Именно в такой связке это и работает. Из этих двух папок, у родительской убираем разрешение "Только для этой папки" - "Удаление подпапок и файлов", а у дочерней разрешение "Только для этой папки" - "Удаление". Как и в первом варианте, есть два подварианта:
а) (с использованием наследования прав и явного запрета)
Родительская папка:
%UserName% - Запрет - Только для этой папки - Удаление подпапок и файлов, Смена разрешений, Смена владельца.
%UserName% - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Дочерняя папка:
%UserName% - Запрет - Только для этой папки - Удаление, Смена разрешений, Смена владельца.
%UserName% - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
б) (без наследования прав и явного запрета)
Родительская папка:
%UserName% - Разрешение - Только для этой папки - все права, кроме - Удаление подпапок и файлов, Смена разрешений, Смена владельца.
%UserName% - Разрешение - Только для подпапок и файлов - Полный доступ.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Дочерняя папка:
%UserName% - Разрешение - Только для этой папки - все права, кроме - Удаление, Смена разрешений, Смена владельца.
%UserName% - Разрешение - Только для подпапок и файлов - Полный доступ.
СИСТЕМА - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.
Администраторы - Разрешение - Для этой папки, её подпапок и файлов - Полный доступ.

Для обоих вариантов, для большей подстраховки можно ещё сменить владельца, но для этого придётся повысить права.

Подробные настройки и образцы команд для экспериментов.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Эксперимент проводил в ограниченной учётной записи пользователя Windows 10 x64 Pro Ru 20H2 (естественно, командную строку запускал с правами пользователя, т.е. без повышения прав).
Изначально имеем папку "D:\Temp\TestFolder", её мы настраиваем и не трогаем при тестировании. Её права: снято наследование от родительской папки, Администраторы:(OI)(CI)(F), СИСТЕМА:(OI)(CI)(F), "%UserName%":(OI)(CI)(F), Владелец: "%UserName%". Команда для настройки папки: ICACLS.exe "D:\Temp\TestFolder" /remove:g "*S-1-5-18" "*S-1-5-32-544" "*S-1-5-32-545" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "*S-1-5-32-545" "%UserName%" /grant:r "*S-1-5-18":(OI)(CI)(F) "*S-1-5-32-544":(OI)(CI)(F) "%UserName%":(OI)(CI)(F) /inheritance:r /C
Если необходимо, владельца меняем (с повышением прав) вручную или командой: ICACLS.exe "D:\Temp\TestFolder" /setowner "%UserName%" /C
 
Далее, описана процедура подходящая как для эксперимента «с нуля», так и для ситуации, когда мы уже поэкспериментировали с папками (поэтому часть действий избыточна).
Для подстраховки сбрасываем права (если команда не сработает, придётся это сделать вручную или удалить папки): ICACLS.exe "D:\Temp\TestFolder\User" /reset /T /C
Удаляем сразу все, возможно имеющиеся, папки, т.к. это проще, чем приводить их артибуты в исходное состояние: RmDir /S /Q "D:\Temp\TestFolder\User"
Создаём нужные папки.
MkDir "D:\Temp\TestFolder\User"
MkDir "D:\Temp\TestFolder\User\1"
 
1 вариант (работает только на запрет удаления).
Настраиваем права папки «User» (в данном варианте она нам не нужна, но я её оставил чтобы не было путаницы из-за второго варианта, который описан ниже):
ICACLS.exe "D:\Temp\TestFolder\User" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /grant:r "*S-1-5-18":(OI)(CI)(F) "*S-1-5-32-544":(OI)(CI)(F) "%UserName%":(OI)(CI)(F) /inheritance:r /C
Настраиваем атрибут: Attrib.exe +R "D:\Temp\TestFolder\User\1"
Два подварианта:
а) (с использованием наследования прав и явного запрета):
ICACLS.exe "D:\Temp\TestFolder\User\1" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /deny "%UserName%":(WA,DE,WDAC,WO) /inheritance:e /C
б) (без наследования прав и явного запрета):
ICACLS.exe "D:\Temp\TestFolder\User\1" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /grant:r "*S-1-5-18":(OI)(CI)(F) "*S-1-5-32-544":(OI)(CI)(F) "%UserName%":(OI)(CI)(IO)(F) "%UserName%":(RX,WD,AD,WEA,DC) /inheritance:r /C
 
Проверяем права: ICACLS.exe "D:\Temp\TestFolder\User" /T /C
Просмотр установленных атрибутов: Attrib.exe "D:\Temp\TestFolder\User" /S /D
Проверка на удаление: RmDir /S /Q "D:\Temp\TestFolder\User\1"
Проверка на переименование: ReName "D:\Temp\TestFolder\User\1" "1_New"
Просмотр содержимого папок: Dir "D:\Temp\TestFolder\User" /A /S
 
Немного о странностях. 
  Проводник, в контекстном меню папки, перед пунктами «Удалить» и «Переименовать» показывает иконку щита. То есть, проводник уверен, что удалить и переименовать можно только с повышением прав. С переименованием он ошибается. Впрочем, фактически с удалением тоже, т.к. при данных настройках для изменения прав повышение не нужно.
  Если в запрете указать только «WA» (запись атрибутов), то почему-то прописывается ещё и «S» (синхронизация). Если так же настроить через визуальный интерфейс результат будет тем же. При добавлении большего количества запретов, такого эффекта не возникает. Возможно, это связано с атрибутом архивации. Пример настройки прав: ICACLS.exe "D:\Temp\TestFolder\User\1" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /deny "%UserName%":(WA) /inheritance:e /C . Результат для пользователя «User»: User:(DENY)(S,WA), User:(I)(OI)(CI)(F).
  Если в запрете указать «D» (в отдельности или с другими правами), то происходит какой-то сбой в правах и ОС перестаёт пускать в папку. Хотя, судя по правам (как через GUI, так и через ICACLS.exe) всё нормально и проблем быть не должно. При показе прав через ICACLS.exe пишет "D:\Temp\TestFolder\User\1\*: Отказано в доступе. Успешно обработано 2 файлов; не удалось обработать 1 файлов". А ведь там больше ничего нет, только две папки. Может, нельзя прописывать права одновременно в краткой и подробной форме? Но, с другими комбинациями ((M,WDAC,WO) и (RX,W,WDAC,WO,DC)) проблем нет. Причём, судя по документации «D» можно использовать при прописывании прав, да и сама ICACLS.exe при просмотре прав пишет «D», а не «DE». При использовании «DE» проблем нет.
  Что касается настройки прав, то так и не понял, в чём моя ошибка. 
 
2 вариант (запрещает как удалять папку, так и переименовывать её).
Настраиваем права:
а) (с использованием наследования прав и явного запрета)
ICACLS.exe "D:\Temp\TestFolder\User" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /deny "%UserName%":(DC,WDAC,WO) /inheritance:e /C
ICACLS.exe "D:\Temp\TestFolder\User\1" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /deny "%UserName%":(DE,WDAC,WO) /inheritance:e /C
б) (без наследования прав и явного запрета)
ICACLS.exe "D:\Temp\TestFolder\User" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /grant:r "*S-1-5-18":(OI)(CI)(F) "*S-1-5-32-544":(OI)(CI)(F) "%UserName%":(M) "%UserName%":(OI)(CI)(IO)(F) /inheritance:r /C
ICACLS.exe "D:\Temp\TestFolder\User\1" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /grant:r "*S-1-5-18":(OI)(CI)(F) "*S-1-5-32-544":(OI)(CI)(F) "%UserName%":(RX,W,DC) "%UserName%":(OI)(CI)(IO)(F) /inheritance:r /C
 
Проверяем права: ICACLS.exe "D:\Temp\TestFolder\User" /T /C
Просмотр установленных атрибутов: Attrib.exe "D:\Temp\TestFolder\User" /S /D
Проверка на удаление: RmDir /S /Q "D:\Temp\TestFolder\User\1"
Проверка на переименование: ReName "D:\Temp\TestFolder\User\1" "1_New"
Просмотр содержимого папок: Dir "D:\Temp\TestFolder\User" /A /S
 
И опять о странностях.
  Проводник, в контекстном меню папки, перед пунктом «Удалить» показывает иконку щита. То есть, проводник уверен, что удалить можно только с повышением прав, а переименовать можно без повышения. Тут он ошибается с переименованием. 
  Если настроить обе папки, то это работает, а вот если только дочернюю (с явным запретом), то нет. И это при том, что приоритет в правах такой (в порядке убывания): Явные отзывы, Явные предоставления, Унаследованные отзывы, Унаследованные предоставления.
  Вот такая команда «ICACLS.exe "D:\Temp\TestFolder\User" /remove:g "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /remove:d "*S-1-5-18" "*S-1-5-32-544" "%UserName%" /deny "%UserName%":(DC,WDAC,WO) /inheritance:e /C» почему-то так же прописывает запрет на синхронизацию: %UserName%:(DENY)(WDAC,WO,S,DC).
 
 
Краткая справка по применённым в командах правам.
Распространение прав:
(I) - наследование прав от родительской папки.
(OI)(CI) - "Для этой папки, её подпапок и файлов".
(OI)(CI)(IO) - "Только для подпапок и файлов".
без параметра - "Только для этой папки".
Сами права:
M - доступ на изменение - все права, кроме - Удаление подпапок и файлов, Смена разрешений, Смена владельца.
RX - Чтение и выполнение - Обзор папок / Выполнение файлов, Содержание папки / Чтение данных, Чтение атрибутов, Чтение дополнительных атрибутов, Чтение разрешений.
W - доступ только на запись - Создание файлов / Запись данных, Создание папок / Дозапись данных, Запись атрибутов, Запись дополнительных атрибутов.
M,WDAC,WO - все права, кроме - "Удаление подпапок и файлов".
RX,W,DC,WDAC,WO - все права, кроме - "Удаление".
 
Список прав доступных для изменения через визуальный интерфейс:
Полный доступ .................. - F
Обзор папок / Выполнение файлов  - X
Содержание папки / Чтение данных - RD
Чтение атрибутов ............... - RA
Чтение дополнительных атрибутов  - REA
Создание файлов / Запись данных  - WD
Создание папок / Дозапись данных - AD
Запись атрибутов ............... - WA
Запись дополнительных атрибутов  - WEA
Удаление подпапок и файлов ..... - DC
Удаление ....................... - DE
Чтение разрешений .............. - RC
Смена разрешений ............... - WDAC
Смена владельца ................ - WO
 
/remove:g и /remove:d использую, чтобы гарантированно убрать лишние уже имеющиеся разрешения и запреты (но это не всегда нужно).
 
Участники безопасности:
"*S-1-5-18" - Система.
"*S-1-5-32-544" - группа "Администраторы".
"*S-1-5-32-545" - группа "Пользователи".
 
Небольшая справка по основным атрибутам (взята из Википедии).
В операционных системах DOS и Microsoft Windows существуют четыре атрибута:
   Архивный (A): Когда этот атрибут установлен, это означает, что файл был изменён со времени проведения последнего резервного копирования. ПО, с помощью которого выполняется резервное копирование, также отвечает за снятие этого атрибута.
   Скрытый (H): Файл с установленным атрибутом считается скрытым. Это означает, что команды MS-DOS (dir) и программы Windows (такие как Проводник) по умолчанию не будут отображать этот файл, если не включён специальный режим.
   Системный (S): Файл с установленным атрибутом считается системным — таким, существование которого в неизменённом виде критически важно для нормальной работы системы. По умолчанию команды MS-DOS (dir) и программы Windows (такие как Проводник) не будут отображать этот файл, если не включён специальный режим.
   Только чтение (R): Установленный атрибут означает, что содержимое файла нельзя изменять. Как правило, программы для Windows игнорируют этот атрибут, если он установлен для каталогов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2021, 10:17
Помогаю со студенческими работами здесь

Триггер на запрет удаления
Люди, помогите написать триггер на mysql который при удалении записи из таблицы создаст копию этой записи в этой же таблице. Спасибо!

Запрет удаления по условию
Подскажите пожалуйста, как в табличной форме запретить удалять записи при наличии значение истина в поле? Добавлено через 7 минут ...

Dgv запрет удаления строк
И снова я со своей таблицей... Проблема вот в чем, имеется таблица dgv, редактирование таблицы запрещено (по типу ReadOnly = true, только...

Запрет удаления символов в Edit
Добрый вечер, каким образом можно обеспечить запрет удаления символов в Edit? Enable = false; не предлагать, пожалуйста:-| ...

Запрет/контроль удаления каталогов
Всем привет! Может кто встречал решение такой задачи? Бывает ситуация, когда был(и) удален(ы) каталог(и), а если это важнейшая база...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru