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エラーが発生したのではないかと思います。起動直後のエラーメッセージ
これは、「ディスクへの書き込み中にエラーが発生しました-十分な権限と十分なディスク容量があるかどうかを確認してください」と解釈されます。
その後、調査の結果、フォルダ内のファイルアクセスを記録できる「監査」に出くわしました。それを設定し、どのファイルアクセスが失敗したかを確認した後、これは result です。
これらのエラーはすべて、(open
)へのシステムコールで一意のファイル/opt/ankama/transition/transition
を実際に参照しています。このファイルの権限はrwxrwxr-x
(775
)です。そのため、rwx権限を持っていますが、EACESS
エラー(権限が拒否されました)であるエラーexit -13
が発生します。
ログインとログアウトのために、コンピューターを再起動しようとしました。それらのどれもうまくいきませんでした。
フォルダのアクセス許可をfamilia:games
に設定すると、問題なく実行され、パスワードを入力する必要すらありません。ただし、この方法では正しくないようです。読み取り/書き込み/実行のアクセス許可を持っているにもかかわらず、アクセス許可が拒否されたエラーが発生する理由についてのアイデアはありますか?
Markは、パスプレフィックスのすべてのディレクトリで+ x権限が必要になる可能性があると述べています。パス自体は/opt/ankama/transition/transition
です。パス接頭辞の権限は次のとおりです。
/ opt-drwxr-xr-x(755)、所有権root:root
/ opt/ankama-drwxr-xr-x(755)、所有権root:games
/ opt/ankama/transition-drwxrwxr-x(775)、所有権root:games
ただし、フォルダ自体が/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
ゲームで権限を変更する必要がある場合は、グループではなくユーザーに対して同じことを実行できます。すなわち。
adduser game-owner; addgroup game-group; chown -R game-owner:game-group game-directory; chmod -R u=rwXs,g=rwXs,o=rX game-directory
ディレクトリを開くには、xビットセット(そのビットが検索ビットと見なされるディレクトリ)が必要です。したがって、私はツリーを使用してフォルダーセットのみを取得し、すべてのファイルを実行可能ファイルとして設定するという悪夢を回避できます(ツリーのオプションは-d List directories only.
です)。
Sudo tree -faid here_goes_your_directory xargs -L1 -I{} Sudo chmod 755 "{}"
警告!!!これを考慮に入れる必要があります:
ルート/
ディレクトリまたはシステムディレクトリでchmodまたはchownを再帰的に使用すると、OSが破壊されます(/
ディレクトリまたはシステムディレクトリで再帰的に実行すると、危険です)。
これは、そのような権限の一括を設定するための良いセキュリティ慣行ではありません