Введение

Эта инструкция предназначена для системных администраторов и пользователей, столкнувшихся с проблемой, когда 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 файлов. Это можно сделать централизованно с помощью средств автоматизации или индивидуально на каждой машине.

  1. Определите .desktop-файл нужного браузера.
    Чаще всего используются следующие имена:

    • Google Chrome: google-chrome.desktop
    • Mozilla Firefox: firefox.desktop
    • Chromium: chromium-browser.desktop
    • Яндекс.Браузер: yandex-browser.desktop
  2. Выполните команду в терминале, подставив .desktop-файл вашего браузера. Например, для установки Google Chrome в качестве браузера по умолчанию команда будет выглядеть так:
    xdg-mime default google-chrome.desktop text/html
  3. Проверьте, что изменения применились, выполнив команду для проверки еще раз:
    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"

Как использовать этот плейбук:

  1. Сохраните код в файл fix_html_handler.yml.
  2. Отредактируйте переменную default_browser_desktop_file, указав нужный .desktop-файл браузера (например, firefox.desktop).
  3. Укажите целевые хосты в поле hosts.
  4. Запустите плейбук с помощью команды:
    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#

 

Была ли полезна статья?
Позвольте нам стать лучше
Дополнительные материалы