Berechtigungsprobleme mit Tomcat

9

Ich habe Tomcat 7 gemäß der Ubuntu-Anleitung installiert . Der Server funktioniert und gibt mir das "Es funktioniert!" Seite auf http://localhost:8080/.

Jetzt möchte ich meine eigene Webanwendung mit Netbeans einrichten. Ich habe ein neues Webprojekt mit Java EE 6 und Tomcat 7 erstellt. Der Benutzer befindet sich in der /var/lib/tomcat7/conf/tomcat-users.xmlDatei, die ordnungsgemäß konfiguriert wurde.

Wenn ich das Projekt starte, scheint alles in Ordnung zu sein, aber wenn ich den Browser öffne, wird ein 500-Fehler angezeigt .

Dateiberechtigungen:

lucio@lucio-pc:/$ ll /var/lib/tomcat7/logs
lrwxrwxrwx 1 root root 17 jul 24 18:07 /var/lib/tomcat7/logs -> ../../log/tomcat7/
lucio@lucio-pc:/$ ll /var/log/tomcat7/
total 136
drwxr-x---  2 tomcat7 adm      4096 ago 28 10:50 ./
drwxrwxr-x 15 root    syslog   4096 ago 28 09:29 ../
-rw-r--r--  1 tomcat7 tomcat7   800 ago 26 17:23 catalina.2014-08-26.log.gz
-rw-r--r--  1 tomcat7 tomcat7  5173 ago 27 21:59 catalina.2014-08-27.log
-rw-r--r--  1 tomcat7 tomcat7 31285 ago 28 10:36 catalina.2014-08-28.log
-rw-r--r--  1 tomcat7 root    44192 ago 28 10:36 catalina.out
-rw-r--r--  1 tomcat7 tomcat7    45 ago 26 16:19 localhost.2014-08-26.log.gz
-rw-r--r--  1 tomcat7 tomcat7     0 ago 27 11:15 localhost.2014-08-27.log
-rw-r--r--  1 tomcat7 tomcat7   433 ago 28 09:49 localhost.2014-08-28.log
-rw-r--r--  1 tomcat7 tomcat7  7435 ago 26 17:23 localhost_access_log.2014-08-26.txt
-rw-r--r--  1 tomcat7 tomcat7     0 ago 27 11:15 localhost_access_log.2014-08-27.txt
-rw-r--r--  1 tomcat7 tomcat7 15186 ago 28 09:58 localhost_access_log.2014-08-28.txt

Ich verstehe nicht, warum nicht auf die Dateien zugegriffen werden kann. Sie können sehen, dass der Benutzer und die Gruppe tomcat7Berechtigungen für die Dateien haben. Gibt es einen Benutzer für die JVM, der Berechtigungen für die Dateien benötigt?

Ich habe auch versucht, die Eigentümer der Dateien zu ändern, wie hier erwähnt , aber es ändert sich überhaupt nicht.


Die /etc/default/tomcat7Datei hat:

TOMCAT7_USER=tomcat7
TOMCAT7_GROUP=tomcat7

Ich denke, es läuft als tomcat7Benutzer.


Ich habe meinen Benutzer zur tomcat7Gruppe hinzugefügt :

sudo usermod -aG tomcat7 $USER

Und dann den Computer neu gestartet, aber das Problem bleibt bestehen.

Lucio
quelle
Läuft Tomcat als Tomcat7-Benutzer?
Muru
Es ist zu lange her, dass ich Tomcat verwendet habe, aber mir fallen zwei Dinge ein: Müssen Sie nicht in der Tomcat7-Gruppe sein, damit das Programm auf das Protokoll zugreifen kann? Und es scheint auch so, als ob es wirklich auf eine temporäre Datei in zugreifen möchte /var/lib/tomcat7/temp; gibt es das Möglicherweise handelt es sich um dasselbe Berechtigungsproblem. Vielleicht müssen Sie sich nur der Tomcat7-Gruppe hinzufügen.
Marty Fried
Außerdem müssten Sie die Dateigruppe beschreibbar machen, um meine Idee zu verwenden. Und es gibt mehr Informationen hier Das könnte helfen.
Marty Fried
Es scheint, dass der Benutzer (Mensch oder Anwendung), der tomcat7 ausführt, nicht die Berechtigung hat, auf / var / lib / tomcat7 / und insbesondere auf den Protokollordner zuzugreifen.
MickyInTheSky

Antworten:

9

Ich habe hier zwei Probleme bemerkt.

Zwei Zeilen im Fehlerprotokoll fielen mir auf:

SEVERE: Cannot find specified temporary folder at /var/lib/tomcat7/temp  

und:

java.io.FileNotFoundException: /var/lib/tomcat7/conf/tomcat-users.xml (Permission denied)

Als ich mit Lucio ein bisschen diagnostizierte , stellte ich fest, dass die tomcat-users.xmlDatei nicht Tomcat gehörte, sondern stattdessen root. Ändern Sie die Berechtigungen in die richtigen, indem Sie den folgenden Befehl ausführen:

sudo chown tomcat7:tomcat7 /var/lib/tomcat7/conf/tomcat-users.xml

Erstellen Sie den Ordner außerdem /var/lib/tomcat7/tempmit Tomcat-Berechtigungen wie folgt:

sudo mkdir /var/lib/tomcat7/temp && sudo chown -R tomcat7:tomcat7 /var/lib/tomcat7/temp

Schließlich sollten die Protokolle repariert werden, indem sie /var/lib/tomcat7/logsdem tomcat7Benutzer / der Gruppe gehören. Das /var/log/tomcat7/sollte auch dem tomcat7Benutzer UND der Gruppe gehören.

Kaz Wolfe
quelle
Für mich tomcat-user.xmlwar es ausreichend , die Berechtigungen für die Datei zu ändern . Dasselbe für die Protokolle zu tun, hat nicht funktioniert, aber die Anwendung läuft trotzdem :-)
Lucio