Esegui Tomcat7 come utente tomcat7 (o qualsiasi altro)


10

Quale sarà il modo consigliato per garantire che un'istanza Tomcat7 sia in esecuzione come utente tomcat7 (o qualsiasi altro)?

Suppongo di poter modificare tomcat7-instance/bin/startup.she tomcat7-instance/bin/shutdown.shaggiungere "su tomcat7" nella parte superiore.

In Tomcat6 penso che fosse la variabile d'ambiente TOMCAT6_USER.


Se stai chiedendo il "modo sicuro" molto probabilmente susciterà dibattiti. Ora se chiedi "come impostare un utente diverso per tomcat7?" questo è responsabile. A proposito, tomcat inizia con l'utente tomcat, per quanto mi ricordo se hai installato il pacchetto deb ..
Braiam

Risposte:


13

Il modo più comune è installare il tomcat7pacchetto standard con apt-gete avviarlo usando:

sudo service tomcat7 start

L'utente e il gruppo predefiniti sono configurati /etc/default/tomcat7come puoi vedere in questo estratto:

# 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

TOMCAT7_USER e TOMCAT7_GROUP era quello che stavo cercando. Grazie
Adrian Ber,

Ho modificato TOMCAT7_USER in tomcat7-instance / bin / setenv.sh e ho avviato il server. Ma se visualizzo il processo usando ps l'utente non è quello specificato in TOMCAT7_USER.
Adrian Ber,

Perché non lo modifichi direttamente in /etc/default/tomcat7?
David Levesque,

Diciamo che ho due istanze utente Tomcat e voglio lanciarle come utenti diversi.
Adrian Ber,

Questo è uno scenario che non conosco, ma in questo caso non penso che tu possa eseguire Tomcat come servizio e la configurazione sopra non si applica. Forse dovresti fare una domanda separata a riguardo.
David Levesque,

11

EDIT: leggi i commenti qui sotto! Questa soluzione potrebbe non essere applicabile a tutte le situazioni.

La risposta accettata è ottima ma da quando eseguo Tomcat 7 su Ubuntu 14.04 c'erano alcune cose aggiuntive che dovevo fare per far funzionare tutto:

  1. È necessario interrompere il servizio Tomcat prima di modificare il file /etc/default/tomcat7. Dopo aver modificato l'utente e il gruppo, non sarà più possibile interrompere un servizio utilizzando il vecchio utente.
  2. Cambia l'utente e il gruppo nel file /etc/default/tomcat7

  3. Devi cambiare la proprietà della cartella /var/log/tomcat7e di tutti i suoi file. Tenere presente che è un vantaggio mantenere il gruppo adm in modo che tutti gli utenti adm possano leggere i registri.

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

  4. Cambia la proprietà della cartella /var/lib/tomcat7/webapps

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

  5. Se in esecuzione sulla porta 80/443 su Ubuntu 14.04 è necessario modificare la proprietà dei file authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Cambia la proprietà della cartella di lavoro

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. Rendi leggibili i file di configurazione. Qui hai due opzioni: O aggiungi il tuo nuovo utente al gruppo tomcat7:

    sudo usermod -a -G tomcat7 newuser

    ... o modifica la proprietà dei file di configurazione:

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

  8. Se disponi di altri file a cui accedono le tue app Web come file di configurazione dei file di registro, ecc., Devi modificare anche la proprietà di tali file.

  9. Ora, tutto dovrebbe essere pronto per riavviare il servizio con il nuovo utente.

EDIT 2: Dopo l'aggiornamento a Tomcat 8 e Ubuntu 18.04 è apparso un altro problema quando si esegue Tomcat come un altro utente. Nello script /etc/init.d/tomcat8la seguente riga sembra alterare la cartella home dell'utente tomcat ma il risultato non è quello che vuoi se stai usando un altro utente.

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

Rimuovendo o commentando questa riga, è possibile evitare di modificare la cartella home per il nuovo utente Tomcat.


C'è un grosso problema con la tua risposta. Al prossimo aggiornamento del pacchetto tomcat7 (correzione di sicurezza / correzione di bug), l'installazione si interromperà perché apt installerà di nuovo la nuova versione del pacchetto tomcat7 utilizzando lo stesso utente (tomcat7). Quindi non è possibile eseguire aggiornamenti automatici e ricordarsi di chown dopo ogni aggiornamento.
user323094

Non me ne sono reso conto e al momento non ho una buona soluzione. Qualche suggerimento, qualcuno?
stenix,

Non esiste un file simile in Tomcat9.
Stephane,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.