Вход без приглашения

07 декабря 2012

Внимание: Данная статья не является руководством к действию! Автор не несет ответственности за последствия использования данного материала в корыстных целях!!!

Предисловие

Редко, но случается ситуация, когда доступ к информационной базе с административными привилегиями потерян. В этом случае есть два выхода:

  1. подбор пароля к пользователю с административными правами.
  2. сброс учетных записей информационной базы и добавление нового администратора.

Частично первый способ был рассмотрен в статье "Чем легче пароль, тем проще". В данной статье пойдет речь о сбросе учетных записей в платформе 1С:Предприятие 8.x как в файловом, так и в клиент-серверном режиме работы. Также будут рассмотрены варианты восстановления учетных записей после сброса.

Файловый вариант работы

Файловый вариант работы основан на использовании собственного движка работы с базой данных. При этом информационная база хранится на компьютере в виде наборов файлов.Основная структура файловой информационной базы следующая:

  1. 1Cv8.1CD             (файл информационной базы)
  2. Папка "1Cv8FTxt" (файлы полнотекстового сервиса)
  3. Папка "1Cv8Log"  (файлы журнала регистрации)

Файловая база

Из перечисленного нас интересует непосредственно сама информационная база ("1Cv8.1CD"). Как известно, если в базе не создано ни одной учетной записи, то вход осуществляется без использования аутентификации. При запуске режима "Предприятие" или "Конфигуратор" программа не спросит логин и пароль. Будет просто произведен запуск приложения в выбранном режиме.

В этом и заключается основной способ получения доступа к информационной базе, когда неизвестен пароль ни к одной учетной записи с правами администратора. 

Для сброса пароля необходимо вручную откорректировать содержимое файла базы "1Cv8.1CD". Отмечу, что рассматриваемый далее способ работает с платформами 8.2 и 8.3. Для платформы 8.0 и 8.1 некоторые приведенные действия выполнять нет необходимости.

Для изменения файла нам понадобится любой HEX-редактор. Я использую бесплатную версию "HexEdit". Открываем файл базы данных, при этом сама база не должна быть запущена в режиме предприятия, иначе появится ошибка доступа к файлу. Открыв базу в HEX-редакторе мы увидим следующее (см. скриншот).

Хекс

Поиск

Далее производим поиск текстового значения в формате Unicode (в таком формате хранятся все тексты конфигурации и базы данных). При этом нужно снять галку "Match case", чтобы было удобней производить поиск.

Сначала делаем поиск по значению "users.usr", затем "v8users". В обоих случаях нужно будет производить минимум изменений.

Изменение значений для первого поиска по "users.usr" заключается в корректировке значения "00" на "01" перед битом "09".

Изменение HEX

Для поиска по значению "v8users" необходимо изменить первую букву названия таблицы на любую другую, например на "C".

Таблицы SQL

После проделанных действий вход в информационную базу в любом режиме работы платформы открыт. Не забывайте сохранить изменения в HEX-редакторе, чтобы они вступили в силу.

Клиент-серверный вариант работы

Клиент-серверный вариант работы заключается в использовании трехзвенной архитектуры

"Клиент <-> Сервер 1С <-> Сервер СУБД".

Поэтому сброс учетных записей информационной базы по аналогии с файловым вариантом работы в этом случае невозможно выполнить.

Вся информация в данном случае хранится на сервере СУБД. Платформа 1С:Предприятие 8.2 поддерживает работу с четырьмя СУБД, включая Microsoft SQL Server. Мы будем рассматривать пример сброса паролей при работе платформы с MS SQL Server 2008 Express Advanced Services. В этой версии присутствует расширенный набор утилит для работы с базами данных. Необходимая для нас утилита "Среда SQL Server Management Studio". Мы не будем рассматривать настройку,  установку и создание информационной базы, а сразу перейдем к вопросу сброса учетных записей.

Примечание: для работы в SQL Server Management Studio с необходимыми привилегиями необходимо знать учетные данных администратора сервера базы данных.

Открыв нужную базу данных в Managment Studio, перейдем в конец списка таблиц информационной базы. Нас интересуют таблицы "v8users" и "Params". Для сброса учетных записей для платформы 8.2 необходимо удалить таблицу "v8users" полностью, а в таблице "Params" удалить запись, где в колонке "FileName" содержится значение "users.usr".

Примечание: для платформы 8.0 и 8.1 достаточно удалить запись из таблицы "Params".

Далее запускаем нужный режим работы платформы, программа не запросит аутентификацию.

Пользователи безвозвратно утеряны?

Нет, пользователей можно восстановить. Можно также сохранить старых пользователей и добавить нового, например пользователя с административными правами. Последовательность действий тут зависит от того, какая это база - серверная или файловая. Если используется файловый режим работы, то сохранить первоначальный список пользователей не сложно. Достаточно придерживаться следующей последовательности действий:

  1. Сбрасываем учетные записи информационной базы путем изменения файла "1Сv8.1CD".
  2. Запускаем режим конфигуратора.
  3. Напишем программный код, который создаст нового пользователя с административными правами.
  4. Отменим все изменения в файле информационной базы "1Сv8.1CD".
  5. Зайдем в базу в режиме "Предприятие" под обычным пользователем.

Всю последовательность действий можно посмотреть на следующем видео.

В конечном итоге мы сохраним старый список пользователей и добавим нового пользователя информационной базы с необходимыми нам правами.

Для клиент-серверного режима работы общая последовательность действия по восстановлению доступа практически как для файловой варианта. Отличие лишь в том, что сброс/восстановление учетных записей осуществляется средствами СУБД. Наглядный пример восстановления доступа приведен на следующем видео.

Примеры выше показывают, что восстановить доступ к базе данных на платформе 1С:Предприятие 8.2 можно практически в любой ситуации. Единственный вопрос, который может возникнуть: "Как восстановить таким способом доступ, если мы не можем войти ни под одним пользователем?". Самый простой вариант в таком случае, вне зависимости от режима работы платформы, это сброс учетных данных пользователей и их последующее добавление вручную.

Какой итог?

В итоге мы теперь с уверенностью можем сказать, что практически в любой ситуации возможно восстановить доступ к информационной базе. Даже в тех случаях, когда доступ к базе утерян полностью, мы можем сбросить все учетные записи и создать их заново как нам необходимо. Такие проблемы происходят довольно редко, но в большинстве случаев их решение носит приоритетный характер, так как от этого может зависеть работа учетных и управленческих служб всей организации.


comments powered by Disqus