🐧 Linux Steam 游戏无法启动问题(日志:is not owned by you)
问题现象
尝试启动Steam游戏时,游戏无法启动,甚至窗口都没有弹出
使用Terminal启动Steam并点击启动游戏之后看到以下日志信息
wineserver: /mnt/Luka/windows/games/steamapps/compatdata/---/pfx is not owned by you
wine: '/mnt/Luka/windows/games/steamapps/compatdata/---/pfx' is not owned by you
...
这表明Wine(Steam用来运行Windows游戏的兼容层)无法访问游戏的兼容性数据目录,因为它不是该目录的所有者。
问题原因分析
这个问题通常出现在以下情况下:
- Steam游戏安装在NTFS格式的硬盘上
- NTFS硬盘挂载时没有正确设置用户所有权
- Linux系统对NTFS文件系统的权限处理机制与原生文件系统不同
NTFS文件系统本身不支持Linux的用户和组权限模型,当通过ntfs-3g驱动挂载时,如果不指定正确的用户ID(uid)和组ID(gid),所有文件都会显示为由root用户拥有,从而导致普通用户无法正常访问。
解决方案
修改fstab挂载配置
如果游戏安装在NTFS硬盘上,并且通过fstab自动挂载,需要修正挂载配置:
1. 查看当前用户ID
查看用户ID和组ID:
id
输出示例:
uid=1000(luka) gid=1000(luka) groups=1000(luka),...
记录uid和gid值(通常是1000)。
2. 查看NTFS硬盘的UUID
lsblk -f
找到NTFS分区,记录其UUID值。
3. 修改fstab配置
备份原始fstab文件:
sudo cp /etc/fstab /etc/fstab.bak
编辑fstab文件:
sudo vim /etc/fstab
找到NTFS硬盘的挂载行,修改为包含uid和gid参数:
UUID=你的NTFS硬盘UUID /mnt/挂载点 ntfs-3g defaults,uid=1000,gid=1000 0 0
示例:
UUID=2C6E2DAA6E2D6E30 /mnt/Luka ntfs-3g defaults,uid=1000,gid=1000 0 0
保存并退出编辑器,重启系统让配置生效。
完成配置后,重新启动Steam并尝试运行游戏。
如果配置正确,游戏应该能够正常启动而不再出现所有权错误。
预防措施
为避免将来再次出现类似问题:
- 在挂载NTFS硬盘时始终指定正确的uid和gid参数
- 考虑将Steam游戏库移动到原生Linux文件系统(ext4等)上
补充说明
如果同时使用其他需要特定权限的应用程序(如Wine、VirtualBox等),也需要注意NTFS挂载时的权限设置,确保这些应用程序能够正常访问所需的文件和目录。