Komisches Rechteproblem mit Tomcat 9

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Komisches Rechteproblem mit Tomcat 9

Burkhard Schultheis
Ich habe mein aktuelles Problem schon im debianforum.de geschildert
(https://debianforum.de/forum/viewtopic.php?f=8&t=173439), aber leider
noch keine Lösung bekommen. Ich weiß auch immer noch nicht weiter. Ich
kopiere hierhin mal, was ich im Debianforum schon geschrieben habe in
der Hoffnung, dass hier doch noch jemand eine zündende Idee hat. ;-)

System: Debian 9 mit openjdk 11 und Tomcat 9 (aus Backports-Repository)

Tomcat 9 startet nicht, weil er das Verzeichnis /var/lib/tomcat9/policy
nicht anlegen kann. Das finde ich sehr seltsam, denn:

- Der Tomcat ist so konfiguriert, dass er unter dem User tomcat:tomcat
läuft (steht so in der Unit-Datei):

root@lnx-64-debian-9-8:/var/log/tomcat9 # cat
/lib/systemd/system/tomcat9.service
#
# Systemd unit file for Apache Tomcat
#

[Unit]
Description=Apache Tomcat 9 Web Application Server
Documentation=https://tomcat.apache.org/tomcat-9.0-doc/index.html
After=network.target

[Service]

# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat9"
Environment="CATALINA_BASE=/var/lib/tomcat9"
Environment="CATALINA_TMPDIR=/tmp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
EnvironmentFile=-/etc/default/tomcat9

# Lifecycle
Type=simple
ExecStartPre=+/usr/libexec/tomcat9/tomcat-update-policy.sh
ExecStart=/bin/sh /usr/libexec/tomcat9/tomcat-start.sh
SuccessExitStatus=143
Restart=on-abort

# Logging
SyslogIdentifier=tomcat9

# Security
User=tomcat
Group=tomcat
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
LogsDirectory=tomcat9
LogsDirectoryMode=750
CacheDirectory=tomcat9
CacheDirectoryMode=750
ProtectSystem=strict
ReadWritePaths=/etc/tomcat9/Catalina/
ReadWritePaths=/var/lib/tomcat9/webapps/

[Install]
WantedBy=multi-user.target

- Das Verzeichnis /var/lib/tomcat9 gehört tomcat:tomcat:

root@lnx-64-debian-9-8:/var/log/tomcat9 # ls -al /var/lib/tomcat9
insgesamt 16
drwxr-xr-x 4 tomcat tomcat 4096 Mai 31 14:24 .
drwxr-xr-x 27 root root 4096 Mai 31 14:24 ..
lrwxrwxrwx 1 root root 12 Feb 26 09:17 conf -> /etc/tomcat9
drwxr-xr-x 2 tomcat tomcat 4096 Feb 26 09:17 lib
lrwxrwxrwx 1 root root 17 Feb 26 09:17 logs -> ../../log/tomcat9
drwxrwxr-x 3 tomcat tomcat 4096 Mai 31 13:57 webapps
lrwxrwxrwx 1 root root 19 Feb 26 09:17 work -> ../../cache/tomcat9

- ich kann von Hand das Verzeichnis als tomcat-User problemlos anlegen:

root@lnx-64-debian-9-8:/var/lib/tomcat9 # sudo -u tomcat mkdir policy
root@lnx-64-debian-9-8:/var/lib/tomcat9 # ls -al
insgesamt 20
drwxr-xr-x 5 tomcat tomcat 4096 Mai 31 14:48 .
drwxr-xr-x 27 root root 4096 Mai 31 14:24 ..
lrwxrwxrwx 1 root root 12 Feb 26 09:17 conf -> /etc/tomcat9
drwxr-xr-x 2 tomcat tomcat 4096 Feb 26 09:17 lib
lrwxrwxrwx 1 root root 17 Feb 26 09:17 logs -> ../../log/tomcat9
drwxr-xr-x 2 tomcat tomcat 4096 Mai 31 14:48 policy
drwxrwxr-x 3 tomcat tomcat 4096 Mai 31 13:57 webapps
lrwxrwxrwx 1 root root 19 Feb 26 09:17 work -> ../../cache/tomcat9

Wenn ich starte, nachdem ich das Verzeichnis von Hand angelegt habe,
kommt die Fehlermeldung, dass er das Verzeichnis nicht löschen kann:

root@lnx-64-debian-9-8:/var/lib/tomcat9 # systemctl start tomcat9
Job for tomcat9.service failed because the control process exited with
error code.
See "systemctl status tomcat9.service" and "journalctl -xe" for details.
root@lnx-64-debian-9-8:/var/lib/tomcat9 # systemctl status tomcat9
● tomcat9.service - Apache Tomcat 9 Web Application Server
Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor
preset: enabled)
Active: failed (Result: exit-code) since Fri 2019-05-31 14:50:56 CEST;
8s ago
Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html
Process: 2389 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh
(code=exited, status=1/FAILURE)

Mai 31 14:50:56 lnx-64-debian-9-8 systemd[1]: Starting Apache Tomcat 9
Web Application Server...
Mai 31 14:50:56 lnx-64-debian-9-8 tomcat9[2389]: rm: das Entfernen von
'/var/lib/tomcat9/policy' ist nicht möglich: Das Dateisystem ist nur lesbar
Mai 31 14:50:56 lnx-64-debian-9-8 systemd[1]: tomcat9.service: Control
process exited, code=exited status=1
Mai 31 14:50:56 lnx-64-debian-9-8 systemd[1]: Failed to start Apache
Tomcat 9 Web Application Server.
Mai 31 14:50:56 lnx-64-debian-9-8 systemd[1]: tomcat9.service: Unit
entered failed state.
Mai 31 14:50:56 lnx-64-debian-9-8 systemd[1]: tomcat9.service: Failed
with result 'exit-code'.

Was ich noch komisch finde: Die Datei /var/log/tomcat9/catalina.out
gehörte ursprünglich root:adm und war nur für root schreibbar. Trotzdem
konnte Tomcat in die Datei schreiben. Ich habe sie dann tomcat:tomcat
gegeben und die Einträge landeten genauso darin!

root@lnx-64-debian-9-8:/var/lib/tomcat9 # mount | grep var
/dev/mapper/system-var on /var type ext4 (rw,relatime,data=ordered)

root@lnx-64-debian-9-8:/var/lib/tomcat9 # cat /var/log/tomcat9/catalina.out
[2019-05-31 13:57:08] [info] mkdir: das Verzeichnis
„/var/lib/tomcat9/policy“ kann nicht angelegt werden: Das Dateisystem
ist nur lesbar
[2019-05-31 13:58:59] [info] mkdir: das Verzeichnis
„/var/lib/tomcat9/policy“ kann nicht angelegt werden: Das Dateisystem
ist nur lesbar
[2019-05-31 14:05:49] [info] mkdir: das Verzeichnis
„/var/lib/tomcat9/policy“ kann nicht angelegt werden: Das Dateisystem
ist nur lesbar
[2019-05-31 14:09:15] [info] rm: das Entfernen von
'/var/lib/tomcat9/policy' ist nicht möglich: Das Dateisystem ist nur lesbar
[2019-05-31 14:35:49] [info] mkdir: das Verzeichnis
„/var/lib/tomcat9/policy“ kann nicht angelegt werden: Das Dateisystem
ist nur lesbar
[2019-05-31 14:50:56] [info] rm: das Entfernen von
'/var/lib/tomcat9/policy' ist nicht möglich: Das Dateisystem ist nur lesbar

Wer hat denn dazu eine Idee? Ich habe heute mal das Logging für die
catalina.out auf "DEBUG" gesetzt, aber da kam dann auch nicht mehr!

Grüße
Burkhard

Reply | Threaded
Open this post in threaded view
|

Re: Komisches Rechteproblem mit Tomcat 9

Ulf Volmer
On 04.06.19 14:23, Burkhard Schultheis wrote:

> Tomcat 9 startet nicht, weil er das Verzeichnis /var/lib/tomcat9/policy
> nicht anlegen kann. Das finde ich sehr seltsam, denn:

> root@lnx-64-debian-9-8:/var/log/tomcat9 # cat /lib/systemd/system/tomcat9.service
[...]
> # Security
[...]
> ReadWritePaths=/etc/tomcat9/Catalina/
> ReadWritePaths=/var/lib/tomcat9/webapps/

Ich würde die beiden Optionen wahlweise entfernen oder um das genannte
Verzeichnis ergänzen.

Viele Grüße
Ulf