web-dev-qa-db-ja.com

グループ権限を持っているのに「権限が拒否されました」というエラーが表示されるのはなぜですか?

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エラーが発生したのではないかと思います。起動直後のエラーメッセージenter image description here

これは、「ディスクへの書き込み中にエラーが発生しました-十分な権限と十分なディスク容量があるかどうかを確認してください」と解釈されます。

その後、調査の結果、フォルダ内のファイルアクセスを記録できる「監査」に出くわしました。それを設定し、どのファイルアクセスが失敗したかを確認した後、これは result です。

これらのエラーはすべて、(open)へのシステムコールで一意のファイル/opt/ankama/transition/transitionを実際に参照しています。このファイルの権限はrwxrwxr-x775)です。そのため、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が得られます。

7
Ramon Dantas

まず、自分をグループに追加しても、変更はすぐには適用されません。最も簡単なのは、ログアウトして再度ログインすることです。

次に、データファイルの書き込み権限があります(コメントの一部で既に説明されています)。ただし、ソリューションはセキュリティに適していません。

  • ゲームのグループを追加します。このグループにユーザーを追加しないでください。
  • 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

ゲームで権限を変更する必要がある場合は、グループではなくユーザーに対して同じことを実行できます。すなわち。

adduser game-owner; addgroup game-group; chown -R game-owner:game-group game-directory; chmod -R u=rwXs,g=rwXs,o=rX game-directory

7
ctrl-alt-delor

ディレクトリを開くには、xビットセット(そのビットが検索ビットと見なされるディレクトリ)が必要です。したがって、私はツリーを使用してフォルダーセットのみを取得し、すべてのファイルを実行可能ファイルとして設定するという悪夢を回避できます(ツリーのオプションは-d List directories only.です)。

Sudo tree -faid here_goes_your_directory xargs -L1 -I{} Sudo chmod 755  "{}"

警告!!!これを考慮に入れる必要があります:

  • ルート/ディレクトリまたはシステムディレクトリでchmodまたはchownを再帰的に使用すると、OSが破壊されます(/ディレクトリまたはシステムディレクトリで再帰的に実行すると、危険です)。

  • これは、そのような権限の一括を設定するための良いセキュリティ慣行ではありません

0