Каждый системный администратор и специалист 1С рано или поздно сталкивается с ситуацией, когда после планового обновления платформы «1С:Предприятие» пользователи внезапно теряют возможность войти в информационную базу. Процесс запуска зависает на этапе загрузки, не доходя до окна авторизации (выбора пользователя). При этом перезапуск службы сервера 1С дает временный эффект: первый подключившийся пользователь успешно заходит в систему, но все последующие подключения намертво «виснут».
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы блокировки процессов 1С на уровне операционной системы, выясним, почему временное решение автора темы с переходом на учетную запись Local System крайне опасно для безопасности вашей сети, и пошагово восстановим правильную работоспособность системы без угрозы для ИТ-инфраструктуры.
Давайте проанализируем ситуацию. После перезапуска службы сервера 1С (компоненты ragent, rmngr и rphost) в базу без проблем заходит ровно один пользователь. Все последующие попытки подключения с других компьютеров приводят к бесконечному ожиданию. Если мы заглянем в консоль администрирования 1С или диспетчер задач на сервере, то увидим, что сессии зависших пользователей создаются, но сам рабочий процесс rphost перестает отвечать на запросы.
Такое поведение однозначно указывает на блокировку потоков (deadlock) или зависание дисковых операций ввода-вывода (I/O) на стороне сервера. Происходит это из-за конфликта прав доступа учетной записи, от имени которой запущена служба сервера 1С (по умолчанию это ограниченная учетная запись USR1CV8), к критически важным папкам и файлам операционной системы.
Когда мы устанавливаем новую версию платформы, инсталлятор создает новый каталог с исполняемыми файлами в папке C:\Program Files\1cv8\ (например, 8.3.10.2772). В процессе обновления права доступа (NTFS ACL) на новые папки, а также на общие системные каталоги могут наследоваться некорректно или полностью сбрасываться. В результате у процесса rphost пропадает возможность изменять или записывать файлы в определенные директории.
Рассмотрим детально ключевые зоны риска, из-за которых сервер уходит в бесконечное ожидание.
Это самая частая причина возникновения симптома «одного первого подключения». Механизм работы системы лицензирования 1С устроен следующим образом:
rphost считывает файл программной лицензии (с расширением .lic) из папки C:\ProgramData\1C\licenses.C:\ProgramData\1C\licenses.USR1CV8 отсутствуют права на Изменение (Modify) или Запись (Write) в этой папке, операционная система блокирует попытку записи. Вместо генерации быстрой ошибки процесс rphost переходит в состояние ожидания освобождения ресурса и зависает, утягивая за собой все последующие клиентские сеансы.Рабочие процессы сервера 1С активно используют общую системную временную папку операционной системы для хранения временных файлов сеансов, кэширования метаданных и передачи служебной информации между потоками.
По умолчанию служба 1С обращается к каталогу C:\Windows\Temp. В процессе установки обновлений или изменения политик безопасности Windows права ограниченного пользователя USR1CV8 на этот каталог могут быть урезаны. Первый рабочий процесс при старте службы может успеть инициализировать базовые структуры в памяти, но при попытке создания временных файлов для новых подключений ОС блокирует запись, вызывая бесконечный «висяк» клиентов.
При установке платформы «в автоматическом режиме» системные администраторы часто не обращают внимания на то, какого именно пользователя создает установщик. Иногда инсталлятор создает нового локального пользователя (например, USR1CV8.имя_сервера или USR1CV82) вместо использования существующего USR1CV8.
В итоге служба сервера 1С начинает запускаться под новой учетной записью, которая не имеет абсолютно никаких прав на старый каталог кластера серверов srvinfo (по умолчанию C:\Program Files\1cv8\srvinfo), где хранятся:
1cv8wsrv.lst;Без полного доступа к этой папке служба не сможет корректно инициализировать сеансы работы пользователей.
Автор темы на форуме нашел быстрое решение: перевел запуск службы «Агент сервера 1С:Предприятия» на системную учетную запись Local System (Локальная система). Действительно, это мгновенно решает проблему с зависанием, так как Local System обладает наивысшими привилегиями в операционной системе Windows и игнорирует любые ограничения прав на папки, файлы, сокеты и реестр.
Однако, как справедливо заметили в финальном сообщении темы, так оставлять систему категорически нельзя. Рассмотрим, чем это грозит:
USR1CV8, злоумышленник останется заперт в рамках этой учетной записи без доступа к системе. Если же служба запущена от имени Local System, атакующий мгновенно получает полный контроль над всем физическим или виртуальным сервером.Вернем службу сервера 1С к запуску под безопасной ограниченной учетной записью USR1CV8 и настроим для нее корректные права доступа. Разберем этот процесс по шагам.
Для начала вернем правильные настройки запуска службы:
Win + R, введите services.msc и нажмите Enter.USR1CV8 (или нажмите «Обзор» для его поиска).Нам необходимо убедиться, что у пользователя USR1CV8 есть права на чтение и выполнение файлов новой платформы:
C:\Program Files\.1cv8, нажмите на нее правой кнопкой мыши и выберите «Свойства».USR1CV8, нажмите «Добавить», введите имя пользователя и нажмите ОК.USR1CV8 в списке и установите для него следующие разрешения:
Теперь решим главную проблему с блокировкой лицензирования:
C:\ProgramData\1C\ (папка ProgramData по умолчанию является скрытой, для перехода можно ввести этот путь вручную в адресную строку проводника).licenses. Если ее нет, создайте ее вручную.licenses, перейдите на вкладку «Безопасность» и нажмите «Изменить».USR1CV8 и установите для него флажок «Полный доступ» (Full control) или как минимум «Изменение» (Modify), «Чтение и выполнение», «Список содержимого папки», «Чтение», «Запись».Для автоматизации этого процесса или при работе в режиме командной строки Windows мы можем использовать встроенную утилиту icacls. Рассмотрим пример команды, которую необходимо запустить в командной строке, открытой от имени Администратора:
icacls "C:\ProgramData\1C\licenses" /grant USR1CV8:(OI)(CI)M /T
Параметры (OI) и (CI) указывают операционной системе, что разрешения должны наследоваться всеми вложенными файлами и папками, а флаг M предоставляет права на изменение данных.
Для стабильной работы рабочих процессов rphost очистим устаревший кэш и выдадим полные права на системную папку временных файлов:
C:\Windows\.Temp, откройте ее свойства и перейдите на вкладку «Безопасность».USR1CV8 есть права на создание файлов и папок, а также на их изменение в этом каталоге. Если прав нет, добавьте соответствующее правило с типом доступа «Разрешить» для этого пользователя, применив его к «Для этой папки, ее подпапок и файлов».C:\Windows\Temp все старые файлы, которые операционная система позволит удалить (некоторые файлы могут быть заблокированы другими работающими службами — это нормально).Пример аналогичной команды для быстрой настройки прав через командную строку:
icacls "C:\Windows\Temp" /grant USR1CV8:(OI)(CI)M /T
Если папка данных вашего кластера серверов 1С находится по стандартному пути или вынесена на другой диск (например, быстрый SSD), обязательно проверьте права и на нее:
C:\Program Files\1cv8\srvinfo).USR1CV8 установлены права «Полный доступ». Это критически важно, так как в этой папке создаются файлы журналов регистрации, которые постоянно модифицируются при работе пользователей.Если после выполнения всех настроек прав доступа проблема сохраняется, проанализируем еще два редких, но возможных фактора влияния.
Начиная с некоторых релизов платформы 1С 8.3.10, сетевой контур платформы был оптимизирован под работу с современными сетевыми стандартами. Если в вашей локальной сети используется только протокол IPv4, но на сервере активен IPv6, могут возникать задержки при сопоставлении сетевых имен хостов DNS.
Когда служба работает под ограниченной записью USR1CV8, Windows Server может применять более жесткие политики к сетевым сокетам IPv6, блокируя handshake-запросы при попытке авторизации клиентов. Если вы не используете IPv6, рекомендуется отключить его в свойствах вашего сетевого адаптера на сервере или перенастроить приоритет разрешения имен в реестре Windows в пользу IPv4.
Если для защиты конфигурации вы используете аппаратные USB-ключи HASP, зависание при запуске у второго и последующих пользователей может быть связано с долгим широковещательным поиском свободной лицензии в сети. Под ограниченной записью этот опрос может блокироваться брандмауэром.
Для решения этой проблемы рекомендуется отредактировать файл настроек nethasp.ini на клиентских компьютерах (он находится в папке установленной платформы C:\Program Files\1cv8\8.x.x.xxx\bin\conf\). В секции [NH_TCPIP] необходимо жестко прописать IP-адрес вашего менеджера лицензий NetHASP License Manager:
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; Укажите IP-адрес вашего сервера лицензирования
NH_TCPIP_METHOD = DP
NH_USE_BROADCAST = Disabled
Это позволит платформе мгновенно подключаться к ключу защиты напрямую по указанному IP-адресу, минуя долгие сетевые таймауты и широковещательные запросы.
Мы успешно проанализировали проблему зависания платформы «1С:Предприятие» при запуске клиентов после обновления. Мы выяснили, что перевод службы сервера на учетную запись Local System — это опасный компромисс, подвергающий сервер угрозе взлома и заражения вирусами-шифровальщиками.
Правильным и безопасным решением является точечное восстановление прав доступа для штатной учетной записи USR1CV8 к каталогу установки платформы, временной папке C:\Windows\Temp и папке программного лицензирования C:\ProgramData\1C\licenses. После применения описанных настроек и запуска службы «Агент сервера 1С» все пользователи смогут беспрепятственно и быстро авторизоваться в системе.