有没有办法限制 Wine 的葡萄酒前缀这样它就无法读取外面的文件了?
如果可能的话,哪种方法可以完全保护我的系统免受可能通过 wine 运行的恶意软件的侵害?
我只是想避免我的主目录被随机的 Windows .exe 擦除。
答案1
读了你的问题,我同意你的担忧,我认为这是更容易更安全,也是默认行为当您在虚拟机中运行 Windows 应用程序时(例如 virtualbox [0] 例如),可以与您的系统(和网络)完全隔离,或使用一组有限的共享文件夹隔离。
另一方面始终可以以不同的用户身份运行 wine,假设 MrWine 和你在一个不同的组中,那么为了给该用户访问你本地的 wine 路径的权限,关闭你 MrWine 组的目录和文件(简单地说其他的Unix 世界 [1] 默认设置)。您可以关闭你自己但您仍将有一部分系统可供 wine 访问。恶意软件很少能被预测或有效利用,但如果您想更加确定,您需要再次在单独的封闭环境中运行,例如虚拟机。
我在互联网上搜索,发现了一个有趣的链接[2] 与此一致,并提供了分步过程,不同之处在于它将使用 MrWine 用户的 wine 目录。以下步骤中有一些未经测试的修改,因此您也可以直接参考旧的原始帖子。
- 安装 wine
为 MrWine 创建并设置一个账户(命令应该有所不同)
sudo adduser --disabled-login --shell /sbin/nologin MrWine sudo usermod --append --groups audio wine
允许你自己的用户帐户在 Mrwine 帐户下启动命令
sudo
sudo env VISUAL=/usr/bin/gedit visudo # maybe sudo visudo is enough FedComp ALL=(MrWine) NOPASSWD: ALL # Use your linux names here
阻止任何其他用户帐户使用 Wine,这样您就无法在没有 sudo 的情况下使用您自己的用户运行 wine 以防出错
sudo chown -R MrWine:MrWine ~/.wine sudo chmod -R o-rwx ~/.wine # The following lines can be dangerous if there are files # called wine* in /usr/bin directory that are not of the wine program sudo chown root:wine /usr/bin/wine* sudo chmod o-x /usr/bin/wine*
您可能需要将 umask 从 022 更改为 027
umask 027
创建 Wine 启动器,在其中为 MrWine 提供图形访问 X 服务器的权限(使用
xhost +SI:FedComp:MrWine
)。最好使用类似于以下脚本的脚本(我们称之为RunWine.sh
,chmod u+x RunWine.sh
)#!/bin/bash xhost +SI:FedCom:MrWine # use the couple of your username # and the one you chose for wine EnvOptions="HOME=/home/MrWine USER=MrWine USERNAME=MrWine LOGNAME=MrWine " sudo -u MrWine env "$EnvOptions" wine "$@"
安装并运行 MrWine 程序
sudo chown MrWine:MrWine /home/MrWine/.wine/drive_c/My\ Installer.exe ~/RunWine.sh "C:\My Installer.exe" ~/RunWine.sh "C:\Program Files\ProgDir\ProgName.exe"
更多解释请参阅原博客[2]。