我正在尝试在Manjaro Linux中运行一个名为“ Dofus”的游戏。我已经用打包程序安装了它,然后将其放在/opt/ankama
文件夹下。此文件夹的所有权(及其中每个文件的所有权)是root用户和游戏组。按照安装包的指示,我已经将自己(用户familia
)添加到游戏组中(不这样做,“每次尝试运行更新程序时,我都必须输入密码”)。
但是,在运行游戏时,输入我的密码后,它会崩溃(这不是必需的)。检查日志,我发现了一些类似的错误:
[29/08 20:44:07.114]{T001}INFO c/net/NetworkAccessManager.cpp L87 : Starting request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D
[29/08 20:44:07.291]{T001}INFO c/net/NetworkAccessManager.cpp L313 : Request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D Finished (status : 200)
[29/08 20:44:07.292]{T001}ERROR n/src/update/UpdateProcess.cpp L852 : Can not cache script data
因此,我怀疑“权限被拒绝”错误。启动后片刻出现错误消息
转换为“写入磁盘时发生错误-验证您是否具有足够的权限和足够的磁盘空间”。
然后,经过一番研究,我遇到了“ auditd”,它可以将文件访问记录在一个文件夹中。设置好之后,查看哪些文件访问不成功,这就是结果。
所有这些错误实际上都指向一个唯一文件/opt/ankama/transition/transition
,并带有(open
)的系统调用。该文件的权限为rwxrwxr-x
(775
)。因此,我对此具有rwx权限,但它给了我一个错误exit -13
,这是一个EACESS
错误(权限被拒绝)。
我已经尝试过重新启动计算机,登录和注销。他们都没有工作。
如果将文件夹权限设置为familia:games
,它可以正常运行,甚至不需要输入密码。但是,这种方式似乎并不正确。即使我具有读/写/执行权限,为什么会出现“拒绝权限”错误的任何想法?
马克说过,我可能在路径前缀的所有目录中都需要+ x权限。路径本身是/opt/ankama/transition/transition
。路径前缀的权限为:
/ opt-drwxr-xr-x(755),所有权根:root
/ opt / ankama-drwxr-xr-x(755),所有权根目录:游戏
/ opt / ankama / transition-drwxrwxr-x(775),所有权根目录:游戏
然而,有一两件事我注意到的是,所有子文件夹/opt/ankama
是775
,即使该文件夹本身755
。我认为这没有任何意义,并且将权限更改为775
无效。
另外,Giel建议我可以在系统上运行AppArmor。但是,跑步# cat /sys/module/apparmor/parameters/enabled
给了我N
。
首先,当您将自己添加到组中时,更改不会立即应用。最简单的方法是注销并重新登录。
然后有数据文件的写许可权(如某些注释中已经提到的)。但是,该解决方案不利于安全。
chmod -R ugo+rX game-directory
chmod -R ug+w,o-w game-directory
chgrp -R game-group game-directory
,chmod -R g+s game-directory
要不就 addgroup game-group; chgrp -R game-group game-directory; chmod -R u=rwX,g=rwXs,o=rX game-directory
如果游戏需要更改权限,则可以对用户(而不是组)执行相同的操作。IE。
adduser game-owner; addgroup game-group; chown -R game-owner:game-group game-directory; chmod -R u=rwXs,g=rwXs,o=rX game-directory
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句