5.8 KiB
title, date, tags, status
| title | date | tags | status | |||||
|---|---|---|---|---|---|---|---|---|
| MMFB — Effector Saver Agent не стартует, .\Администратор залочен | 2026-05-28 |
|
resolved |
MMFB / LionART 1C — Effector Saver Agent не стартует, .\Администратор залочен
Контекст
../projects/mmfb/lionart-1c (WIN-70M2VEJIKEF, 10.253.1.240, Win Server 2022). Служба efsaveragent (Effector Saver Agent, C:\Program Files\Effector Saver\fagent.exe) в Stopped/Auto, не стартует.
Диагноз
Цепочка Event Log → SCM:
7038 Службе "efsaveragent" не удалось войти в систему с именем ".\Администратор"
и текущим паролем, поскольку произошла ошибка
7000 Сбой при запуске службы "Effector Saver Agent"
Это повторялось каждую минуту в течение последних минут. SCM хранит пароль учётки отдельно от LSA — пароль .\Администратор менялся (или Effector ставили со старой парой), а SCM-секрет не обновили.
Дополнительно: попытки SCM × мои WinRM-пробы залочили учётку.
# Через LogonUser API:
LogonUser SERVICE : False (err=1909) # ERROR_ACCOUNT_LOCKED_OUT
LogonUser INTERACTIVE : False (err=1909)
LogonUser NETWORK : False (err=1909)
# Через ADSI:
$u = [ADSI]"WinNT://./Администратор,user"
$u.IsAccountLocked → True
$u.BadPasswordAttempts → 10
Решение (порядок важен)
# 1. Заглушить SCM, чтобы он перестал каждую минуту ломиться с неверным паролем
sc.exe config efsaveragent start= disabled
sc.exe stop efsaveragent
# 2. Разблокировать учётку (Set-LocalUser не имеет lockout-поля → через ADSI)
$u = [ADSI]"WinNT://./Администратор,user"
$u.IsAccountLocked = 0
$u.SetInfo()
# 3. Проверить пароль через LogonUser(LOGON32_LOGON_SERVICE=5) — тот же путь, что использует SCM.
# Если False — не пиши пароль в SCM, иначе сразу опять залочишь.
# Если True — пароль валидный, прошиваем:
sc.exe config efsaveragent obj= ".\Администратор" password= "<актуальный_пароль>"
sc.exe config efsaveragent start= auto
sc.exe start efsaveragent
После старта:
efsaveragentв Running, PID 9104, fagent.exe, 28 MB- Новых 7038/7000 — нет
- Аккаунт остаётся разлоченным
Уроки
- При 7038 не паникуй с lockout: сначала остановить службу (или переключить на disabled), потом разблокировать.
- При WinRM-failed-login проверяй lockout первым делом (через
[ADSI]"WinNT://./<user>,user"полеIsAccountLocked) — не подбирай пароль вслепую, иначе добиваешь счётчик. Set-LocalUserне умеет снимать lockout — только ADSI илиnet user-с-новым-паролем.- Не доверяй
BadPasswordAttempts: 0после разблока — этот счётчик не сразу обнуляется; смотри самIsAccountLocked.
Рецидив 2026-06-28 (та же причина, подтверждена)
Снова: efsaveragent Stopped/Auto, .\Администратор залочен (BadPwd=10). Серия 7038/7000: 25.06 15:12, 25.06 15:24, 28.06 12:14. Heartbeat в fagent.log оборвался 25.06 ~15:05 → бэкапы не шли ~3 дня (25.06 → 28.06).
Восстановление тем же playbook (disable→stop→unlock→LogonUser(SERVICE)→pin→start). Ключевое: LogonUser(SERVICE) с паролем OL260380eg вернул True — то есть пароль учётки верный, расходился именно SCM-секрет. Значит первопричина закрыта: пароль .\Администратор меняли (вероятно при настройке RDP+2FA) без обновления службы → SCM-секрет устарел → lockout-шторм. Итог: служба Running, PID 10488.
Постоянный фикс (ещё не применён — нужен выбор Олега)
Каждая ротация пароля .\Администратор будет ронять службу и локать учётку. Варианты, чтобы развязать службу с ротируемым паролем:
- LocalSystem — без пароля, никогда не локается. Безопасно только если Effector пишет бэкап на локальный диск. Если назначение — UNC под админ-кредами, LocalSystem пойдёт на сеть как computer-account и потеряет доступ. Назначение хранилища лежит в
C:\ProgramData\Effector Saver\esdata.db(SQLite), вfagent.logего нет. - Выделенная учётка
.\Effector Saver(локальная, уже существует) с непротухающим паролем +SeServiceLogonRight. Перед сменой run-as — узнать назначение бэкапа (esdata.db / fmanager UI). До тех пор: при любой смене пароля админа сразуsc.exe config efsaveragent obj= ".\Администратор" password= "<новый>".