标题: [有副作用] 如何让wine软件发送、接受多播(组播)包、广播包、ping包,或者监听低于1024的端口
时间: 2020-12-17发布,2020-12-18修改
简单粗暴的方法是直接用root权限运行wine游戏助手,理论上可以解决所有权限问题。
在终端执行以下命令:
sudo /opt/apps/net.winegame.client/files/bin/winegame
会提示不建议以root身份运行,忽略即可,不会有什么问题的。
然后你需要重新安装游戏,因为root的游戏和wine存储在/root
文件夹,和当前用户(/home/用户名
)不在一起。
此外如果你要手动安装游戏,记得重新下载想要的wine版本。在root权限看不到普通用户下载的wine版本。
LD_LIBRARY_PATH
环境变量的功能(比如“Lutris运行时库”)失效,并导致低版本的wine(比如lutris-5.7.*
系列)无法启动!在Linux上执行以下操作需要特殊权限:
操作 | 所需权限 |
---|---|
监听低于1024的端口 | CAP_NET_BIND_SERVICE |
发送、接收广播包、组播包 | CAP_NET_ADMIN, CAP_NET_BROADCAST |
发送、接收ping包 | CAP_NET_RAW |
如果通过wine游戏助手安装的软件需要使用上述功能,必须使用setcap
命令为wine-preloader
或者wine64-preloader
命令授权,在终端执行以下命令即可:
sudo setcap 'CAP_NET_ADMIN,CAP_NET_BIND_SERVICE,CAP_NET_BROADCAST,CAP_NET_RAW+epi' ~/.local/share/net.winegame.client/runners/wine/想授权的wine版本/bin/wine64-preloader
如:
sudo setcap 'CAP_NET_ADMIN,CAP_NET_BIND_SERVICE,CAP_NET_BROADCAST,CAP_NET_RAW+epi' ~/.local/share/net.winegame.client/runners/wine/lutris-6.0-rc1-x86_64/bin/wine64-preloader
setcap
授权后传递给wine的环境变量LD_LIBRARY_PATH
会被删除,所以依赖LD_LIBRARY_PATH
环境变量的功能(比如“Lutris运行时库”)失效。不确定有哪些功能会受到影响。lutris-5.7.*
系列)授权,你将根本无法使用该wine版本启动任何程序,只会得到如下错误: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory
所以请不要给低版本wine授权。如果已授权,可以使用以下命令取消:
sudo setcap -r ~/.local/share/net.winegame.client/runners/wine/想取消授权的wine版本/bin/wine64-preloader
如:
sudo setcap -r ~/.local/share/net.winegame.client/runners/wine/lutris-6.0-rc1-x86_64/bin/wine64-preloader
如果你已给多个wine版本授权,可以用以下命令批量取消:
getcap -r ~/.local/share/net.winegame.client/runners/wine | awk -F' =' '{print $1}' | while read f; do sudo setcap -r "$f"; echo "$f"; getcap "$f"; done
参考资料:
『回复列表(0|显示机器人聊天)』