CMD/BAT - Автоматическая установка разрешений

Ответить
Аватара пользователя
worazan

CMD/BAT - Автоматическая установка разрешений

Сообщение worazan »

Всем добрый день. Помогите решить вопрос пожалуйста. есть папка users в ней множество папок в соответствии с именами пользователей и у всех пользователей домена на эти папки полный доступ. Нужно что бы батник службы каталогов при входе пользователя например user1 с папки user\user1 снял наследование, добавил пользователя User1 в безопасность, поставил ему полный доступ, а потом удалил из безопасности группу Пользователи домена. Таким образом получится что у каждого пользователя будет доступ только к своей папке в папке Users. Заранее спасибо!
Аватара пользователя
Anton04

Re: CMD/BAT - Автоматическая установка разрешений

Сообщение Anton04 »

worazan,



subinacl тебе в помощь Изображение Во простейший пример:





Код:

Код: Выделить всё

subinacl.exe /file=directoriesonly "%USERPROFILE%\user1" /grant="все"=f /noverbose /display
subinacl.exe /subdirec "%USERPROFILE%\user1\*.*" /grant="все"=f /noverbose /display

Если в имени пользователя или в пути есть русские буквы то всё должно быть в соответствующей кодировки Изображение
Аватара пользователя
Loran_rus

Re: CMD/BAT - Автоматическая установка разрешений

Сообщение Loran_rus »

"Полный доступ" нужен только для изменения прав доступа и давать его обычным пользователя которым вполне достаточно прав Чтения/записи, а тем более "Пользователям домена" очень вредно. Мне кажется вы взялись за проблему не с того конца так как у вас на корневой папке Users стоит наследование на суб контейнеры изначально с полным доступом. И решать эту задачу лучше не логин скриптом а все таки от имени администратора. (ИМХО)



Как я понял у каждого пользователя папка соответствует его имени и если объем данных не большой то можно и просто перегородить структуру каталогов заново.


Цитата Неизвестного админа:



Скрипт монтирует диск T:. У пользователя при этом проверяется наличие папки (соотвествующее имени пользователя) и если ее нет, то она создается по пути \\fileserver\users и на эту папку выставляются права только на этого пользователя и учетных записей Admin и Administrator. Смонтированному диску присваивается новая метка.



Код:

Код: Выделить всё

' ------ SCRIPT CONFIGURATION ------ 
Set WshShell = Wscript.CreateObject("Wscript.Shell") 
Set objNetwork = CreateObject("Wscript.Network") 
Set objFS = CreateObject("Scripting.FileSystemObject") 
Set objWSH = CreateObject("WScript.Shell") 
Set objShell = CreateObject("Shell.Application") 
objUserName = objNetwork.UserName 
strDrive = "T:" 
strNewDiskName = "Личная папка "&objUserName 
strPath = "\\fileserver\users\"&objUserName 
boolPersistent = True 
' ------ END CONFIGURATION --------- 
On Error Resume Next 
if (objFS.FolderExists(strPath)) = false then  
Call objFS.CreateFolder(strPath) 
strACLCommand = "cmd /c echo y| CACLS " 
strACLCommand = strACLCommand & strPath 
strACLCommand = strACLCommand & " /g DOMAIN\" & objUserName & ":F" 
return = objWSH.Run (strACLCommand , 0, True) 
Call WshShell.Run("cacls " & strPath & _ 
" /e /g DOMAIN\" & "Administrator" & ":f", HIDE_WINDOW, WAIT_ON_RETURN) 
Call WshShell.Run("cacls " & strPath & _ 
" /e /g DOMAIN\" & "admin" & ":f", HIDE_WINDOW, WAIT_ON_RETURN) 
end if 
objNetwork.MapNetworkDrive strDrive, strPath, boolPersistent 
objShell.NameSpace(strDrive).Self.Name = strNewDiskName





ну а если этот вариант не приемлем то вначале отстроите права так сказать у корневых контейнеров а потом уже через if (objFS.FolderExists(strPath)) = false/true и cacls /? согласно вашего шаблона для папки пользователя и подкаталогов.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»