Автоматическая установка разрешений
Всем добрый день. Помогите решить вопрос пожалуйста. есть папка users в ней множество папок в соответствии с именами пользователей и у всех пользователей домена на эти папки полный доступ. Нужно что бы батник службы каталогов при входе пользователя например user1 с папки user\user1 снял наследование, добавил пользователя User1 в безопасность, поставил ему полный доступ, а потом удалил из безопасности группу Пользователи домена. Таким образом получится что у каждого пользователя будет доступ только к своей папке в папке Users. Заранее спасибо!
|
worazan,
subinacl тебе в помощь ;) Во простейший пример:
Код:
subinacl.exe /file=directoriesonly "%USERPROFILE%\user1" /grant="все"=f /noverbose /display
subinacl.exe /subdirec "%USERPROFILE%\user1\*.*" /grant="все"=f /noverbose /display
Если в имени пользователя или в пути есть русские буквы то всё должно быть в соответствующей кодировки ;)
|
"Полный доступ" нужен только для изменения прав доступа и давать его обычным пользователя которым вполне достаточно прав Чтения/записи, а тем более "Пользователям домена" очень вредно. Мне кажется вы взялись за проблему не с того конца так как у вас на корневой папке 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 /? согласно вашего шаблона для папки пользователя и подкаталогов.
|
Время: 11:49.
© OSzone.net 2001-