Frage

Ich habe also ein kleines Linux -Problem, meine GEEZ, die mir beibringen wird, so viele Jahre unter Windows zu verbringen. Wie auch immer, ich habe eine kleine Java -App gemacht, die gut mit dem Java Service Wrapper -Skript eingewickelt war, aber wenn ich dieses Skript ausführe:

sh ./wrapper.sh console

Ich erhalte sofort die Erlaubnis. Die Erlaubnis verweigerte Nachricht ist so:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

Mein kleiner Wrapper.Sh lebt im Ordner myapp/bin. Das Verzeichnis MyApp/bin/wrapper enthält 2 Dateien:

  • Wrapper-Linux-X86-32
  • Wrapper-Linux-X86-64

Als Test habe ich den folgenden CHMOD -Befehl ausgeführt:

chmod a=rwx MyApp -R

Ich verifizierte, dass alles RWX war, selbst in den Unterordnern und versuchte, das Skript erneut auszuführen, mit genau dem gleichen Ergebnis ... Erlaubnis abgelehnt.

Hat jemand eine Vorstellung davon, was ich als nächstes versuchen könnte, das Baby zum Laufen zu bringen?

Danke, Lancelot

War es hilfreich?

Lösung

Ich habe gerade bemerkt, dass die Fehlermeldung den Namen des Verzeichnis Hosting Ihrer Datei:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

Wir wissen, dass es ein Verzeichnis ist, seit Sie "das Verzeichnis myapp/bin/wrapper 2 Dateien enthält" erwähnt haben.

Könnten Sie Ihr Skript beispielsweise überprüfen, wo Sie den Namen des Verzeichnisses als Befehl verwenden? Wie die Verwendung von Wrapper (welcher Verzeichnisname) anstelle von Wrapper/Wrapper-Linux-X86-32 (welcher Dateiname wäre) oder ähnliche Fehler?

Ähnliche Fehler werden häufig angezeigt, wenn Sie Leerzeichen in Dateinamen verwenden und vergessen, diese Dateinamen zu zitieren (aber wahrscheinlich hier nicht der Fall.)

Können Sie Ihre Frage nicht bearbeiten, um den Inhalt des Wrapper -Skripts, das Sie aufrufen, einzuschließen?

(Neue Antwort, da es völlig nichts mit der vorherigen NOExec -Idee zu tun hat und dass man als Referenz bleiben kann.)

Andere Tipps

Das Dateisystem, das Ihr Skript hostet, kann mit dem montiert werden noexec Flagge. Überprüfen Sie Ihren /etc /fstab -Eintrag für dieses Dateisystem und wenn es a ist noexec Versuchen Sie dort zu entfernen und dann dieses Dateisystem über die Ausrichtung zu bringen mount /path/to/mountpoint -o remount

Überprüfen Sie beim zweiten Gedanken die Ausgabe der mount Befehl für noexec -Instanzen anstelle von /etc /fstab (das Dateisystem wurde möglicherweise dynamisch montiert.)

Möglicherweise müssen Sie Ihrem Wrapper auch Ausführungsskript gewähren

CHMOD +X WRAPPER.SH

Bearbeiten: Ich habe gerade bemerkt, dass sich Ihr Wrapper.sh in Ihrem MyApp -Ordner /Bearbeiten befindet

Auch wenn Sie sicherstellen, dass Sie es haben

#!/bin/sh

Oben in Ihrer .sh -Datei können Sie sie so ausführen:

.wrapper.sh

Versuchen Sie zunächst, es in einem Texteditor zu öffnen, um sicherzustellen, dass Sie Lesezugriff haben. Wenn ja, tun Sie

chmod +x wrapper.sh

Und stellen Sie sicher, dass Sie haben #!/bin/sh Zu Beginn des Drehbuchs

Sie können versuchen, die Datei auszuführen, die im Heimverzeichnis anderer Benutzer vorhanden war. Sie können dem Benutzer "Benutzer" die Berechtigung geben, die Berechtigung zu geben

CHMOD -r A+X /HOME /User1 oder CHMOD -r O+X /HOME /User1 CHMOD -r G+X /HOME /User1

Although my problem was a bit different this question appeared in my search few times while searching for similar problem so I'll post my findings here.

My problem was that I couldn't access storage/ folder after chmod command.

After executing command:

sudo chmod -755 storage -R    //notice -755 is wrong, it should be 755

I couldn't access storage/ folder any more.

I've tried ls -l:

storage permissions d---------

Also after git status:

storage/.gitignore: Permission denied

After executing the right command:

sudo chmod 755 storage -R // without -

everything returned back to normal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top