Bug 61147
| Summary: | Поломка sshd_config при наличии блока Match (ошибка "Directive 'Port' is not allowed within a Match block") | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Сычкин Сергей Витальевич <sychkinsv> | ||||||
| Component: | altcenter | Assignee: | Andrey Cherepanov <cas> | ||||||
| Status: | NEW --- | QA Contact: | qa-sisyphus | ||||||
| Severity: | major | ||||||||
| Priority: | P5 | CC: | cas | ||||||
| Version: | unstable | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Attachments: |
|
||||||||
Created attachment 22763 [details]
Ошибка в GUI
|

Description
Сычкин Сергей Витальевич 2026-10-20 20:27:08 MSKCreated attachment 22762 [details] лог journalctl Стенды: ALT K Workstation 11.4 x86-64 ALT Workstation 11.2 x86-64 ALT Educatino KDE 11.2 x86-64 ALT Education XFCE 11.2 x86-64 Версия: altcenter-1.0-alt0.46 openssh-9.6p1-alt7.x86_64 Шаги воспроизведения: 1. Открыть файл /etc/openssh/sshd_config. 2. Добавить в конец файла глобальную директиву AllowUsers global_user и блок Match User sshtest с директивой AllowUsers sshtest внутри него: # echo -e "\nAllowUsers global_user\n\nMatch User sshtest\n AllowUsers sshtest" >> /etc/openssh/sshd_config 3. Убедиться, что sshd завершается без ошибок: # sshd -t 4. Открыть Alt Center -> Настройка SSH (в режиме эксперта). 5. В поле «Пользователи, которым разрешён вход по SSH» добавить пользователя testuser2 (в GUI отобразится только global_user). 6. Нажать «Применить». Ожидаемый результат: Приложение корректно обновляет глобальную директиву AllowUsers, не затрагивая блок Match. Конфигурация остаётся валидной. Реальный результат: Приложение удаляет все строки с AllowUsers по всему файлу (с помощью sed без учёта контекста Match) и дописывает новую директиву в конец файла. Из-за этого все глобальные настройки (PermitRootLogin, Port, AllowUsers) оказываются внутри блока Match. Конфигурация становится невалидной, sshd -t завершается с ошибкой: sshd: /etc/openssh/sshd_config line 127: Directive 'Port' is not allowed within a Match block Дополнительная информация: В логах journalctl видна команда pkexec, подтверждающая использование sed без учёта контекста: sed -i -E '/^[[:space:]]*#?[[:space:]]*AllowUsers([[:space:]]+|$)/Id' "$conf"; echo 'AllowUsers global_user testuser2' >> "$conf";