Новый участник
Сообщения: 25
Благодарности: 0
|
Профиль
|
Отправить PM
| Цитировать
Долго не работал над скриптом, был в командировке.
Сегодня посидел над ним, и понял, что долго допускал очень важную ошибку с правами доступа.
Код: 
icacls.exe . /inheritance:r /T /C /L /Q
icacls/exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q
обязательно надо поменять местами команды:
Код: 
icacls.exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q
icacls.exe . /inheritance:r /T /C /L /Q
иначе я сначала сам себе запрещаю доступ к папке (папкам и файлам), убирая наследие прав от корневой папки, а потом пытаюсь подставить свои.
Вторая ошибка, это рекурсивное подставление прав: /T - операция выполняется для всех соответствующих файлов и каталогов, расположенных в указанных в имени каталогах.
Этот ключ, как оказалось, мне совсем не нужен, убрав его я смог сгруппировать раздачу NTFS прав к папкам и файлам в отдельный блок скрипта. Возможно это встанет боком, но вроде пока нормально.
В итоге получается, что надо вот так:
Код: 
icacls.exe . /grant Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /T /C /L /Q
icacls.exe . /inheritance:r /C /L /Q
В некоторых строках, где явно нету символьных ссылок, и связей, я еще убрал ключ /L
В итоге у меня пока есть вот такая версия 3
Код: 
@echo off
:start
::командный файл будет запущен в каталоге, где лежит, даже от имени администратора
cd /d "%~dp0"
::создание начальных переменных
::SSID моего пользователя
set Sid1=мой SID
::имя моего пользователя, имя будующей папки
set Name1=имя моего пользователя
::переменная для работы непосредственно с папкой имя которой указано в переменной Name1
set FolderName1=%CD%\Users\%Name1%
::переменная для работы непосредственно с публичной папкой
set FolderPublic=%CD%\Users\Public
::создание папок
mkdir "%CD%\Users"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
mkdir "%CD%\%%~i"
)
mkdir "%CD%\Users\%Name1%"
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
mkdir "%FolderName1%\%%~i"
)
mkdir "%CD%\Users\Public"
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
mkdir "%FolderPublic%\%%~i"
)
::создание файлов desktop.ini для дополнительных папок в папке "%CD%"
::создание файла "%CD%\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
echo IconResource=%SystemRoot%\system32\imageres.dll,-112
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%CD%\Documents\desktop.ini"
::создание файла "%CD%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%CD%\Downloads\desktop.ini"
::создание файла "%CD%\Favorites\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796
echo IconResource=%SystemRoot%\system32\imageres.dll,-115
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=
)> "%CD%\Favorites\desktop.ini"
::создание файла "%CD%\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo IconResource=%SystemRoot%\system32\imageres.dll,-108
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%CD%\Music\desktop.ini"
::создание файла "%CD%\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo IconResource=%SystemRoot%\system32\imageres.dll,-113
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%CD%\Pictures\desktop.ini"
::создание файла "%CD%\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo IconResource=%SystemRoot%\system32\imageres.dll,-189
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%CD%\Videos\desktop.ini"
::создание файлов desktop.ini для пользовательской папки %Name1%
::создание файла "%FolderName1%\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
echo IconResource=%SystemRoot%\system32\imageres.dll,-112
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%FolderName1%\Documents\desktop.ini"
::создание файла "%FolderName1%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798
echo IconResource=%SystemRoot%\system32\imageres.dll,-184
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%FolderName1%\Downloads\desktop.ini"
::создание файла "%FolderName1%\Favorites\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796
echo IconResource=%SystemRoot%\system32\imageres.dll,-115
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=
)> "%FolderName1%\Favorites\desktop.ini"
::создание файла "%FolderName1%\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo IconResource=%SystemRoot%\system32\imageres.dll,-108
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%FolderName1%\Music\desktop.ini"
::создание файла "%FolderName1%\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo IconResource=%SystemRoot%\system32\imageres.dll,-113
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%FolderName1%\Pictures\desktop.ini"
::создание файла "%FolderName1%\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo IconResource=%SystemRoot%\system32\imageres.dll,-189
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%FolderName1%\Videos\desktop.ini"
::создание файла desktop.ini для папки Users
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21813
)> "%CD%\Users\desktop.ini"
::создание файла desktop.ini для папки Public
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816
)> "%CD%\Users\Public\desktop.ini"
::создание файлов desktop.ini для общих папок в папке "%CD\Users"
::создание файла "%FolderPublic%\Documents\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Documents
)> "%FolderPublic%\Documents\desktop.ini"
::создание файла "%FolderPublic%\Downloads\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Generic
)> "%FolderPublic%\Downloads\desktop.ini"
::создание файла "%FolderPublic%\Music\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21803
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Music
)> "%FolderPublic%\Music\desktop.ini"
::создание файла "%FolderPublic%\Pictures\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21802
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
)> "%FolderPublic%\Pictures\desktop.ini"
::создание файла "%FolderPublic%\Videos\desktop.ini"
( echo.
echo [.ShellClassInfo]
echo LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21804
echo InfoTip=@%SystemRoot%\system32\shell32.dll,-12690
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Videos
)> "%FolderPublic%\Videos\desktop.ini"
::работа с аттрибутами
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%CD%\Users\desktop.ini"
attrib.exe +r "%CD%\Users"
::установка атрибутов к файлу desktop.ini в папке Users
attrib.exe +s +h "%FolderPublic%\desktop.ini"
attrib.exe +r "%FolderPublic%"
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
attrib.exe +s +h "%CD%\%%~i\desktop.ini"
attrib.exe +r "%CD%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Favorites" "Music" "Pictures" "Videos") do (
attrib.exe +s +h "%FolderName1%\%%~i\desktop.ini"
attrib.exe +r "%FolderName1%\%%~i"
)
::установка атрибутов к файлам desktop.ini и к их дочерним папкам
for %%i in ("Documents" "Downloads" "Music" "Pictures" "Videos") do (
attrib.exe +s +h "%FolderPublic%\%%~i\desktop.ini"
attrib.exe +r "%FolderPublic%\%%~i"
)
::создание символьных ссылок (связей) из %Name1% в дополнительных папках
mklink /j "%CD%\Documents\Документы - %Name1%" "%FolderName1%\Documents"
mklink /j "%CD%\Downloads\Загрузки - %Name1%" "%FolderName1%\Downloads"
mklink /j "%CD%\Favorites\Избранное - %Name1%" "%FolderName1%\Favorites"
mklink /j "%CD%\Music\Музыка - %Name1%" "%FolderName1%\Music"
mklink /j "%CD%\Pictures\Изображения - %Name1%" "%FolderName1%\Pictures"
mklink /j "%CD%\Videos\Видео - %Name1%" "%FolderName1%\Videos"
::создание символьных ссылок (связей) из общей папки в дополнительных папках
mklink /j "%CD%\Documents\Общие документы" "%FolderPublic%\Documents"
mklink /j "%CD%\Downloads\Общие загруженные файлы" "%FolderPublic%\Downloads"
mklink /j "%CD%\Music\Общая музыка" "%FolderPublic%\Music"
mklink /j "%CD%\Pictures\Общие изображения" "%FolderPublic%\Pictures"
mklink /j "%CD%\Videos\Общие видео" "%FolderPublic%\Videos"
::работа с правами доступа NTFS
::установка прав доступа NTFS к символьным ссылкам (связям) из %Name1% в дополнительных папках
icacls.exe "%CD%\Documents\Документы - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Documents\Документы - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Downloads\Загрузки - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Downloads\Загрузки - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Favorites\Избранное - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Favorites\Избранное - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Music\Музыка - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Music\Музыка - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Pictures\Изображения - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Pictures\Изображения - %Name1%" /inheritance:r /C /L /Q
icacls.exe "%CD%\Videos\Видео - %Name1%" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) /C /L /Q
icacls.exe "%CD%\Videos\Видео - %Name1%" /inheritance:r /C /L /Q
::установка прав доступа NTFS к символьным ссылкам (связям) из общей папки в дополнительных папках
icacls.exe "%CD%\Documents\Общие документы" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Documents\Общие документы" /inheritance:r /C /L /Q
icacls.exe "%CD%\Downloads\Общие загруженные файлы" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) Все:RX /C /L /Q
icacls.exe "%CD%\Downloads\Общие загруженные файлы" /inheritance:r /C /L /Q
icacls.exe "%CD%\Music\Общая музыка" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Music\Общая музыка" /inheritance:r /C /L /Q
icacls.exe "%CD%\Pictures\Общие изображения" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Pictures\Общие изображения" /inheritance:r /C /L /Q
icacls.exe "%CD%\Videos\Общие видео" /grant:r *%Sid1%:(M,RX,D,WDAC,WO) Администраторы:(M,RX,D,WDAC,WO) Пользователи:RX Все:RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /L /Q
icacls.exe "%CD%\Videos\Общие видео" /inheritance:r /C /L /Q
::установка прав доступа NTFS для папки %Name1% из папки Users
icacls.exe "%FolderName1%" /grant:r *%Sid1%:(OI)(CI)(M,RX,D,WDAC,WO) /C /Q
icacls.exe "%FolderName1%" /inheritance:r /C /Q
::установка прав доступа NTFS для папки Public из папки Users
icacls.exe "%FolderPublic%" /grant:r *%Sid1%:(OI)(CI)(IO)(M,RX,D,WDAC,WO) Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX "Прошедшие проверку":(OI)(CI)(IO)(M,RX,D) /C /Q
icacls.exe "%FolderPublic%" /inheritance:r /C /Q
::установка прав доступа NTFS для папки "%CD%\Users"
icacls.exe "%CD%\Users" /grant:r Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /C /Q
icacls.exe "%CD%\Users" /inheritance:r /C /Q
::установка прав доступа NTFS на корневую папку (точка указывает на текущий каталог)
icacls.exe . /grant:r Администраторы:(OI)(CI)(M,RX,D,WDAC,WO) Пользователи:(OI)(CI)RX Все:(OI)(CI)RX /C /L /Q
icacls.exe . /inheritance:r /C /Q
:exit
pause
|