Permissions

為什麼即使我有組權限,我也會收到“權限被拒絕”錯誤?

  • February 27, 2018

我正在嘗試在 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

所以,我懷疑 Permission Denied 錯誤。啟動後的錯誤資訊在此處輸入圖像描述

這意味著“寫入磁碟時發生錯誤 - 驗證您是否有足夠的權限和足夠的磁碟空間”。

然後,經過一番研究,我遇到了可以在文件夾中記錄文件訪問的“auditd”。設置好後,查看哪些文件訪問不成功,結果如下。

所有這些錯誤實際上都指向一個獨特的文件 ,/opt/ankama/transition/transition並帶有對 ( open) 的系統呼叫。該文件的權限為rwxrwxr-x( 775)。所以,我對它有 rwx 權限,但它給了我一個錯誤exit -13,這是一個EACESS錯誤(權限被拒絕)。

我已經嘗試重新啟動電腦,登錄和註銷。他們都沒有工作。

如果我將文件夾權限設置為familia:games,它可以毫無問題地執行,我什至不需要輸入我的密碼。然而,這種方式似乎並不正確。即使我有讀/寫/執行權限,為什麼我會收到 Permission Denied 錯誤的任何想法?

Mark 說過我可能需要在路徑前綴的所有目錄中都具有 +x 權限。路徑本身是/opt/ankama/transition/transition. 路徑前綴的權限是:

/opt - drwxr-xr-x(755), 所有權 root: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-directorychmod -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

引用自:https://unix.stackexchange.com/questions/152886