限制 wine 访问 wineprefix 路径

限制 wine 访问 wineprefix 路径

有没有办法限制 Wine 的葡萄酒前缀这样它就无法读取外面的文件了?

如果可能的话,哪种方法可以完全保护我的系统免受可能通过 wine 运行的恶意软件的侵害?

我只是想避免我的主目录被随机的 Windows .exe 擦除。

答案1

读了你的问题,我同意你的担忧,我认为这是更容易更安全,也是默认行为当您在虚拟机中运行 Windows 应用程序时(例如 virtualbox [0] 例如),可以与您的系统(和网络)完全隔离,或使用一组有限的共享文件夹隔离。

另一方面始终可以以不同的用户身份运行 wine,假设 MrWine 和你在一个不同的组中,那么为了给该用户访问你本地的 wine 路径的权限,关闭你 MrWine 组的目录和文件(简单地说其他的Unix 世界 [1] 默认设置)。您可以关闭你自己但您仍将有一部分系统可供 wine 访问。恶意软件很少能被预测或有效利用,但如果您想更加确定,您需要再次在单独的封闭环境中运行,例如虚拟机。

我在互联网上搜索,发现了一个有趣的链接[2] 与此一致,并提供了分步过程,不同之处在于它将使用 MrWine 用户的 wine 目录。以下步骤中有一些未经测试的修改,因此您也可以直接参考旧的原始帖子。


  1. 安装 wine
  2. 为 MrWine 创建并设置一个账户(命令应该有所不同)

    sudo adduser --disabled-login --shell /sbin/nologin MrWine 
    sudo usermod --append --groups audio wine
    
  3. 允许你自己的用户帐户在 Mrwine 帐户下启动命令sudo

    sudo env VISUAL=/usr/bin/gedit visudo   # maybe sudo visudo is enough
    FedComp ALL=(MrWine) NOPASSWD: ALL      # Use your linux names here
    
  4. 阻止任何其他用户帐户使用 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*
    
  5. 您可能需要将 umask 从 022 更改为 027

    umask 027 
    
  6. 创建 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 "$@"
    
  7. 安装并运行 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]。

相关内容