问题现象:

挂载的ext4磁盘无法建立Steam存储库,Steam展示的分区的选项里没有,手动选择后提示目录无执行权限。(ntfs-3g以default参数挂载的NTFS磁盘确正常显示且可以建立存储库但游戏似乎无法启动?)

尝试解决

手动chmod 775后发现Steam依然输出错误
Failed system("/media/xfox/LinuxDataPart/SteamGame/.steam_exec_test.sh") in execute test: 32256

这里我不得不吐槽一下,看日志的时候发现Steam还尝试往/efi/boot等敏感分区写入测试脚本,这个问题Github早有反馈但是至今未获得解决。

在路径下执行umask发现输出权限掩码0022,那么实际权限应该是0775,随后在CTL下进入路径手动运行二进制可执行文件发现命令行提示无权限执行。也就是可执行权限实际还是没有给到,编辑/etc/fstab,挂载参数改为:exec,umask=0022 重新挂载后再次启动Steam,大功告成。

后记

第二天就无法正常启动了,只得把umask删掉,但是明明上面系统分区/boot/efi用了umask参数都没问题。难道这俩参数冲突不能混用?总之最终只写了一个exec 启动了操作系统。存储库依旧是可用的。(然而我之前试过user,exec参数就不行,很奇葩。这个问题Github也一直存在,解决方法其中就有写user,exec的,还有搞软链接的,但是归根结底并不像是用户自己的问题。)
Fuck you Steam!

知识点:

Linux 文件基本属性和八进制权限代码表示

2023-10-28T20:30:27.png
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

各权限的分数对照表如下:
读 r:4
写 w:2
执行 x:1
无权 -:0
分数之和即为权限所有者的权限等级代码,依次有所有者owner,所有者同组用户group,其他用户others 这三个权限所者,每个权限施行对象有一个数字,即前面介绍的分数之和来
rwx r-x r-x即

4+2+1 4+0+1 4+0+1
7 5 5
777-022=775 ,777,644,775这些常见权限等级设置是不是很熟悉?
0777-权限掩码=实际权限代码
umask可用来设定[权限掩码]。直接执行umask查看当前[权限掩码],[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

标签: none

已有 2 条评论

  1. EricQAQ EricQAQ

    www之前关注的好几个写博的网站都寄了.....今天看下狐窝平复下心情

    1. 打造一个博客站点并不困难,但是很多人没有那个毅力持续投入更新和维护。我的小目标是先持续更新维护十年。

添加新评论