我读过关于这个主题的多个帖子,但没有成功。我可能犯了一个非常愚蠢的错误。
我想在一台机器上为多个用户运行 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
享受。 ;-)