WINE 不属于你

WINE 不属于你

我读过关于这个主题的多个帖子,但没有成功。我可能犯了一个非常愚蠢的错误。

我想在一台机器上为多个用户运行 Office。我已成功为一个用户安装了 wine。

但是当我在第二个用户上运行它时,它失败并出现错误:

wine: /opt/windows is not owned by you

如果我更改chown为这个用户,一切都很好,但第一个用户会失去他的权利。

我创建了一个组wine并授予了权限,但似乎不起作用

我做错了什么?

members wine 
maksim anna

权限如下:

$ ls -l /opt/windows/
total 6632
drwxrwxrwx 2 anna wine    4096 Sep 23 17:02 dosdevices
drwxrwxrwx 7 anna wine    4096 Sep 23 16:57 drive_c
-rwxrwxrwx 1 anna wine 6511990 Sep 23 17:02 system.reg
-rwxrwxrwx 1 anna wine    3428 Sep 23 16:57 userdef.reg
-rwxrwxrwx 1 anna wine  259588 Sep 23 17:02 user.reg
-rwxrwxrwx 1 anna wine     127 Sep 23 16:57 winetricks.log

授予我使用的权限:

sudo chmod 777 -R  /opt/windows/

确保所有方法都有效,否则将失败

除非我明确使用,否则sudo chown -R maksim:wine /opt/windows/它对第一个用户不起作用。

答案1

这是因为通过 wine 运行的程序不能由其他用户运行,因为如果每个用户都可以使用带有 wine 的相同程序,那么该程序就可以访问任何用户的任何文件,这是一个安全问题。

获得您想要的东西的一个简单方法是为每个用户创建一个带有 Office 副本的 wineprefix(默认值为~/.wine),然后让他们运行自己的版本。

另一种方式是创建一个专门运行 wine 的用户(我们称之为wine_user):

useradd --no-create-home wine_user
sudo chown -R wine_user /opt/windows/

然后,您可以将用户添加到/etc/sudoers文件中,以允许他们使用 wine wine_user,如所述这里

maksim  ALL=(wine_user) NOPASSWD:ALL
anna    ALL=(wine_user) NOPASSWD:ALL

现在一切都已设置完毕,您应该能够以这些用户的身份运行 Office(为简单起见,您可以将此命令放在脚本或快捷方式中):

sudo -u wine_user wine /opt/windows/office.exe

我自己没有测试过,所以它可能无法按预期工作。如果有任何错误,请告诉我。请注意,使用此方法,程序创建的文件将归用户所有,wine_user因此您的用户之间共享,除非他们明确运行chown <user> myfile

答案2

从@Batary 的回答中得到启发:

sudo adduser --system --no-create-home wine
sudo addgroup wine
sudo usermod -a -G wine $USER
sudo rm -rf /opt/windows    # deletes the wine configuration
sudo rm -f /usr/share/applications/wine.desktop

最后一个命令删除了 Wine 应用程序的符号链接,因此 Wine 应用程序将不再显示在应用程序菜单中,但是我们将通过/etc/profile.d/wine-apps.sh包含以下内容的文件使其可见:

if [ -z "$XDG_DATA_DIRS" ]; then
    XDG_DATA_DIRS=/usr/local/share:/usr/share:/opt/wine-stable/share:/opt/wine-devel/share:/opt/wine-staging/share
else
    if [ -n "${XDG_DATA_DIRS##*/opt/wine-stable/share*}" ]; then
        XDG_DATA_DIRS="$XDG_DATA_DIRS":/opt/wine-stable/share
    fi
    if [ -n "${XDG_DATA_DIRS##*/opt/wine-devel/share*}" ]; then
        XDG_DATA_DIRS="$XDG_DATA_DIRS":/opt/wine-devel/share
    fi
    if [ -n "${XDG_DATA_DIRS##*/opt/wine-staging/share*}" ]; then
        XDG_DATA_DIRS="$XDG_DATA_DIRS":/opt/wine-staging/share
    fi
fi
export XDG_DATA_DIRS

在 /usr/local/sbin/adduser.local 中:

#!/bin/bash -e
usermod -a -G wine "$1" 2> /dev/null || :

自动将创建的每个用户添加到葡萄酒组。

在 /etc/sudoers.d/autologin-wine-group 中:

%wine   ALL=(wine) NOPASSWD:ALL

这样 wine 组的用户就可以以 wine 用户身份运行命令,而无需输入密码。

在 /etc/environment.d/90wineprefix.conf 中:

WINEPREFIX=/opt/windows

这样这个路径就是wine配置的默认路径。

重启。

要创建 wine 配置,请运行:

sudo -u wine winecfg

享受。 ;-)

相关内容