Содержание
Введение
Эта инструкция предназначена для системных администраторов и пользователей, столкнувшихся с проблемой, когда HTML-файлы (включая файлы справки различных программ, например, LibreOffice) по умолчанию открываются в приложении «Р7 Команда» вместо веб-браузера.
Описание проблемы
После установки или обновления приложения «Р7 Команда» система могла некорректно назначить его программой по умолчанию для открытия файлов формата text/html. В результате этого, при попытке открыть локальный HTML-документ, он запускается в интерфейсе «Р7 Команды».
Проблема была исправлена в версии 1.11.0 и выше для новых установок. Однако у пользователей, которые установили более раннюю версию, настройки системы могли не вернуться к исходным значениям автоматически после обновления.
Проверка текущих настроек
Чтобы проверить, какое приложение в вашей системе Linux назначено по умолчанию для открытия HTML-файлов, выполните в терминале следующую команду:
xdg-mime query default text/html
Если в результате выполнения команды вы видите ответ R7-Team.desktop, это подтверждает наличие проблемы на вашем компьютере. Корректным значением должно быть .desktop-файл вашего предпочитаемого браузера (например, google-chrome.desktop или firefox.desktop).
Решение
Для устранения проблемы необходимо вручную изменить приложение по умолчанию для text/html файлов. Это можно сделать централизованно с помощью средств автоматизации или индивидуально на каждой машине.
- Определите .desktop-файл нужного браузера.
Чаще всего используются следующие имена:- Google Chrome: google-chrome.desktop
- Mozilla Firefox: firefox.desktop
- Chromium: chromium-browser.desktop
- Яндекс.Браузер: yandex-browser.desktop
- Выполните команду в терминале, подставив .desktop-файл вашего браузера. Например, для установки Google Chrome в качестве браузера по умолчанию команда будет выглядеть так:
xdg-mime default google-chrome.desktop text/html
- Проверьте, что изменения применились, выполнив команду для проверки еще раз:
xdg-mime query default text/html
Теперь в выводе должно отображаться имя.desktop-файла, которое вы указали (например,google-chrome.desktop).
Для централизованного управления конфигурациями на множестве машин вы можете использовать следующий Ansible-плейбук. Он проверяет текущее приложение по умолчанию для HTML-файлов и, если это «Р7 Команда», меняет его на указанный вами браузер.
Создайте файл, например, fix_html_handler.yml:
Важное примечание
Данный Ansible-плейбук предоставляется в качестве примера и должен использоваться с осторожностью. Авторы инструкции не несут ответственности за любые потенциальные сбои или некорректные изменения в конфигурации вашей системы, возникшие в результате его использования.
Перед массовым применением плейбука настоятельно рекомендуется протестировать его работу на ограниченной группе тестовых автоматизированных рабочих мест (АРМ). Убедитесь, что он корректно отрабатывает в вашей инфраструктуре, не нарушает пользовательские настройки и соответствует внутренним политикам безопасности вашей организации.
---
- name: Исправление обработчика HTML по умолчанию на рабочих станциях для всех пользователей
hosts: mynout # Укажите здесь вашу группу хостов
become: yes
vars:
# Укажите .desktop-файл браузера, который должен быть назначен по умолчанию
default_browser_desktop_file: "google-chrome.desktop"
tasks:
- name: Получение списка всех пользователей системы
ansible.builtin.getent:
database: passwd
register: all_users
- name: Шаг 1. Проверка текущего обработчика для text/html для ВСЕХ пользователей
command: xdg-mime query default text/html
register: current_html_handlers
changed_when: false
failed_when: false
become: yes
become_user: "{{ item.key }}"
loop: "{{ all_users.ansible_facts.getent_passwd | dict2items }}"
loop_control:
label: "{{ item.key }}"
when:
# Проверяем, что домашняя директория (5-й элемент, индекс 4) существует и находится в /home/
- item.value | length > 4
- item.value[4] is defined
- item.value[4].startswith('/home/')
- name: Шаг 2. Установка браузера по умолчанию только там, где это необходимо
command: "xdg-mime default {{ default_browser_desktop_file }} text/html"
become: yes
become_user: "{{ item.item.key }}"
loop: "{{ current_html_handlers.results }}"
loop_control:
label: "{{ item.item.key }}"
when:
- not item.skipped | default(false)
- item.rc == 0
- item.stdout == "R7-Team.desktop"Как использовать этот плейбук:
- Сохраните код в файл fix_html_handler.yml.
- Отредактируйте переменную default_browser_desktop_file, указав нужный .desktop-файл браузера (например, firefox.desktop).
- Укажите целевые хосты в поле hosts.
- Запустите плейбук с помощью команды:
ansible-playbook -i inventory.ini fix_html_handler.yml
Плейбук выполнит задачу только на тех машинах, где R7-Team.desktop действительно установлен как обработчик по умолчанию, и не затронет системы, где пользователи уже настроили другой браузер вручную.
Результаты выполнения исправления.
root@debian12:/home/user/ansible/r7commands# ansible-playbook -i inventory.ini fix_html_handler.yml PLAY [Исправление обработчика HTML по умолчанию на рабочих станциях для всех пользователей] ********************************************************* TASK [Gathering Facts] ****************************************************************************************************************************** ok: [192.168.1.248] TASK [Получение списка всех пользователей системы] ************************************************************************************************** ok: [192.168.1.248] TASK [Шаг 1. Проверка текущего обработчика для text/html для ВСЕХ пользователей] ******************************************************************** skipping: [192.168.1.248] => (item=root) skipping: [192.168.1.248] => (item=daemon) . . skipping: [192.168.1.248] => (item=nm-openvpn) skipping: [192.168.1.248] => (item=gnome-remote-desktop) ok: [192.168.1.248] => (item=user) skipping: [192.168.1.248] => (item=nvidia-persistenced) skipping: [192.168.1.248] => (item=sshd) skipping: [192.168.1.248] => (item=xrdp) ok: [192.168.1.248] => (item=user1) TASK [Шаг 2. Установка браузера по умолчанию только там, где это необходимо] ************************************************************************ skipping: [192.168.1.248] => (item=root) skipping: [192.168.1.248] => (item=daemon) . . skipping: [192.168.1.248] => (item=gnome-remote-desktop) skipping: [192.168.1.248] => (item=user) skipping: [192.168.1.248] => (item=nvidia-persistenced) skipping: [192.168.1.248] => (item=sshd) skipping: [192.168.1.248] => (item=xrdp) changed: [192.168.1.248] => (item=user1) PLAY RECAP ****************************************************************************************************************************************** 192.168.1.248 :ok=4changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Результаты выполнения если уже было применено исправление.
root@debian12:/home/user/ansible/r7commands# ansible-playbook -i inventory.ini fix_html_handler.yml PLAY [Исправление обработчика HTML по умолчанию на рабочих станциях для всех пользователей] ********************************************************* TASK [Gathering Facts] ****************************************************************************************************************************** ok: [192.168.1.248] TASK [Получение списка всех пользователей системы] ************************************************************************************************** ok: [192.168.1.248] TASK [Шаг 1. Проверка текущего обработчика для text/html для ВСЕХ пользователей] ******************************************************************** skipping: [192.168.1.248] => (item=root) skipping: [192.168.1.248] => (item=daemon) . . skipping: [192.168.1.248] => (item=nm-openvpn) skipping: [192.168.1.248] => (item=gnome-remote-desktop) ok: [192.168.1.248] => (item=user) skipping: [192.168.1.248] => (item=nvidia-persistenced) skipping: [192.168.1.248] => (item=sshd) skipping: [192.168.1.248] => (item=xrdp) ok: [192.168.1.248] => (item=user1) TASK [Шаг 2. Установка браузера по умолчанию только там, где это необходимо] ************************************************************************ skipping: [192.168.1.248] => (item=root) skipping: [192.168.1.248] => (item=daemon) . . skipping: [192.168.1.248] => (item=nm-openvpn) skipping: [192.168.1.248] => (item=gnome-remote-desktop) skipping: [192.168.1.248] => (item=user) skipping: [192.168.1.248] => (item=nvidia-persistenced) skipping: [192.168.1.248] => (item=sshd) skipping: [192.168.1.248] => (item=xrdp) skipping: [192.168.1.248] => (item=user1) skipping: [192.168.1.248] PLAY RECAP ****************************************************************************************************************************************** 192.168.1.248 :ok=3 changed=0 unreachable=0 failed=0skipped=1 rescued=0 ignored=0
Работа вышеуказанного плейбука проверялась с версиями ОС и Ansible
Версия ОС хостов $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.3 LTS Release: 24.04 Codename: noble Версия ansible root@debian12:/home/user/ansible/r7commands# ansible --version [WARNING]: Ansible is being run in a world writable directory (/home/user/ansible/r7commands), ignoring it as an ansible.cfg source. For more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir ansible [core 2.14.18] config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True root@debian12:/home/user/ansible/r7commands#
