Чтобы запустить определенные программы Windows в WINE, вам нужно обойти это:
echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope
Согласно веб-сайтам поддержки, это связано с ошибкой в ядре Ubuntu, которая мешает совместному воспроизведению ptrace и WINE.
Используя вышеупомянутую команду, вы устанавливаете ptrace в 0, что, согласно исследованию, которое я провел (не спрашивайте меня, какие веб-сайты, мне кажется, их много), ptrace связано с взаимодействиями между программами. Параметр 0 является более допустимым, чем 1.
Я должен предположить, что была веская причина, по которой Ubuntu захотел ptrace = 1, поэтому я возвращаюсь к краткой форме вопроса.
Есть ли риски, связанные с установкой ptrace = 0. Более низкая безопасность? проблемы отладки? любые другие, о которых я не думал ???
P.S. для всех, кто читает это и интересуется, в чем причина ошибки, программы Windows вообще не откроются, в системном мониторе вы увидите много примеров попыток открытия программы, а затем все они в конечном итоге закроются, и если вы запустите программу для В терминале вы получите ошибку, сообщающую, что максимальное количество экземпляров программы было достигнуто.
ОБНОВЛЕНИЕ Вышеприведенные инструкции:
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;
не работают с 15.09.2008 в Ubuntu 18.04.1 и PlayOnLinux v.4.2. 12 с использованием последней стабильной версии Wine, v.3.0.1. Libcap2 уже установлена.
Сообщение об ошибке в Gnome Terminal выглядит следующим образом:
Failed to set capabilities on file `/usr/bin/wineserver' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file
Не уверен, что это значит ..... но думал, что я бы выложил его, чтобы кто-нибудь мог его интерпретировать и, возможно, получить новый , работоспособное решение.
Благодаря.
это связано с ошибкой в ядре Ubuntu, из-за которой ptrace и WINE не играют хорошо вместе. [ 1118] [тысяча сто сорок-один] blockquote>
Нет, защита ptrace - это преднамеренная мера безопасности ядра , впервые введенная в Ubuntu 10.10. Это не ошибка , и поэтому не будет «исправлено».
Проще говоря, значение
ptrace_scope
по умолчанию1
блокирует один процесс от проверки и изменения другого процесса , если второй процесс (дочерний) не был запущен первым процессом (родительским) ). [одна тысяча сто сорок три]Это может вызвать проблемы с некоторыми программами в Wine из-за способа, которым
wineserver
предоставляет «Службы Windows» для этих программ.Каковы риски при установке
ptrace_scope
на0
?
Это восстанавливает старое поведение, когда один процесс может «отслеживать» другой процесс, даже если существует нет родительско-дочерних отношений.
Теоретически, вредоносная программа может использовать это для нанесения вреда вам / вашему компьютеру; например он может подключаться к Firefox и регистрировать все ваши URL / пароли и т. д. На практике это крайне маловероятно, если вы не слепо устанавливаете двоичные файлы со случайных сайтов и т. д.
Что касается отладки, настройки
0
фактически необходимы дляgdb
,strace
и т. Д. Для подключения к не дочерним элементам, если вы не запускаете их с повышенными привилегиями (sudo). [ 1147] [тысяча сто тридцать-три]Каковы проблемы с обходным решением?
- Обходное решение несколько проблематично, потому что
ptrace_scope
является глобальным значением, и хотя оно установлено на0
, все процессы в вашем Система освобождена от ограничений, не связанных с детьми.- Если вы используете обходной путь, поместите его в простой сценарий bash, который включает его, запускает программу Windows и затем отключает (устанавливает в 1) при выходе.
- НЕ делать
ptrace_scope
доступным для записи в мире (666), как рекомендует пост на форуме - это огромный риск для безопасности, потому что теперь любой процесс может изменить его по своему желанию!Есть ли лучшее решение?
Лучшее решение, которое является более безопасным и не требует повторного изменения ptrace_scope i > должен предоставлять возможности Wineserver ptrace .
В терминале:
sudo apt-get install libcap2-bin sudo setcap cap_sys_ptrace=eip /usr/bin/wineserver sudo setcap cap_sys_ptrace=eip /usr/bin/wine-preloaderЭто освобождает двоичные файлы wineserver и preloader вина от не дочернее ограничение ptrace и позволяет им отслеживать любой процесс.
- Это нужно сделать только один раз, и это безопаснее, потому что эти двоичные файлы обычно поступают из надежного источника - из официальных репозиториев или официального Wine PPA, поэтому они не будут вредоносными.
Если вы используете Crossover
Установите libcap2:
sudo apt-get install libcap2-bin;Затем добавьте исключение для Crossover:
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver; sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;Наконец, добавьте его библиотеки в ld.so.conf (или вы получите «ошибку при загрузке общих библиотек: libwine.so.1: не удается открыть файл общего объекта: нет такого файла или каталога»):
[ 113]
В ubuntuforums.org я получил ответ со следующей ссылкой
https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection
здесь - вставка из ссылки (с моим акцентом)
По мере того, как популярность Linux растет, она становится растущей мишенью для вредоносных программ. Одна особенно тревожная слабость интерфейсов процессов Linux заключается в том, что один пользователь может проверить память и рабочее состояние любого из своих процессов. Например, если одно приложение (например, firefox) было взломано, злоумышленник сможет подключиться к другим запущенным процессам (например, gpg-agent), чтобы извлечь дополнительные учетные данные и продолжить расширять область своей атаки.
Это не теоретическая проблема. Перехват сеанса SSH и даже произвольное внедрение кода полностью возможны, если ptrace разрешен нормально .
В качестве решения некоторые приложения используют prctl (), чтобы специально запретить такое вложение ptrace (например, ssh-agent). Более общее решение состоит в том, чтобы разрешить ptrace только напрямую от родительского к дочернему процессу (т. Е. Прямой gdb и strace по-прежнему работают) или как пользователь root (т. Е. Gid-идентификатор BIN PID и strace -p PID по-прежнему работают как root).
Это поведение контролируется с помощью значения / proc / sys / kernel / yama / ptrace_scope sysctl. По умолчанию установлено значение «1» для блокировки не дочерних ptrace. Значение «0» восстанавливает прежнее более разрешающее поведение, которое может быть более подходящим для некоторых систем разработки и серверов, имеющих только учетные записи администратора. Использование sudo может также временно предоставить разрешения ptrace с помощью возможности CAP_SYS_PTRACE, хотя этот метод позволяет использовать ptrace для любого процесса.
Так что я думаю, что короткий ответ будет таким: он менее защищен, но вероятный капот персонального компьютера, подверженного таким атакам, будет довольно узким.
В Ubuntu 19.10 /usr/bin/wineserver
и /usr/bin/wine-preloader
на самом деле являются символическими ссылками, а не файлами. Вероятно, это относится и к 18.04. Я видел следующее решение в другом сообщении, которое я больше не могу найти. Вместо этого попробуйте следующее:
sudo setcap cap_sys_ptrace=eip "$(readlink -f "/usr/bin/wineserver")"
sudo setcap cap_sys_ptrace=eip "$(readlink -f "/usr/bin/wine-preloader")"
В зависимости от того, какой винный пакет вы используете, вы должны добавить что-то вроде:
echo /opt/wine-stable/lib/ | sudo тройник /etc/ld.so.conf.d/wine.conf
или:
echo /opt/wine-staging/lib/ | sudo тройник /etc/ld.so.conf.d/wine.conf
с последующим:
sudo /sbin/ldconfig