2009-04-07 4 views
6

Also habe ich ein kleines Linux-Problem, meine Güte, die mich lehren wird, so viele Jahre auf Windows zu verbringen. Auf jeden Fall habe ich eine wenig Java-Anwendung, wickelte gut mit dem Java Service Wrapper-Skript, aber wenn ich das Skript ausführen:Linux-Berechtigung verweigert nach chmod a = rwx

sh ./wrapper.sh console 

Ich bekomme die Erlaubnis sofort verweigert. Die Meldung "Berechtigung verweigert" lautet wie folgt:

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

Meine kleine wrapper.sh befindet sich im Ordner MyApp/bin. Das Verzeichnis MyApp/bin/Wrapper enthält zwei Dateien:

  • Wrapper-linux-x86-32
  • Wrapper-linux-x86-64

Als Test lief ich den folgenden Befehl chmod : rwx, auch in den Unterordnern

chmod a=rwx MyApp -R 

ich, dass alles überprüft wurde und versucht, das Skript erneut, mit dem exakt gleichen Ergebnis zu laufen ... die Erlaubnis verweigert.

Jeder hat eine Idee von dem, was ich als nächstes versuchen könnte, um dieses Baby laufen zu lassen?

Danke, Lancelot

+0

Was sind die Inhalte des Wrappers? Könnte es sein, dass es einen Befehl namens _eval_ aufruft? Mein Mann sagt mir, dass es einen Befehl eval - construct gibt, indem er Argumente verkettet. Möglicherweise liegt ein Problem im Wrapper-Skript vor. – lothar

+0

Ich vertraue darauf, dass Sie die öffentliche Schreibberechtigung für die Dateien und Verzeichnisse entfernt haben. Es ist selten vertretbar, Dateien oder Verzeichnisse mit öffentlicher Schreibberechtigung zu lassen -/tmp ist ein Sonderfall und erfordert, dass das Sticky-Bit-Set remote sicher ist. –

Antwort

8

Ich habe gerade bemerkt, wird die Fehlermeldung den Namen der Dateien Hosting Verzeichnis verweist:

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

Wir wissen, es ist ein Verzeichnis, da Sie erwähnt „Das Verzeichnis MyApp/bin/Wrapper enthält 2 Dateien“ .

Können Sie Ihr Skript zum Beispiel überprüfen, wo Sie den Namen des Verzeichnisses als Befehl verwenden? Wie zum Beispiel Wrapper (der Name des Verzeichnisses) anstelle von Wrapper/wrapper-linux-x86-32 (was wäre ein Dateiname) oder ähnliche Fehler?

ähnliche Fehler häufig auftreten, wenn Leerzeichen in Dateinamen verwenden und vergessen zu zitieren die Dateinamen (wahrscheinlich nicht den Fall hier, though.)

dass Andernfalls könnten Sie Ihre Frage zu schließen, den Inhalt des Wrapper-Skript bearbeiten Sie rufe an?

(Neue Antwort, da es auf die vorherige noexec Idee völlig unabhängig ist, und dass eine Referenz bleiben.)

+0

Du bist ein Mann. Genau das passierte. Das System war verwirrt und versuchte, einen Ordner anstelle einer Datei auszuführen. Beachten Sie, dass das System nicht durcheinander geraten wäre, wenn meine Struktur in erster Linie kugelsicher gewesen wäre. Maschinen machen nur, was wir ihnen sagen! Tausendmal moocha. – Lancelot

+0

Erwähnen Sie es nicht, froh, helfen zu können. –

+0

+1 für Genie Parsing der Frage :) –

0

Sie Ausführung Skript auf Ihren Wrapper gewähren

müssen auch chmod + x wrapper.sh

EDIT: Ich habe gerade bemerkt, dass Ihr wrapper.sh befindet sich in Ihre Ordner MeineAnw /EDIT

auch, wenn u Sie

#!/bin/sh 
01 stellen Sie sicher, haben

an der Spitze Ihrer .sh-Datei können Sie es wie folgt aus:

.wrapper.sh

+0

Hallo Roy, wenn ich ls -Al hier ist, was es druckt für meine wrapper.sh: -rwxrwxrwx 1 user1 user1 19035 2009-04-07 15:32 wrapper.sh – Lancelot

+0

chmod mit = ist durchaus akzeptabel, es ist bereits gesetzt, Ausführen-Bit. – paxdiablo

0

Zuerst versuchen sie in einem Texteditor öffnen, um sicherzustellen, dass Sie Lesezugriff haben. Wenn ja,

chmod +x wrapper.sh 

Und stellen Sie sicher, dass Sie #!/bin/sh am Anfang des Skripts

+0

Hallo Zifre, das #!/Bin/sh ist da, habe ich gerade überprüft. – Lancelot

5

Das Dateisystem-Hosting-Skript mit dem noexec Flagge könnte montiert werden müssen. Prüfen Sie die Datei/etc/fstab-Eintrag für das Dateisystem, und wenn es eine noexec dort versuchen ist das Entfernen es dann, dass Dateisystem Remon über mount /path/to/mountpoint -o remount

Am zweiten Gedanken, überprüfen Sie die Ausgabe des mount Befehl für noexec Instanzen anstelle von/etc/fstab (das Dateisystem wurde möglicherweise dynamisch gemountet.

)
+0

nein es gibt keine "noexec" -Option auf einem der Dateisysteme. Aber danke, dass Sie auf diese Datei hingewiesen haben, es ist nützlich zu wissen, wo diese Information ist. – Lancelot

+0

Dies ist eine sehr einfache Installation von Ubuntu. Nach dem Start wird nichts angehängt. Die Laufwerke und die CD-ROM werden beim Hochfahren des Systems automatisch geladen. – Lancelot

0

Sie können versuchen, die Datei auszuführen, die dort Home-Verzeichnis in anderem Benutzer war, können Sie die Erlaubnis für den Benutzer "user"

chmod -R a + x/home/user1 oder chmod -R o + x/home/user1 chmod -R g + x/home/user1

0

Obwohl mein Problem ein bisschen anders war, diese Aufgabe Bei meiner Suche nach ähnlichen Problemen tauchte Ion bei meiner Suche einige Male auf, also poste ich meine Ergebnisse hier.

Mein Problem war, dass ich nach chmod Befehl nicht auf Speicher/Ordner zugreifen konnte.

Nach dem Ausführen-Befehl:

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

ich nicht Speicher zugreifen kann/Ordner mehr.

Ich habe ls -l versucht:

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

Auch nach git status:

storage/.gitignore: Permission denied

Nach dem richtigen Befehl ausführen:

sudo chmod 755 storage -R // without - 

e Alles ist wieder normal geworden.