Führen Sie Tomcat7 als tomcat7 (oder einen anderen) Benutzer aus

Führen Sie Tomcat7 als tomcat7 (oder einen anderen) Benutzer aus

Welche Methode wird empfohlen, um sicherzustellen, dass eine Tomcat7-Instanz als Benutzer tomcat7 (oder ein anderer) ausgeführt wird?

Ich nehme an, dass ich es ändern tomcat7-instance/bin/startup.shund tomcat7-instance/bin/shutdown.shoben „su tomcat7“ hinzufügen kann.

Ich glaube, in Tomcat6 war es die Umgebungsvariable TOMCAT6_USER.

Antwort1

Die gebräuchlichste Methode besteht darin, das Standardpaket tomcat7mit zu installieren apt-getund es mit folgendem Befehl zu starten:

sudo service tomcat7 start

Der Standardbenutzer und die Standardgruppe sind /etc/default/tomcat7wie in diesem Auszug zu sehen konfiguriert:

# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat7.
TOMCAT7_USER=tomcat7

# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat7.
TOMCAT7_GROUP=tomcat7

Antwort2

EDIT: Bitte lesen Sie die Kommentare unten! Diese Lösung ist möglicherweise nicht auf alle Situationen anwendbar.

Die akzeptierte Antwort ist großartig, aber da ich Tomcat 7 auf Ubuntu 14.04 verwende, musste ich noch einige zusätzliche Dinge tun, um alles zum Laufen zu bringen:

  1. Sie müssen den Tomcat-Dienst stoppen, bevor Sie die Datei bearbeiten /etc/default/tomcat7. Sobald Sie den Benutzer und die Gruppe geändert haben, ist es nicht mehr möglich, einen Dienst mit dem alten Benutzer zu stoppen.
  2. Ändern Sie den Benutzer und die Gruppe in der Datei/etc/default/tomcat7

  3. Sie müssen den Eigentümer des Ordners /var/log/tomcat7und aller darin enthaltenen Dateien ändern. Beachten Sie, dass es von Vorteil ist, die ADM-Gruppe beizubehalten, damit alle ADM-Benutzer die Protokolle lesen können.

    sudo chown -R newuser:adm /var/log/tomcat7

  4. Eigentümer des Ordners ändern/var/lib/tomcat7/webapps

    sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps

  5. Wenn Sie auf Port 80/443 unter Ubuntu 14.04 arbeiten, müssen Sie den Eigentümer der Authbind-Dateien ändern:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Eigentümer des Arbeitsordners ändern

    sudo chown newuser:adm /var/cache/tomcat7

    sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina

  7. Machen Sie die Konfigurationsdateien lesbar. Hier haben Sie zwei Möglichkeiten: Fügen Sie Ihren neuen Benutzer entweder zur Gruppe tomcat7 hinzu, indem Sie:

    sudo usermod -a -G tomcat7 newuser

    … oder ändern Sie den Eigentümer der Konfigurationsdateien:

    sudo chown -R :newgroup /var/lib/tomcat7/conf/*

  8. Wenn Ihre Web-Apps auf andere Dateien zugreifen, z. B. Protokolldateien, Konfigurationsdateien usw., müssen Sie auch den Eigentümer dieser Dateien ändern.

  9. Jetzt sollte alles bereit sein, um den Dienst mit dem neuen Benutzer erneut zu starten.

BEARBEITEN 2: Nach dem Upgrade auf Tomcat 8 und Ubuntu 18.04 trat ein weiteres Problem auf, wenn Tomcat als anderer Benutzer ausgeführt wurde. Im Skript /etc/init.d/tomcat8scheint die folgende Zeile den Home-Ordner des Tomcat-Benutzers zu ändern, aber das Ergebnis ist nicht das gewünschte, wenn Sie einen anderen Benutzer verwenden.

usermod --home /var/lib/tomcat8 $TOMCAT8_USER > /dev/null 2>&1 || true

Durch Entfernen oder Auskommentieren dieser Zeile können Sie verhindern, dass der Home-Ordner für den neuen Tomcat-Benutzer geändert wird.

verwandte Informationen