MyTetra Share
Делитесь знаниями!
Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only)
Время создания: 30.12.2017 22:18
Раздел: Script

Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only)
Автор: Dragokas

1) RO.cmd (ReadOnly) - делает все файлы и папки доступными только для чтения и выполнения.
Дополнительно разрешается в текущей папке - создавать файлы.
Все остальные операции, в т.ч. и создание файлов в подкаталогах - запрещено.

2) FA.cmd (FullAccess) - восстанавливает полный доступ для всех пользователей.

Для нормальной работы в ОС Windows Vista, Win 7 батник нужно запускать правой кнопкой мыши "От имени Администратора".

Как пользоваться:
Соблюдайте правила: запускать батник только из той папки, в которой нужно ограничить доступ (RO.cmd) или получить полные права (FA.cmd).
Работает рекурсивно для всех подкаталогов, начиная с каталога, в котором находится батник.

Для корректной работы потребуется утилита из состава Microsoft Support Tools - ICACLS
(включена в ОС Windows Server 2003, начиная с SP2).

Поддержка:
Скрипт протестирован в средах английской и русской локализаций, а также:
1) Windows XP SP2 (требуется утилита ICACLS). ICACLS из состава Windows 7 несовместим с XP.
2) Windows Server 2003 SP2
3) Windows 7 SP1

Сохранять в кодировке OEM-866.

FA.cmd

Код (DOS):

@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)

Setlocal Enableextensions

Set Cur=%~dp0
Set Cur=%Cur:~0,-1%

takeown /f "%Cur%" /r /d y

icacls "%Cur%" /grant All:f /T /C
icacls "%Cur%" /grant Все:f /T /C

RO.cmd

Код (DOS):

@echo off
if "%1"=="" (
Echo Working...
Call "%~dpnx0" 0 1>nul 2>&1
Echo Ready...
Goto :eof
)

Setlocal Enableextensions

Set Cur=%~dp0
Set Cur=%Cur:~0,-1%

takeown /f "%Cur%" /r /d y

icacls "%Cur%" /deny All:(DE,WDAC,WO,AS,WD,AD,WEA,DC,WA) /T /C
icacls "%Cur%" /deny Все:(DE,WDAC,WO,WD,AS,AD,WEA,DC,WA) /T /C

icacls "%Cur%" /grant All:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
icacls "%Cur%" /grant Все:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C

icacls "%Cur%" /grant All:(WD) /C
icacls "%Cur%" /grant Все:(WD) /C

icacls "%~dpnx0" /grant:r Все:f /C
icacls "%~dpnx0" /grant:r All:f /C

В коде использован метод двойного запуска скрипта исключительно для упрощения
перенаправления потока вывода в NUL.
Метод "обворачивания" скобками приводил к синтаксическим ошибкам в силу
некоторых особенностей работы утилиты ICACLS.

 

Вложения:

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования