LINUX.ORG.RU

Разрешение доступа к сети в WINE

 ,


0

1

Имею Debian 9 Stable 64 bit и Wine 5.0.2 из winehq репозитария.

Проблема в том, что внутри Wine недоступен прямой доступ к сети:

$ wine ping linux.org.ru
0009:err:winediag:IcmpCreateFile Failed to use ICMP (network ping), this requires special permissions.
Pinging linux.org.ru [178.248.233.6] with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

Ping statistics for 178.248.233.6
        Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

В интернетах пишут, что это потому что не разрешены «возможности» для бинарников wine: https://forum.winehq.org/viewtopic.php?t=31134

Пробую установить возможности доступа к сети. Под рутом даю команды:
setcap cap_net_raw+epi "$(readlink -f "/usr/bin/wine")"
setcap 'cap_net_bind_service=+ep' "$(readlink -f "/usr/bin/wine-preloader")"

Они молча отрабатываются. Но после установки «возможностей», wine перестает находить свои библиотеки:
$ wine
wine: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

Если сбросить «возможности»:
setcap -r "$(readlink -f "/usr/bin/wine")"
setcap -r "$(readlink -f "/usr/bin/wine-preloader")"

... то wine опять начинает нормально работать:
$ wine
Usage: wine PROGRAM [ARGUMENTS...]   Run the specified program
       wine --help                   Display this help and exit
       wine --version                Output version information and exit

Но работает, естественно, без доступа к сети.

Независимо от того, установлены «возможности» или нет, библиотека libwine.so.1 видна в ldconfig:
# ldconfig -p | grep libwine
        libwine.so.1 (libc6,x86-64) => /opt/wine-stable/lib64/libwine.so.1
        libwine.so (libc6,x86-64) => /opt/wine-stable/lib64/libwine.so


Вопрос: как заставить wine иметь полный доступ к сети?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

$(readlink -f "/usr/bin/wine")

Да потому что ты со скриптом «что то» мутишь. А надобно наверное с elf.

anonymous
()
Ответ на: комментарий от anonymous

Это линк на бинарник.

Бинарники WineHQ ставятся в /opt/wine-stable/bin, а в /usr/bin создаются линки на них:

$ pwd
/usr/bin
xi@surfinux:/usr/bin$ ls -la | grep wine
lrwxrwxrwx  1 root   root          37 авг 13 22:05 function_grep.pl -> /opt/wine-stable/bin/function_grep.pl
lrwxrwxrwx  1 root   root          26 авг 13 22:05 msidb -> /opt/wine-stable/bin/msidb
lrwxrwxrwx  1 root   root          28 авг 13 22:05 msiexec -> /opt/wine-stable/bin/msiexec
lrwxrwxrwx  1 root   root          28 авг 13 22:05 notepad -> /opt/wine-stable/bin/notepad
lrwxrwxrwx  1 root   root          28 авг 13 22:05 regedit -> /opt/wine-stable/bin/regedit
lrwxrwxrwx  1 root   root          29 авг 13 22:05 regsvr32 -> /opt/wine-stable/bin/regsvr32
lrwxrwxrwx  1 root   root          25 авг 13 22:05 widl -> /opt/wine-stable/bin/widl
lrwxrwxrwx  1 root   root          25 авг 13 22:05 wine -> /opt/wine-stable/bin/wine
lrwxrwxrwx  1 root   root          27 авг 13 22:05 wine64 -> /opt/wine-stable/bin/wine64
lrwxrwxrwx  1 root   root          37 авг 13 22:05 wine64-preloader -> /opt/wine-stable/bin/wine64-preloader
lrwxrwxrwx  1 root   root          29 авг 13 22:05 wineboot -> /opt/wine-stable/bin/wineboot
lrwxrwxrwx  1 root   root          30 авг 13 22:05 winebuild -> /opt/wine-stable/bin/winebuild
lrwxrwxrwx  1 root   root          28 авг 13 22:05 winecfg -> /opt/wine-stable/bin/winecfg
lrwxrwxrwx  1 root   root          32 авг 13 22:05 wineconsole -> /opt/wine-stable/bin/wineconsole
lrwxrwxrwx  1 root   root          28 авг 13 22:05 winecpp -> /opt/wine-stable/bin/winecpp
lrwxrwxrwx  1 root   root          28 авг 13 22:05 winedbg -> /opt/wine-stable/bin/winedbg
lrwxrwxrwx  1 root   root          29 авг 13 22:05 winedump -> /opt/wine-stable/bin/winedump
lrwxrwxrwx  1 root   root          29 авг 13 22:05 winefile -> /opt/wine-stable/bin/winefile
lrwxrwxrwx  1 root   root          28 авг 13 22:05 wineg++ -> /opt/wine-stable/bin/wineg++
lrwxrwxrwx  1 root   root          28 авг 13 22:05 winegcc -> /opt/wine-stable/bin/winegcc
lrwxrwxrwx  1 root   root          30 авг 13 22:05 winemaker -> /opt/wine-stable/bin/winemaker
lrwxrwxrwx  1 root   root          29 авг 13 22:05 winemine -> /opt/wine-stable/bin/winemine
lrwxrwxrwx  1 root   root          29 авг 13 22:05 winepath -> /opt/wine-stable/bin/winepath
lrwxrwxrwx  1 root   root          35 авг 13 22:05 wine-preloader -> /opt/wine-stable/bin/wine-preloader
lrwxrwxrwx  1 root   root          31 авг 13 22:05 wineserver -> /opt/wine-stable/bin/wineserver
lrwxrwxrwx  1 root   root          24 авг 13 22:05 wmc -> /opt/wine-stable/bin/wmc
lrwxrwxrwx  1 root   root          24 авг 13 22:05 wrc -> /opt/wine-stable/bin/wrc

Так устроены пакеты WineHQ.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от anonymous
$ file $(readlink -f "/usr/bin/wine")
/opt/wine-stable/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=b9fe7fa7ed087f7f98122405cc5a2a04aedb676c, stripped
Xintrea ★★★★★
() автор топика
Ответ на: комментарий от anonymous

https://wiki.archlinux.org/index.php/Wine_(Русский)#Сеть

Там написано ровно то же самое что я и делаю.

Пакета lib32-gnutls в Debian нет:

apt-get install lib32-gnutls
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Не удалось найти пакет lib32-gnutls

Вообще, изначальная ошибка не в TLS, а в невозможности прямой отправки пакетов по ICMP, потому что нет разрешений. А если ставишь разрешения, то wine перестает работать. В этом надо разобраться, а не обезъянничать с установкой ненужных в данном случае пакетов.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Там написано ровно то же самое что я и делаю.

wine-preloader и wine. есть различия?

конечно нет такого пакета. потому что в дебиане они по другому называются, ВНЕЗАПНО.

anonymous
()

Попробуй доустановить libnss-mdns и libnss-mdns:i386

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Может у тебя AppArmor какой-нибудь блочит неизвестные ему приложения?

AppArmor у меня номинально стоит но не настроен:

$ dpkg --list '*apparmor*'
||/ Имя                     Версия           Архитектура      Описание
+++-=======================-================-================-===================================================
ii  apparmor                2.11.0-3+deb9u2  amd64            user-space parser utility for AppArmor
un  apparmor-profiles       <нет>            <нет>            (описание недоступно)
un  apparmor-profiles-extra <нет>            <нет>            (описание недоступно)
un  apparmor-utils          <нет>            <нет>            (описание недоступно)
ii  libapparmor-perl        2.11.0-3+deb9u2  amd64            AppArmor library Perl bindings
ii  libapparmor1:amd64      2.11.0-3+deb9u2  amd64            changehat AppArmor library

Я его когда-то ставил, чтобы толи SNAP толи AppImage работал. Этот AppArmor запуститься не может, и вряд ли влияет:
# service apparmor status
● apparmor.service - AppArmor initialization
   Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
Condition: start condition failed at Tue 2020-11-10 11:45:10 MSK; 2h 14min ago
           └─ ConditionSecurity=apparmor was not met
     Docs: man:apparmor(7)
           http://wiki.apparmor.net/


Попробуй доустановить libnss-mdns и libnss-mdns:i386

Попробовал, толку нет. Ни с установленным setcap ни со сброшенным.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

когда решение найдешь, напиши обязательно. посмеяться охота.

anonymous
()

В интернетах пишут, что это потому что не разрешены «возможности» для бинарников wine

пишут то правильно, только читаешь ты где-то не там.

вот правильный линк - https://wiki.winehq.org/FAQ#Failed_to_use_ICMP_.28network_ping.29.2C_this_req...

и !, мазафака! зачем плодить ненужные и откровенно неполезные сущности?!

сказано «меняй права для одного файла» так и меняй для одного.

[ ~ ]$ sudo setcap cap_net_raw+epi /usr/bin/wine-preloader
[ ~ ]$ wine ping -n 5 linux.org.ru
preloader: Warning: failed to reserve range 00010000-00110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
Pinging linux.org.ru [178.248.233.6] with 32 bytes of data:
Reply from 178.248.233.6: bytes=32 time=23ms TTL=55
Reply from 178.248.233.6: bytes=32 time=34ms TTL=55
Reply from 178.248.233.6: bytes=32 time=17ms TTL=55
Reply from 178.248.233.6: bytes=32 time=33ms TTL=55
Reply from 178.248.233.6: bytes=32 time=34ms TTL=55

Ping statistics for 178.248.233.6
        Packets: Sent = 5, Received = 5, Lost = 0 (0% loss)
Approximate round trip times in milli-seconds:
        Minimum = 17ms, Maximum = 34ms, Average = 28ms
[ ~ ]$ sudo setcap -r /usr/bin/wine-preloader
[ ~ ]$ wine ping -n 5 linux.org.ru
preloader: Warning: failed to reserve range 00010000-00110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
0274:err:winediag:IcmpCreateFile Failed to use ICMP (network ping), this requires special permissions.
Pinging linux.org.ru [178.248.233.6] with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

Ping statistics for 178.248.233.6
        Packets: Sent = 5, Received = 0, Lost = 5 (100% loss)
[ ~ ]$

и да, возможно, что wine-preloader у тебя wine64-preloader, зависит от того, как был собран сам wine.

Gramozeka ★★
()
Ответ на: комментарий от Gramozeka

[ ~ ]$ sudo setcap cap_net_raw+epi /usr/bin/wine-preloader
[ ~ ]$ wine ping -n 5 linux.org.ru

Сделал setcap -r для обеих файлов (сбросил права).

Потом дал команду:

setcap 'cap_net_raw+epi' "$(readlink -f "/usr/bin/wine-preloader")"

Несколько раз появилось малюсенькое wine-окно «Внутренняя ошибка» без всяких подробностей. В консоли ничего не было.

Дал команду:
$ wine ping -n 5 linux.org.ru
/opt/wine-stable/bin/wine: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

возможно, что wine-preloader у тебя wine64-preloader

Нет, я выше уже показывал:

lrwxrwxrwx  1 root   root          35 авг 13 22:05 wine-preloader -> /opt/wine-stable/bin/wine-preloader

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

error while loading shared libraries: libwine.so.1

т.е. при изменении setcap у тебя сбрасывется ld.so.cache?

а сами пути в /opt/wine-stable глобально прописаны? как там у наркоманов из деба всё собрано не понятно, но по канону, в /etc усть специально огороженный загончик для подобных случаев:

/etc/ld.so.conf.d , это директория, в неё создаёшь конфиг со своими путями для библиотек типа

/opt/wine-stable/lib

и при вызове ldconfig, он подхватит этот путь. Если ldconfig не знает где искать либы, то как он их найдет собсно?

ты покажи ка выхлоп ldconfig до изменения прав и после:

sudo ldconfig -v | grep libwine.so.1
Gramozeka ★★
()
Ответ на: комментарий от anonymous

cd /opt/wine-stable/bin/
./wine ping -n 5 linux.org.ru

То же самое. Если не установлены права setcap:

err:winediag:IcmpCreateFile Failed to use ICMP (network ping), this requires special permissions.

Если установлены права setcap:
/opt/wine-stable/bin/wine: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

/opt/wine-stable/bin/wine: error while loading shared libraries: libwine.so.1

А ежели и с либой туже штуку прокрутить, что и с прелоадером?

anonymous
()
Ответ на: комментарий от Gramozeka

т.е. при изменении setcap у тебя сбрасывется ld.so.cache?

Нет, не сбрасывается. Библиотека libwine.so.1 в кеше есть. Но wine её почему-то не видит, когда setcap задан.

В обоих случаях выхлоп ldconfig одинаков:

ldconfig -v | grep libwine.so.1
ldconfig: Невозможно выполнить stat /lib/i686-linux-gnu: Нет такого файла или каталога
ldconfig: Невозможно выполнить stat /usr/lib/i686-linux-gnu: Нет такого файла или каталога
ldconfig: Путь «/lib/x86_64-linux-gnu» задан несколько раз
ldconfig: Путь «/usr/lib/x86_64-linux-gnu» задан несколько раз
ldconfig: /lib/i386-linux-gnu/ld-2.24.so is the dynamic linker, ignoring
ldconfig: /lib/x86_64-linux-gnu/ld-2.24.so is the dynamic linker, ignoring

        libwine.so.1 -> libwine.so.1.0


UPD:

/etc/ld.so.conf.d , это директория, в неё создаёшь конфиг со своими путями для библиотек типа /opt/wine-stable/lib и при вызове ldconfig, он подхватит этот путь.

У меня в файле /etc/ld.so.conf был прописан путь /opt/wine-stable/lib64. Поменял его на /opt/wine-stable/lib, и пинг заработал.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Поменял его на /opt/wine-stable/lib, и пинг заработал.

А у тебя и такой путь есть? Что за «сборная солянка»?

anonymous
()
Ответ на: комментарий от anonymous

А у тебя и такой путь есть? Что за «сборная солянка»?

Из репозитария winehq:

deb https://dl.winehq.org/wine-builds/debian/ stretch main

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

а теперь путь верни взад и сделай симлинк.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.