我有一个多用户系统,如果可能的话我想防止每个游戏下载 3 次。因此,我为我的 Steam 游戏创建了一个单独的 ext4 分区,并在 steam 中选择了该分区
drwxr-xr-x 4 root root 4096 May 21 17:06 ..
drwxrwxr-x 2 root steam 16384 May 4 19:59 lost+found
drwxrwxr-x 3 root steam 4096 May 21 17:22 SteamLibrary
所有质子游戏都无法启动我使用了启动选项 PROTON_LOG=1 并且日志说这个
wineserver: /mnt/steam/SteamLibrary/steamapps/compatdata/1118200/pfx is not owned by you
wine: '/mnt/steam/SteamLibrary/steamapps/compatdata/1118200/pfx' is not owned by you
我知道这可以解决
chown -R user:user /mnt/steam
但我不明白为什么我需要拥有我的组拥有所有权限的文件
我在网上找不到任何内容,因为 ntfs 分区填充我的搜索结果也存在类似问题。
我的用户也在steam组中。
ChatGPT 提到了一些关于 acl 和高级权限的内容,但是这个
sudo setfacl -R -d -m group:sharedgroup:rwx /mnt/steam/SteamLibrary
看来它只会设置我已经拥有的读/执行/写权限。
我想问是否可以为多个用户伪造一个挂载点或找到其他解决方法。
答案1
我不明白为什么我需要拥有我的组拥有所有权限的文件
此检查可能没有任何技术原因,但程序在其检查的条件下是免费的。
这些检查可能是在启动期间完成的,wine
因此您可以创建
- 包装脚本
- 一条
sudo
规则
这样包装器脚本会将这些文件的所有者更改为调用者:
# start-my-game.sh
file_paths=( '/mnt/steam/SteamLibrary/steamapps/compatdata/1118200/pfx' )
sudo chown "$USER" "${file_paths[@]}"
# or for simpler sudoers rules (allow each file separately)
for file in "${file_paths[@]}"; do
sudo chown "$USER" "$file"
done
the usual start command line