Вопрос или проблема
После обновления до 24.04 ни клиент Outline, ни менеджер Outline больше не работают.
Я установил libfuset64
, как рекомендовано в других местах, но получаю ошибки разрешений SUID.
$ ./Outline-Client.AppImage
[584847:1001/220953.594798:FATAL:setuid_sandbox_host.cc(157)] Бинарный файл помощника SUID-сandbox был найден, но не настроен правильно. Вместо того чтобы запускаться без песочницы, я прерываю выполнение. Вам нужно убедиться, что /tmp/.mount_Outlintr1Gf9/chrome-sandbox принадлежит root и имеет режим 4755.
[1] 584847 trace trap (core dumped) ./Outline-Client.AppImage
Если я запускаю Outline с ./Outline-Client.AppImage --no-sandbox
, то всё работает прекрасно, но это считается гораздо менее безопасным.
Мне интересно, есть ли способ запустить Outline без использования флага --no-sandbox
.
Мы не должны полностью отключать ограничения пространства имен пользователей AppArmor на нашей системе, как предложено в ответе на этот вопрос, так как это создаст проблемы с безопасностью, пожалуйста, смотрите этот блог.
Лучший способ – создать профиль AppArmor, который позволит конкретному приложению использовать непривилегированные пространства имен пользователей.
Создайте файл /etc/apparmor.d/outline-client
со следующим содержимым:
# Этот профиль позволяет всё и существует только для того, чтобы дать приложению имя вместо метки "unconfined"
abi <abi/4.0>,
include <tunables/global>
profile outlineclient /path/to/Outline-Client.AppImage flags=(default_allow) {
userns,
# Специфические для сайта дополнения и переопределения. Смотрите local/README для получения подробностей.
include if exists <local/outline-client>
}
Замените /path/to/Outline-Client.AppImage
на путь к вашему appimage.
После сохранения файла выполните sudo systemctl reload apparmor.service
или перезагрузите, чтобы перезагрузить все профили AppArmor.
Готово, наслаждайтесь вашим appimage…
Примечание: Перемещение appimage в другое место позже или изменение его названия делает необходимым обновление вашего профиля AppArmor с правильным путем и перезагрузку профилей AppArmor.
Пакет AppArmor никогда не предоставит профили для appimages, потому что appimages хранятся в произвольных местах. Мы должны создать наш собственный профиль. Я протестировал этот метод с несколькими appimages, он работает довольно хорошо.
Ответ или решение
Почему AppImage больше не работает после обновления до версии 24.04 и как это исправить
После обновления вашей операционной системы до версии 24.04, вы, возможно, столкнулись с проблемами запуска AppImage, таких как Outline Client и Outline Manager. В данном руководстве мы разберем, как решить эту проблему, сохранив при этом безопасность системы.
Проблема SUID и Sandbox
При запуске Outline Client через терминал вы получили ошибку:
FATAL:setuid_sandbox_host.cc(157) The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_Outlintr1Gf9/chrome-sandbox is owned by root and has mode 4755.
Это сообщение указывает на то, что бинарный файл chrome-sandbox
должен быть правильно настроен. Конкретно, он должен принадлежать пользователю root и иметь разрешения 4755 (-rwsr-xr-x
).
Установка необходимых библиотек
Вы уже установили библиотеку libfuse64
, что является хорошим шагом, однако необходимо проверить настройки SUID. Чтобы это сделать, выполните следующие команды в терминале:
sudo chown root:root /path/to/chrome-sandbox
sudo chmod 4755 /path/to/chrome-sandbox
Замените /path/to/chrome-sandbox
на полный путь к chrome-sandbox
внутри каталога, созданного AppImage, который находится во временной папке /tmp
. Это даст бинарному файлу необходимые разрешения.
Настройка AppArmor
Еще одной причиной, по которой AppImage может не работать после обновления, являются ограничения AppArmor. Чтобы обойти это, вы можете создать профиль AppArmor для вашего приложения, что позволит ему использовать непривилегированные пространства имен, не отключая FiAppArmor полностью.
Шаги по созданию профиля AppArmor:
-
Создайте файл профиля:
Создайте файл с именем
/etc/apparmor.d/outline-client
и добавьте в него следующее содержимое:# Этот профиль позволяет приложению работать с необходимыми правами доступа. abi <abi/4.0>, include <tunables/global> profile outlineclient /path/to/Outline-Client.AppImage flags=(default_allow) { userns, # Локальные добавления и переопределения. См. local/README для деталей. include if exists <local/outline-client> }
Замените
/path/to/Outline-Client.AppImage
на актуальный путь к вашему AppImage. -
Перезагрузка профиля AppArmor:
После сохранения файла выполните команду для перезагрузки профилей AppArmor:
sudo systemctl reload apparmor.service
Либо перезагрузите компьютер.
Заключение
После выполнения вышеописанных шагов, попробуйте снова запустить Outline Client. В идеале, приложение должно работать без флага --no-sandbox
, сохраняя при этом уровень безопасности вашей системы.
Обратите внимание, что если вы переместите AppImage в другое место или измените его имя, вам нужно будет обновить путь в вашем профиле AppArmor и перезагрузить сервис.
Сохраняя эти рекомендации, вы сможете безопасно использовать Outline Client и другие приложения, работающие в формате AppImage, без необходимости рисковать безопасностью вашего компьютера.