Официальный сайт геоинформационной системы (ГИС) ObjectLandОфициальный сайт геоинформационной системы (ГИС) ObjectLand
  
 
ПОИСК ПО САЙТУ:
yandex.ru
КАРТА САЙТА
 
главная / поддержка / форум
E-MAIL:ПАРОЛЬ: 
регистрация

Обсуждение

 Автоматическое разграничение прпавАвтоматическое разграничение прпав [ Marat ]
Понедельник, 23 марта 2009, 10:51

Проблема заключатся в том, что есть более 4 тыс ГБД и необходимо добавить в каждую из них одинаковых пользователей: администратора и пользователя с определенным набором прав.
Подскажите как это можно сделать?

 Автоматическое разграничение прпав [ ObjectLand Support ]
Понедельник, 23 марта 2009, 11:22

>есть более 4 тыс ГБД

Как же такое вышло?

>Подскажите как это можно сделать?

Только программно. Написать программу с использованием COM-интерфейсов ObjectLand, которой подается список ГБД, и она добавляет в каждую пользователей и права.

 Автоматическое разграничение прпав [ marat ]
Понедельник, 23 марта 2009, 15:52

Кадастр мы так ведем :)
так уж повелось что у нас каждый населенный пункт в отдельной системе координат....

А вот написать я немогу так как не програмист :(

Вот и спросил на форуме может есть какое готовое решение ?

 Автоматическое разграничение прпав [ ObjectLand Support ]
Понедельник, 23 марта 2009, 16:06

Сделаем, но не могу обещать, что прямо сейчас. Если согласны ждать, мы сделаем до конца этой недели. Тогда сразу укажите имена пользователей и необходимые права. Пароль пользователя введете сами.

 Автоматическое разграничение прпав [ marat ]
Вторник, 24 марта 2009, 07:42

Спасибо что откликнулись на мою просьбу.
Три пользователя:
1. Логин sysdba Пароль сами задаем Права Все на все

2. Логин user Пароль сами задаем Права Все на все !!!кроме (ГБД: Изменение пользователей, изменение имени и пароля)

3. Логин 1 Пароль 1 Права: ГБД: (Изменение данных); Карты: Общие права доступа к картам, (Доступ, Информация, Поиск); Темы: Общие права доступа к темам (Доступ, Информация, Поиск, Расширение фрагмента); Таблицы: MDKK System Table (Доступ, Поиск, Соединение, Вычисления, Сортировка), System Table: CadastralMapTranslator (Доступ, Изменение данных, Поиск, Соединение, Вычисления, Сортировка), System Table: LinkKN2Object (Доступ, Поиск, Соединение, Вычисления, Сортировка).

 Автоматическое разграничение прпав [ ObjectLand Support ]
Вторник, 24 марта 2009, 10:36

OK, сделаем

 Автоматическое разграничение прпав [ ObjectLand Support ]
Пятница, 27 марта 2009, 15:51

Создайте предварительно копии обрабатываемых ГБД.
Создайте текстовый файл с расширением .vbs и скопируйте в него скрипт приведенный ниже. Затем, в той же папке создайте текстовый файл gdblist.txt и в нем укажите пути к своим базам (полный путь и имя без расширения, пути и имя файла ГБД должный быть без кавычек). Измените пароли на желаемые. Запустите файл со скриптом(двойным кликом, например). Скрипт исходит из предположения, что все ГБД не имеют пользователей.

' Назначение скрипта:
' Добаляет 3-х пользователей для всех ГБД указанных в текстовом файле gdblist.txt
' 1. Логин - sysdba, Пароль - 1. Права - "Все на все".
' 2. Логин - user, Пароль - 1.
' Права - "Все на все", кроме - "Изменение пользователей", "изменение имени и пароля"
' 3. Логин - 1, Пароль - 1.
' Права - ГБД: "Изменение данных";
' Карты: Общие права доступа к картам (Доступ, Информация, Поиск);
' Темы: Общие права доступа к темам (Доступ, Информация, Поиск, Расширение фрагмента);
' Таблицы: MDKK System Table (Доступ, Поиск, Соединение, Вычисления, Сортировка),
' System Table: CadastralMapTranslator (Доступ, Изменение данных, Поиск, Соединение, Вычисления, Сортировка),
' System Table: LinkKN2Object (Доступ, Поиск, Соединение, Вычисления, Сортировка).
'
' Файл gdblist.txt содержит список ГБД.
' Каждая строка файла должна содержать информацию об одной ГБД (полный путь и имя без расширения).
' Пути и имя файла ГБД должный быть без кавычек.

gdbPermUserAccess = 1 ' Доступ к пользователям ГБД
gdbPermUserChangeSelf = 2 ' Изменение собственного имени и пароля
gdbPermGDBChangeStructure = 2 ' Изменение структуры ГБД
gdbPermGDBChangeLibrary = 3 ' Изменения в библиотеке стилей ГБД
gdbPermMapChangeData = 3 ' Изменение данных в картах
gdbPermThemeChangeData = 2 ' Изменение данных в картах через каталогизированные темы
gdbPermThemeChangeStructure = 3 ' Изменение структуры каталогизированных тем
gdbPermTableChangeData = 8 ' Изменение данных в таблицах
gdbPermTableChangeStructure = 4 ' Изменение структуры таблиц

Dim objGDBEngine, fso

' Создание объекта для работы с файловой системой.
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

' Открываем текстовый файл gdblist.txt на чтение
Set txtStream = fso.OpenTextFile("gdblist.txt", 1)

' Создание ядра ObjectLand.
Set objGDBEngine = Wscript.CreateObject("GDBEngine.Application")

' Считываем строки, содержащие пути к ГБД, из файла.
Do While Not txtStream.AtEndOfStream
path = txtStream.ReadLine
' Проверяем существует ли такая ГБД
If (fso.FileExists(path & ".gdb")) Then
AddUsersToGDB(path)
End If
Loop
txtStream.Close

' Закрытие ядра ObjectLand.
objGDBEngine.Close

' Освобождение ядра ObjectLand.
Set objGDBEngine = Nothing

MsgBox "Добавление пользователей завершено!"
' Выход из скрипта
WScript.Quit


' -----------------------------------------------------------------------------
Sub AddUsersToGDB(strGDBPath)
' Открытие текущей ГБД.
Set gdb = objGDBEngine.OpenGDB(strGDBPath, 0, "", "", "")

' Создание пользователя sysdba
Set objUser = gdb.CreateUser("sysdba","1")
' Добавляем пользователя в коллекцию
gdb.Users.Append(objUser)

' Создание пользователя user
Set objUser = gdb.CreateUser("user","1")
' Добавляем пользователя в коллекцию
gdb.Users.Append(objUser)
' Настройка прав
objUser.SetUserPermission gdbPermUserAccess, False
objUser.SetUserPermission gdbPermUserChangeSelf, False
objUser.Update()

' Создание пользователя 1
Set objUser = gdb.CreateUser("1","1")
' Добавляем пользователя в коллекцию
gdb.Users.Append(objUser)
' Настройка прав
' ГБД
objUser.SetGDBPermission gdbPermGDBChangeStructure, False
objUser.SetGDBPermission gdbPermGDBChangeLibrary, False
' Карты
objUser.SetMapPermission Nothing, gdbPermMapChangeData, False
' Темы
objUser.SetThemePermission Nothing, gdbPermThemeChangeData, False
objUser.SetThemePermission Nothing, gdbPermThemeChangeStructure, False
' Таблицы
Set objTable = gdb.Tables("MDKK System Table")
If Not (objTable Is Nothing) Then
objUser.SetTablePermission objTable, gdbPermTableChangeData, False
End If
Set objTable = gdb.Tables("System Table: CadastralMapTranslator")
If Not (objTable Is Nothing) Then
objUser.SetTablePermission objTable, gdbPermTableChangeStructure, False
End If
Set objTable = gdb.Tables("System Table: LinkKN2Object")
If Not (objTable Is Nothing) Then
objUser.SetTablePermission objTable, gdbPermTableChangeData, False
End If
objUser.Update()

' Закрываем текущую ГБД
gdb.Close()

End Sub

 Автоматическое разграничение прпав [ marat ]
Среда, 1 апреля 2009, 09:17

Спасибо будем пробовать.
А можно еще скрипт котрый удаляет всех пользователей?
Это для того чтобы можно было поменять пароли в целях безопасности, все равно их узнают рано или поздно.

 Автоматическое разграничение прпав [ ObjectLand Support ]
Среда, 1 апреля 2009, 11:46

Напишем, хотя мы не имеем возможности гарантировать такую детальную помощь в дальнейшем, т.к. поддержка программирования через СOM у нас услуга платная и недешевая. Ранее уже было недовольство со стороны наших платных пользователей по этому поводу. Но для людей с четырьмя тысячами ГБД, что только не сделаешь!

 Автоматическое разграничение прпав [ ObjectLand Support ]
Понедельник, 6 апреля 2009, 12:20

' Назначение скрипта:
' Изменяет пароли у пользователей "sysdba", "user" и "1" для всех ГБД
' указанных в текстовом файле gdblist.txt
' Файл gdblist.txt содержит список ГБД.
' Каждая строка файла должна содержать информацию об одной ГБД (полный путь и имя без расширения).
' Пути и имя файла ГБД должный быть без кавычек.

Dim objGDBEngine, fso

' Создание объекта для работы с файловой системой.
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

' Открываем текстовый файл gdblist.txt на чтение
Set txtStream = fso.OpenTextFile("gdblist.txt", 1)

' Создание ядра ObjectLand.
Set objGDBEngine = Wscript.CreateObject("GDBEngine.Application")

' Считываем строки, содержащие пути к ГБД, из файла.
Do While Not txtStream.AtEndOfStream
path = txtStream.ReadLine
' Проверяем существует ли такая ГБД
If (fso.FileExists(path & ".gdb")) Then
ChangeUsersPasswords(path)
End If
Loop
txtStream.Close

' Закрытие ядра ObjectLand.
objGDBEngine.Close

' Освобождение ядра ObjectLand.
Set objGDBEngine = Nothing

MsgBox "Изменение паролей завершено!"
' Выход из скрипта
WScript.Quit


' -----------------------------------------------------------------------------
Sub ChangeUsersPasswords(strGDBPath)
' Открытие текущей ГБД.
Set gdb = objGDBEngine.OpenGDB(strGDBPath, 0, "", "sysdba", "1") ' текущий пароль администратора

' Получаем пользователя sysdba
Set objUser = gdb.Users("sysdba")
If Not (objUser Is Nothing) Then
objUser.Password = "2" 'Новый пароль
objUser.Update()
End If

' Получаем пользователя user
Set objUser = gdb.Users("user")
If Not (objUser Is Nothing) Then
objUser.Password = "2" 'Новый пароль
objUser.Update()
End If

' Получаем пользователя 1
Set objUser = gdb.Users("1")
If Not (objUser Is Nothing) Then
objUser.Password = "2" 'Новый пароль
objUser.Update()
End If

' Закрываем ГБД
gdb.Close()

End Sub

Ответить

Знаком «*» отмечены обязательные для заполнения поля.
Ваше имя:  *
Адрес электронной почты:  
Тема:  *
Сообщение:
 *
Подтверждение:
(не требуется для зарегистрированных пользователей)
 *
 



Copyright © 1999–2020 ГИС ObjectLand
ГИС ObjectLand ® ООО «Радом-АйТи»
Информация о лицензировании
главная | о продукте | скачать | купить | поддержка | новости