Problemy z uprawnieniami z tomcat

9

Zainstalowałem Tomcat 7 zgodnie z przewodnikiem Ubuntu . Serwer działa i wyświetla komunikat „To działa!” strona na http://localhost:8080/.

Teraz chcę skonfigurować własną aplikację internetową za pomocą Netbeans. Wygenerowałem nowy projekt WWW z Javą EE 6 i Tomcat 7. Użytkownik jest /var/lib/tomcat7/conf/tomcat-users.xmlpoprawnie skonfigurowany w pliku.

Kiedy uruchamiam projekt, wszystko wydaje się w porządku, ale kiedy otwieram przeglądarkę, wyświetla błąd 500 .

  • Dane wyjściowe Tomcat wspominają o błędach uprawnień podczas próby uzyskania dostępu tomcat7/logsi
  • Dzienniki IDE próbują uzyskać dostęp tomcat7/conf.

Uprawnienia do plików:

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

Nie rozumiem, dlaczego nie można uzyskać dostępu do plików, widać, że użytkownik i grupa tomcat7mają uprawnienia do plików. Czy istnieje użytkownik JVM, który potrzebuje uprawnień do plików?

Próbowałem również zmienić właściciela plików, jak wspomniano tutaj, ale to się nie zmienia.


/etc/default/tomcat7Plik zawiera:

TOMCAT7_USER=tomcat7
TOMCAT7_GROUP=tomcat7

Więc chyba działa jako tomcat7użytkownik.


Dodałem mojego użytkownika do tomcat7grupy:

sudo usermod -aG tomcat7 $USER

A następnie ponownie uruchomił maszynę, ale problem nadal występuje.

Lucio
źródło
Czy tomcat działa jako użytkownik tomcat7?
muru
To było zbyt dawno użyłem Tomcat, ale 2 rzeczy przyszło mi do głowy: Nie ty musisz być w grupie tomcat7 aby pozwolić programowi na dostęp do spisu? Wygląda na to, że naprawdę chce uzyskać dostęp do pliku tymczasowego /var/lib/tomcat7/temp; czy to istnieje? Może to być ten sam problem z uprawnieniami. Może wystarczy dodać się do grupy tomcat7.
Marty Fried
Musisz także nadać grupie plików możliwość zapisu, aby móc skorzystać z mojego pomysłu. Jest tu więcej informacji , które mogą pomóc.
Marty Fried
Wygląda na to, że użytkownik (człowiek lub aplikacja), który uruchamia tomcat7, nie ma uprawnień dostępu do / var / lib / tomcat7 /, a zwłaszcza folderu logów.
MickyInTheSky

Odpowiedzi:

9

Zauważyłem tutaj dwa problemy.

Wyróżniały mnie dwie linie w dzienniku błędów:

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

i:

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

Przeprowadzając trochę diagnozy z Lucio , zorientowałem się, że tomcat-users.xmlplik nie był własnością Tomcata, ale zamiast tego root. Zmień uprawnienia na odpowiednie, uruchamiając polecenie:

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

Ponadto utwórz folder /var/lib/tomcat7/tempz uprawnieniami tomcat, na przykład:

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

Wreszcie, naprawianie logów powinno odbywać się przez uczynienie /var/lib/tomcat7/logswłasnością tomcat7użytkownika / grupy. /var/log/tomcat7/Należy również własnością tomcat7użytkowników i grup.

Kaz Wolfe
źródło
Dla mnie tomcat-user.xmlwystarczyła zmiana uprawnień do pliku. Takie samo działanie w przypadku dzienników nie działało, ale aplikacja i tak działa :-)
Lucio,