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

10

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

Ich nehme an, ich kann 'su tomcat7' oben ändern tomcat7-instance/bin/startup.shund tomcat7-instance/bin/shutdown.shhinzufügen.

In Tomcat6 war es meiner Meinung nach die Umgebungsvariable TOMCAT6_USER.

Adrian Ber
quelle
Wenn Sie nach dem "sicheren Weg" fragen, wird dies höchstwahrscheinlich zu Debatten führen. Wenn Sie nun fragen, wie Sie einen anderen Benutzer für tomcat7 einstellen können, das ist verantwortlich. Übrigens, Tomcat beginnt mit dem Benutzer Tomcat, soweit ich mich erinnere, wenn Sie das Deb-Paket installiert haben.
Braiam

Antworten:

13

Am häufigsten installieren Sie das Standardpaket tomcat7mit apt-getund starten es mit:

sudo service tomcat7 start

Der Standardbenutzer und die Standardgruppe sind in konfiguriert, /etc/default/tomcat7wie Sie in diesem Auszug sehen können:

# 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
David Levesque
quelle
TOMCAT7_USER und TOMCAT7_GROUP waren das, wonach ich gesucht habe. Vielen Dank
Adrian Ber
Ich habe TOMCAT7_USER in tomcat7-instance / bin / setenv.sh geändert und den Server gestartet. Wenn ich den Prozess jedoch mit ps anzeige, ist der Benutzer nicht der in TOMCAT7_USER angegebene.
Adrian Ber
Warum ändern Sie es nicht direkt in /etc/default/tomcat7?
David Levesque
Angenommen, ich habe zwei Tomcat-Benutzerinstanzen und möchte sie als unterschiedliche Benutzer starten.
Adrian Ber
Das ist ein Szenario, mit dem ich nicht vertraut bin, aber in diesem Fall glaube ich nicht, dass Sie Tomcat als Dienst ausführen können, und die obige Konfiguration gilt nicht. Vielleicht sollten Sie eine separate Frage dazu stellen.
David Levesque
11

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

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

  1. Sie müssen den Tomcat-Dienst beenden, bevor Sie die Datei bearbeiten können /etc/default/tomcat7. Sobald Sie den Benutzer und die Gruppe geändert haben, kann ein Dienst mit dem alten Benutzer nicht mehr gestoppt werden.
  2. Ändern Sie den Benutzer und die Gruppe in der Datei /etc/default/tomcat7

  3. Sie müssen den Besitz des Ordners /var/log/tomcat7und aller seiner Dateien ändern . Bitte 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. Ändern Sie den Besitz des Ordners /var/lib/tomcat7/webapps

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

  5. Wenn Sie unter Ubuntu 14.04 auf Port 80/443 ausgeführt werden, müssen Sie den Besitz der authbind-Dateien ändern:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Ändern Sie den Besitz des Arbeitsordners

    sudo chown newuser:adm /var/cache/tomcat7

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

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

    sudo usermod -a -G tomcat7 newuser

    ... oder den Besitz der Konfigurationsdateien ändern:

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

  8. Wenn Sie über andere Dateien verfügen, auf die Ihre Web-Apps zugreifen, z. B. Konfigurationsdateien für Protokolldateien usw., müssen Sie auch den Besitz 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, was Sie wollen, wenn Sie einen anderen Benutzer verwenden.

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

Durch Entfernen oder Kommentieren dieser Zeile können Sie vermeiden, dass der Basisordner für den neuen Tomcat-Benutzer geändert wird.

Stenix
quelle
Es gibt ein großes Problem mit Ihrer Antwort. Beim nächsten Upgrade des Tomcat7-Pakets (Sicherheitsupdate / Bugfix) wird Ihr Setup unterbrochen, da apt die neue Tomcat7-Paketversion erneut mit demselben Benutzer (tomcat7) installiert. Sie können also keine unbeaufsichtigten Upgrades durchführen und müssen daran denken, nach jedem Upgrade zu chownen.
user323094
Das habe ich nicht bemerkt und ich habe im Moment auch keine gute Lösung dafür. Irgendwelche Vorschläge, jemand?
Stenix
In Tomcat9 gibt es keine solche Datei.
Stephane