Учётные записи 1С:Предприятия 8.3: таблица v8users, файл базы и справочник «Пользователи»
Содержание
1С 8.3 хранит список пользователей и их пароли внутри самой информационной базы — в служебной таблице v8users. В файловом варианте эта таблица спрятана в файле 1Cv8.1CD, в клиент-серверном — лежит в базе данных на SQL-сервере (MS SQL, PostgreSQL). Пароли там записаны не открытым текстом, а в виде хеша.
Отдельного файла «users.txt» на диске нет. Поэтому скопировать список пользователей, не трогая базу, нельзя, а перенос базы через .dt уносит с собой и всех пользователей.
Где хранятся пользователи файловой базы
В файловом режиме вся база — один файл 1Cv8.1CD. В нём и конфигурация, и данные, и служебные таблицы. Пользователи — одна из таких служебных таблиц.
Что это значит на практике:
- 📁 скопировали
1Cv8.1CDв другую папку — у копии те же пользователи и те же пароли; - 🔒 открыть таблицу пользователей обычными средствами (Блокнотом, Excel) не выйдет — формат файла внутренний;
- 🧰 посмотреть содержимое можно только сторонними утилитами для чтения формата 1CD, и это уже не штатный путь;
- ♻️ удалить пользователя «на диске» отдельно от базы невозможно — только через Конфигуратор, режим 1С:Предприятие или код.
Рядом с файлом базы могут лежать служебные файлы: 1Cv8.1CL (блокировки), папка 1Cv8Log (журнал регистрации). Пользователей в них нет. Журнал регистрации хранит только историю действий с именами пользователей, но не учётные записи.
Если нужно понять, где на диске находится файловая база, откройте окно запуска 1С, выделите базу и нажмите «Изменить». В поле каталога указан путь к папке с 1Cv8.1CD.
Где лежат учётные записи в клиент-серверном варианте
В клиент-серверной базе пользователи хранятся в таблице v8users той базы данных, которая создана для информационной базы на SQL-сервере. В PostgreSQL имя таблицы в нижнем регистре — v8users, в MS SQL — v8users в схеме dbo.
Основные поля таблицы:
| Поле | Что в нём |
|---|---|
ID | уникальный идентификатор пользователя (GUID) |
Name | имя для входа, которое видно в окне авторизации |
Descr | полное имя |
OSName | пользователь Windows для аутентификации ОС |
Data | двоичные данные: хеш пароля, роли, настройки входа |
Посмотреть имена можно обычным запросом на чтение. Например, в MS SQL Server Management Studio:
SELECT Name, Descr, OSName
FROM dbo.v8users
ORDER BY Name;
Пароль и роли из такого запроса не получить: они упакованы в поле Data во внутреннем формате.
Читать таблицу запросом безопасно. Изменять её через SQL — нет. Любая запись в v8users в обход платформы может сделать базу недоступной для всех пользователей. Перед любыми работами с таблицами 1С на уровне СУБД сделайте резервную копию базы.
Существует известный администраторам приём «сброса» пользователей через переименование v8users и удаление записи users.usr из таблицы Params. Это неподдерживаемый способ: применяйте его только к своей базе, только на копии и только когда штатно войти невозможно.
Не путайте с данными кластера
На сервере 1С есть ещё один список — администраторы кластера и центрального сервера. Он хранится не в информационной базе, а в реестре кластера, в каталоге службы (srvinfo\reg_1541, файл 1CV8Clst.lst). Это другие учётные записи: они дают доступ к консоли кластера, но не к данным базы.
Точно так же отдельно живёт пользователь СУБД (логин SQL-сервера, под которым кластер подключается к базе). Его пароль задаётся в свойствах информационной базы в консоли кластера и к списку пользователей 1С не относится.
Пользователь ИБ и элемент справочника «Пользователи»: в чём разница
Главная путаница возникает, когда в одной базе видят два списка пользователей. Они действительно разные.
Пользователь информационной базы — объект платформы. Он хранится в v8users, его видно в Конфигураторе: Администрирование → Пользователи. У него есть имя, пароль, роли, способы аутентификации. Без него войти в базу нельзя.
Элемент справочника «Пользователи» — обычные данные прикладной конфигурации (БП 3.0, ЗУП 3.1, УТ 11 и других на Библиотеке стандартных подсистем). Он лежит в таблице справочника, как контрагент или номенклатура. Его используют в документах как «Ответственный», «Автор», в настройках прав по группам доступа.
Связь между ними — реквизит справочника ИдентификаторПользователяИБ. В нём хранится тот самый ID из v8users.
| Признак | Пользователь ИБ | Справочник «Пользователи» |
|---|---|---|
| Где хранится | служебная таблица v8users | таблица справочника конфигурации |
| Где редактируется | Конфигуратор или режим 1С:Предприятие | режим 1С:Предприятие |
| Пароль и роли | да | нет, только ссылка на пользователя ИБ |
| Нужен для входа | да | нет |
| Есть в любой конфигурации | да | только в конфигурациях с этим справочником |
В типовых конфигурациях пользователей заводят в режиме 1С:Предприятие: Администрирование → Настройки пользователей и прав → Пользователи (БП 3.0, ЗУП 3.1, УТ 11). При записи карточки программа сама создаёт или меняет пользователя ИБ и проставляет связь.
Если завести пользователя только в Конфигураторе, в справочнике его не будет, и в типовой конфигурации он получит ошибки прав при входе или работе. Обратная ситуация: элемент справочника есть, а пользователя ИБ нет — тогда человек просто не увидит себя в окне входа.
Администрирование → Настройки пользователей и прав → Пользователи. Программа сама синхронизирует справочник и пользователя ИБ, а права выдаёт через группы доступа.Администрирование → Пользователи в Конфигураторе. Там видны все пользователи ИБ, можно сменить пароль или способ входа. После входа в режим 1С:Предприятие проверьте карточку в справочнике.v8users. В файловой — выгрузите список кодом через ПользователиИнформационнойБазы.ПолучитьПользователей().Какие файлы и пути на компьютере связаны с пользователями
Учётных записей вне базы нет, но вокруг них есть несколько мест на диске, которые часто путают со «списком пользователей».
- 📄
%APPDATA%\1C\1CEStart\ibases.v8i— список баз в окне запуска. Там пути и строки подключения, пользователей и паролей нет. - 🗂
%APPDATA%\1C\1cv8\и%LOCALAPPDATA%\1C\1cv8\— локальный кеш и настройки клиента по каждой базе. Сюда же клиент запоминает последнее введённое имя пользователя, чтобы подставить его в окно входа. - 🖥 каталог службы сервера 1С (
srvinfo) — реестр кластера и администраторы кластера, но не пользователи баз. - 💾 файл
.dt— выгрузка базы. Внутри есть и пользователи с паролями, поэтому хранить.dtнужно так же бережно, как саму базу.
Строка подключения в ярлыке или ibases.v8i может содержать параметры /N и /P (имя и пароль). Это открытый текст. Если кто-то прописал так пароль администратора, удалите его из ярлыка и смените пароль.
Пользовательские настройки форм и отчётов (хранилища настроек) в файловом и клиент-серверном режимах хранятся в базе, в служебных таблицах. Удаление кеша в %APPDATA% не стирает ни пользователей, ни их сохранённые варианты отчётов.
Как защищены пароли и что делать для безопасности
Пароль пользователя в базе не хранится в исходном виде. Платформа сохраняет хеш и при входе сравнивает хеш введённого пароля с сохранённым. Посмотреть «какой был пароль» штатно нельзя ни в Конфигураторе, ни в режиме 1С:Предприятие — только задать новый.
Но хеш — не броня. Тот, кто получил копию 1Cv8.1CD или доступ к SQL-базе, может попытаться подобрать простые пароли перебором. Поэтому защищать надо в первую очередь доступ к файлам.
Что делает защиту реальной:
- Закройте папку файловой базы правами NTFS: доступ на запись только тем, кто работает в базе, без «Все» и гостевых групп.
- На SQL-сервере выдайте логину кластера права только на свои базы. Не давайте пользователям 1С прямого доступа к SQL.
- Включите требования к паролям: в Конфигураторе
Администрирование → Параметры информационной базызадаются минимальная длина и проверка сложности. В типовых конфигурациях похожие настройки есть в разделе настроек входа рядом со списком пользователей. - Переведите сотрудников на аутентификацию ОС, где это возможно. Тогда пароль 1С не нужен вовсе, вход идёт по доменной учётной записи Windows.
- Шифруйте и храните под замком выгрузки
.dtи резервные копии.
Если в базе нет ни одного пользователя, платформа пускает в неё без авторизации и с полными правами. Удалив последнего пользователя в Конфигураторе, вы открываете базу всем, у кого есть к ней доступ по сети.
Как получить и изменить список пользователей из кода
Для работы с пользователями ИБ в языке 1С есть менеджер ПользователиИнформационнойБазы. Код выполняется на сервере и требует административных прав (или привилегированного режима).
Выгрузить список с основными свойствами:
&НаСервере
Процедура ВывестиПользователейНаСервере()
Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ПользовательИБ Из Пользователи Цикл
Сообщить(СтрШаблон("%1 | %2 | пароль задан: %3 | ОС: %4",
ПользовательИБ.Имя,
ПользовательИБ.ПолноеИмя,
?(ПользовательИБ.ПарольУстановлен, "да", "нет"),
ПользовательИБ.ПользовательОС));
КонецЦикла;
КонецПроцедуры
Найти пользователя и сменить ему пароль:
&НаСервере
Процедура СменитьПарольНаСервере(ИмяПользователя, НовыйПароль)
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Если ПользовательИБ = Неопределено Тогда
ВызватьИсключение СтрШаблон("Пользователь %1 не найден", ИмяПользователя);
КонецЕсли;
ПользовательИБ.Пароль = НовыйПароль;
ПользовательИБ.Записать();
КонецПроцедуры
Полезные свойства объекта ПользовательИнформационнойБазы:
Имя,ПолноеИмя— имя для входа и представление;ПарольУстановлен— задан ли пароль (сам пароль прочитать нельзя);АутентификацияСтандартная,АутентификацияОС,ПользовательОС— способы входа;Роли— коллекция ролей, можно проверитьРоли.Содержит(Метаданные.Роли.ПолныеПрава);УникальныйИдентификатор— тот самыйID, который записывается в справочник вИдентификаторПользователяИБ.
Текущего пользователя получают через ПользователиИнформационнойБазы.ТекущийПользователь().
В типовой конфигурации меняйте пользователей кодом через справочник «Пользователи» и механизмы БСП, а не напрямую через менеджер. Иначе справочник и список ИБ разойдутся: пользователь исчезнет из списка или потеряет права.
Перенос пользователей в другую базу
Штатного «экспорта только пользователей» в Конфигураторе нет. Варианты:
| Способ | Когда подходит | Риски |
|---|---|---|
Выгрузка и загрузка .dt | новая база — полная копия старой | данные целевой базы заменяются полностью |
Код через ПользователиИнформационнойБазы | разные базы, нужен только состав пользователей | пароли не переносятся, их придётся задать заново |
| Заведение вручную | до 10–15 пользователей | ошибки в ролях, долго |
Пароль из одной базы в другую кодом не скопировать: свойство Пароль только для записи. Для переноса хеша есть свойство СохраняемоеЗначениеПароля, но пользоваться им стоит только между базами одной организации и с пониманием, что это перенос секрета.
Частые вопросы
Можно ли увидеть пароль пользователя 1С?
Почему в Конфигураторе один список пользователей, а в программе другой?
Сохранятся ли пользователи, если обновить конфигурацию?
Переносятся ли пользователи при копировании базы?
1Cv8.1CD, выгрузка .dt и резервная копия SQL-базы содержат всех пользователей с паролями.