Warum erhalte ich Fehler "Berechtigung verweigert", obwohl ich Gruppenberechtigung habe?

7

Ich versuche, ein Spiel namens "Dofus" unter Manjaro Linux auszuführen. Ich habe es mit Packer installiert, der es unter /opt/ankamaOrdner legte. Dieser Ordnerbesitz (und für jede darin enthaltene Datei) ist der Root-Benutzer und die Spielegruppe. Gemäß den Anweisungen des Installationspakets habe ich mich (Benutzer familia) zur Spielegruppe hinzugefügt (indem ich dies nicht getan habe: "Ich müsste mein Kennwort jedes Mal eingeben, wenn ich versuche, den Updater auszuführen").

Beim Ausführen des Spiels stürzt es jedoch nach Eingabe meines Passworts ab (was nicht erforderlich sein sollte). Beim Überprüfen der Protokolle sind folgende Fehler aufgetreten:

[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

Ich vermute also, dass die Berechtigung verweigert wurde. Eine Fehlermeldung einen Moment nach dem StartGeben Sie hier die Bildbeschreibung ein

Dies bedeutet: "Beim Schreiben auf die Festplatte ist ein Fehler aufgetreten. Überprüfen Sie, ob Sie über ausreichende Rechte und ausreichend Speicherplatz verfügen."

Nach einigen Recherchen stieß ich dann auf "auditd", das Dateizugriffe in einem Ordner protokollieren kann. Nachdem Sie es eingerichtet und festgestellt haben, welche Dateizugriffe nicht erfolgreich waren, ist dies das Ergebnis .

Alle diese Fehler beziehen sich tatsächlich auf eine eindeutige Datei /opt/ankama/transition/transitionmit einem Syscall an ( open). Die Berechtigungen dieser Datei sind rwxrwxr-x( 775). Ich habe also rwx-Berechtigungen dafür, aber es gibt mir einen Fehler exit -13, der ein EACESSFehler ist (Berechtigung verweigert).

Ich habe bereits versucht, den Computer neu zu starten, mich anzumelden und abzumelden. Keiner von ihnen hat funktioniert.

Wenn ich die Ordnerberechtigungen auf setze familia:games, läuft es ohne Probleme, ich muss nicht einmal mein Passwort eingeben. Auf diese Weise scheint es jedoch nicht richtig zu sein. Irgendwelche Ideen, warum ich Fehler erhalte, denen die Berechtigung verweigert wurde, obwohl ich Lese- / Schreib- / Ausführungsberechtigungen habe?

Mark hat gesagt, dass ich + x Berechtigungen in allen Verzeichnissen des Pfadpräfixes benötigen könnte. Der Weg selbst ist /opt/ankama/transition/transition. Die Berechtigungen für die Pfadpräfixe sind:

/ opt - drwxr-xr-x (755), Eigentümer root: root

/ opt / ankama - drwxr-xr-x (755), Besitzstamm: Spiele

/ opt / ankama / Transition - drwxrwxr-x (775), Besitzstamm: Spiele

Eine Sache, die mir jedoch aufgefallen ist, ist, dass alle Unterordner von /opt/ankamasind 775, obwohl der Ordner selbst ist 755. Ich glaube nicht, dass dies etwas bedeutet, und das Ändern der Berechtigungen in 775funktioniert nicht.

Außerdem schlug Giel vor, AppArmor auf meinem System ausführen zu lassen. Laufen # cat /sys/module/apparmor/parameters/enabledgibt mir jedoch N.

Ramon Dantas
quelle
1
EACCESS kann auch auftreten, wenn "die Suchberechtigung für eines der Verzeichnisse im Pfadpräfix des Pfadnamens verweigert wird". Überprüfen Sie daher, ob für alle Verzeichnisse die Berechtigungsbits "x" aktiviert sind.
Mark Plotnick
1
Ich sehe auch Systemaufrufe renameund unlinkin diesem Überwachungsprotokoll. Das Programm kann auf Schreibzugriff auf einige dieser Verzeichnisse angewiesen sein. Wenn dies fehlschlägt, ist das von Ihnen angegebene Kennwort möglicherweise für jemanden bestimmt, der über Schreibzugriff verfügt.
Mark Plotnick
Möglicherweise verwenden Sie AppArmor oder ein ähnliches MAC-System (Mandatory Access Control), das ausführbare Berechtigungen über die Dateisystemberechtigungen hinaus erzwingt.
Giel
@Mark und @Giel: Die Informationen zu AppArmor und den Berechtigungen für Pfadpräfixe wurden hinzugefügt. Mark, könntest du mehr Informationen darüber geben renameund unlinkanrufen?
Ramon Dantas
Suchen Sie nach der syscall=87Linie. Das ist nicht verbunden. Die Prüfung zeigt, dass das Verzeichnis Benutzer 0, Gruppe 0, Modus 755 ist. Wenn der Prozess so ausgeführt wird, wie Sie es tun, wird diese Verknüpfung nur dann erfolgreich sein, wenn das Verzeichnis den Modus 777 hat oder der Eigentümer Sie sind oder die Gruppe eine Gruppe ist
Ich

Antworten:

7

Wenn Sie sich einer Gruppe hinzufügen, wird die Änderung nicht sofort angewendet. Am einfachsten ist es, sich abzumelden und wieder anzumelden.

Dann gibt es Schreibberechtigungen für Datendateien (wie bereits in einigen Kommentaren erwähnt). Die Lösungen sind jedoch nicht gut für die Sicherheit.

  • Füge eine Gruppe für das Spiel hinzu. Fügen Sie dieser Gruppe keinen Benutzer hinzu.
  • Machen Sie das Spiel ausführbar von chmod -R ugo+rX game-directory
  • Geben Sie Schreibberechtigungen nur für Gruppen und für andere Benutzer chmod -R ug+w,o-w game-directory
  • Spiel zur Gruppe hinzufügen chgrp -R game-group game-directory,chmod -R g+s game-directory

oder nur addgroup game-group; chgrp -R game-group game-directory; chmod -R u=rwX,g=rwXs,o=rX game-directory

Wenn das Spiel die Berechtigungen ändern muss, können Sie dasselbe tun, jedoch für Benutzer anstelle von Gruppen. dh.

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

Strg-Alt-Delor
quelle
Vielen Dank. Es scheint, dass das Spiel die Dateiberechtigungen ändern möchte, aber nicht, dass es als Root ausgeführt wird. Das ist seltsam. Ich denke, ich muss den Eigentümer in mich ändern und ihn aktualisieren und dann den Eigentümer wieder an root zurückgeben.
Ramon Dantas
Wenn Sie die Dateiberechtigungen ändern möchten, müssen Sie wie beschrieben vorgehen, jedoch für Benutzer anstelle von Gruppen. Ich werde an das Ende der Antwort anhängen.
Strg-Alt-Delor
1
Lassen Sie es niemals als Root laufen. Wenn Sie ihm in den herkömmlichen Modi / Gruppen / Benutzern nicht die richtigen Berechtigungen erteilen können, benötigen Sie möglicherweise Zugriffssteuerungslisten oder -funktionen. siehe unix.stackexchange.com/questions/101263/…
Strg-Alt-Delor
0

Verzeichnisse müssen zum Öffnen x-Bit gesetzt sein (für das Verzeichnis wird dieses Bit als Suchbit angesehen). Ich verwende also tree, damit ich nur den Ordner festlegen und den Albtraum vermeiden kann, alle Dateien als ausführbare Dateien festzulegen (die Option für tree ist -d List directories only.):

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

Warnung!!! Sie sollten dies in Überlegungen haben:

  • Wenn Sie chmod oder chown rekursiv für Stammverzeichnisse /oder Systemverzeichnisse verwenden, wird Ihr Betriebssystem zerstört (alles, was rekursiv für /Verzeichnisse oder Systemverzeichnisse rekursiv ist, ist gefährlich.)

  • Dies ist keine gute Sicherheitspraxis, um eine solche Berechtigungsmenge festzulegen

Eduard Florinescu
quelle