Доброе утро, коллеги.
Пришло время перевести свою организацию на linux, со всеми серверами и самописными сервисами. Опыт работы в linux нулевой, но приходится импортозамещать винду пока директор не импортозаместил этого админа
Итак задача: Есть корпоративный сервер Windows 2008 R2 с web-сервером Apache и самописным кодом на perl. Пользователи подключаются к серверу через web-интерфейс по https и работают в системе. В процессе работы нажимают на ссылки вида <a href="mck:*****">*****</a> при нажатии на которые их компы на windows 7/XP запускают локальный скрипт прописанный в реестре как обработчик протокола mck. Реализовано это путем добавления своего Custom URL протокола на каждый из компьютеров пользователей. В винде это делается очень просто, но попытка настроить аналогичную схему на altlinux привела к потере времени и отрицательному результату.
Прошу помочь советом, подробности см. ниже.
Операционная система: ALT 10.1
Версия KDE Plasma: 5.26.4
Версия KDE Frameworks: 5.100.0
Версия Qt: 5.15.7
Версия ядра: 5.15.89-un-def-alt1 (64-бита)
Графическая платформа: Wayland
Название продукта: VMware Virtual Platform
Версия системы: None
Результаты запуска команд под правами root и user(ru)
Проверка версии xdg-mime:
[root@ALT2 ~]# xdg-mime --version
xdg-mime 1.1.3
Добавление протокола mck под правами root:
[root@ALT2 ~]# xdg-mime default mck.desktop x-scheme-handler/mck
Добавление протокола mck под правами пользователя:
[ru@ALT2 ~]$ xdg-mime default mck.desktop x-scheme-handler/mck
Проверка регистрации протокола mck под правами root (всё ok):
[root@ALT2 ~]# xdg-mime query default x-scheme-handler/mck
mck.desktop
Проверка регистрации протокола mck под правами пользователя (всё ok):
[ru@ALT2 ~]$ xdg-mime query default x-scheme-handler/mck
mck.desktop
Проверяем вручную что изменилось у root:
Путь: ~/.config/
Файл: mimeapps.list
Права доступа: -rw-r--r-- (root root)
Содержимое файла:
[Default Applications]
x-scheme-handler/mck=mck.desktop
Проверяем вручную что изменилось у пользователя:
Путь: /home/ru/.config/
Файл: mimeapps.list
Права доступа: -rw-r--r-- (ru ru)
Содержимое файла:
[Default Applications]
x-scheme-handler/mck=mck.desktop
Проверяем файл mck.desktop (добавил избыточные права доступа к этому файлу для всех пользователей на период тестирования бага):
Путь: /usr/share/applications/
Файл: mck.desktop
Права доступа: -rwxrwxrwx (root root)
Содержимое файла:
[Desktop Entry]
Name=mck
Comment=mck
Exec=/home/ru/Desktop/mck.sh
Terminal=false
Type=Application
MimeType=x-scheme-handler/mck
Проверяем файл mck.sh который должен запускаться при нажатии пользователем в браузере на ссылку вида <a href="mck:*****">*****</a>. В данном случае файл просто создает папку на рабочем столе пользователя дабы показать что он сработал. Сам файл mck.sh находится на рабочем столе пользователя на всякий случай дабы исключить возможные ошибки с ограничением доступа к файлу под правами пользователя на этапе тестирования.
Путь: /home/ru/Desktop/
Файл: mck.sh
Права доступа: -rwxrwxrwx (root root)
Содержимое файла:
#!/bin/sh
mkdir /home/ru/Desktop/del1
chmod 777 /home/ru/Desktop/del1
Проверяем работу протокола с помощью xdg-open под правами root:
[root@ALT2 ~]# xdg-open mck:xxxxxx
Команда срабатывает без ошибок и сообщений, на рабочем столе пользователя ru появляется каталог del1, скрипт mck.sh
сработал без ошибок.
Проверяем работу протокола с помощью xdg-open под правами пользователя:
[ru@ALT2 ~]$ xdg-open mck:xxxxxx
VMware: No 3D enabled (0, Выполнено).
libEGL warning: egl: failed to create dri2 screen
[ru@ALT2 ~]$ VMware: No 3D enabled (0, Выполнено).
libEGL warning: egl: failed to create dri2 screen
kf.kio.core: Protocol Class of url QUrl("mck:xxxxxx") , isn't ':local', cancelling job.
kf.kio.core: couldn't create slave: "Неизвестный протокол «mck»."
kf.kio.slaves.file: readData() returned -1
Выскакивает окно с ошибкой:
Заголовок окна: "Ошибка KIOExec"
Текст сообщения: "Ошибка создания вспомогательного процесса ввода/вывода. Неизвестный протокол mck"
Проверяем работу протокола под правами пользователя в реальных условиях:
Создаем файл /home/ru/Desktop/test.html
Содержимое файла:
<html>
<body>
<a href="mck:test">test</a>
</body>
</html>
Открываем браузером Chromium-Gost, жмём на ссылку test, выскакивает сообщение "Открыть приложение xdg-open?", после нажатия в браузере на кнопку "Да" выскакивает системное окно с ошибкой:
Заголовок окна: "Ошибка KIOExec"
Текст сообщения: "Ошибка создания вспомогательного процесса ввода/вывода. Неизвестный протокол mck"
При этом файл mck.sh не запускается, но если его переименовать, то получаем:
[
ru@ALT2 ~]$ xdg-open mck:xxxxxx
VMware: No 3D enabled (0, Выполнено).
libEGL warning: egl: failed to create dri2 screen
kf.kio.gui: "Невозможно найти программу «/home/ru/Desktop/mck.sh»"
То есть под правами пользователя протокол всё-таки зарегистрирован, система хочет запустить файл mck.sh, проверяет его наличие и до стадии запуска файла срабатывает без ошибок.
Есть идеи в каком направлении копать?
Обрабатывать протокол под правами админа не вариант - это будет огромная дыра в безопасности т.к. в рабочем варианте скрипту будут передаваться управляющие команды по протоколу mck.