Ich benutze Tomcat7 und ich habe versucht, Sh-Skript von Tomcat zu starten. Mein Sh-Skript muss eine neue Datei erstellen und Dinge in schreiben. Wenn ich mein Skript wie ./test.sh starten, funktioniert es perfekt, aber wenn ich Tomcat zum Starten dieses Skripts verwende, gehe ich einen Fehler der Erlaubnis verweigert während der Ausführung des Skripts hat nicht die Erlaubnis zu schreiben. Das ist mein Java-Code:Tomcat sh script Erlaubnis
String[] fixCmd = new String[] { path };
Process start = Runtime.getRuntime().exec(fixCmd);
// monitor standard error to find out what's wrong
BufferedReader r = new BufferedReader(new InputStreamReader(start.getErrorStream()));
String line = null;
while ((line = r.readLine()) != null) {
System.out.println(line);
}
und mein Shell:
echo test >> test.txt
Ich versuchte Process zu verwenden, aber es hat auch nicht funktioniert.
Ich versuchte, die Erlaubnis des Ordners mit der ganzen Lösung zu ändern, die ich gründet, und nichts hat funktioniert. Wenn exec Tomcat Skript als root gestartet hat, hat er alle erforderlichen Berechtigungen. Ich habe dem Benutzer von tomcat7 die volle Erlaubnis für den Ordner gegeben, falls sich nichts geändert hat. Ich habe einige andere Java-Skripte, die Datei auf dem Server erstellen und schreiben, so dass ich bereits das Recht geändert habe, Tomcat Dinge schreiben zu lassen, und es ist Arbeit, so weiß ich wirklich nicht, was das Problem des Skripts ist.
Irgendwelche Ideen?
Edit 1: Der Ausgang des ls -l ./test.sh
getan:
-rwxr-xr-x 1 tomcat7 tomcat7 165 nov. 2 16:12 ./test.sh
Ich bin als root angemeldet und i rot Kater wird als Wurzel zu betrachten.
Edit 2 Problem gelöst: Ein Spezialist erklärte mir, dass mein Problem ein Sicherheitsproblem ist, wie tomcat ein Web-Server ist es eine Sicherheit nicht zulassen, dass die Erlaubnis zum Schreiben auf sh Skript ist. Also änderte ich meine Herangehensweise an das Problem und ich werde die sh-Skriptausgabe in Java lesen und meine Datei von jave schreiben.
Haben Sie selbst die Ausführungsberechtigungen des Skripts überprüft? – RealSkeptic
Nun, es hat alle erforderlichen Berechtigungen, denke ich, wenn ich es in bash wie ./test.sh starten, macht er den Job perfekt. – Sulexa
Ja, aber das ist nicht derselbe Benutzer, oder? Tomcat läuft unter einem anderen Benutzer. Bitte machen Sie ein 'ls -l./Test.sh' und fügen Sie die Ausgabe zu Ihrer Frage hinzu. – RealSkeptic