Tomcat7'yi tomcat7 (veya başka bir kullanıcı) olarak çalıştırın


10

Tomcat7 örneğinin tomcat7 (veya başka bir kullanıcı) olarak çalıştığından emin olmak için önerilen yol ne olacaktır?

Sanırım üstte 'su tomcat7'yi değiştirebilir tomcat7-instance/bin/startup.shve tomcat7-instance/bin/shutdown.shekleyebilirim.

Tomcat6'da çevre değişkeni olduğunu düşünüyorum TOMCAT6_USER.


Eğer "güvenli yol" istiyorsanız büyük olasılıkla tartışmaları kışkırtır. Şimdi "tomcat7 için farklı bir kullanıcı nasıl ayarlanır?" bu cevaplanabilir. BTW, tomcat kullanıcı tomcat ile başlar, bugüne kadar deb paketini yüklediyseniz hatırlıyorum ..
Braiam

Yanıtlar:


13

En yaygın yol, standart tomcat7paketi kurmak apt-getve aşağıdakileri kullanarak başlatmaktır:

sudo service tomcat7 start

Varsayılan kullanıcı ve grup, /etc/default/tomcat7bu alıntıda görebileceğiniz gibi yapılandırılmıştır :

# 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 ve TOMCAT7_GROUP aradığım şeydi. Teşekkürler
Adrian Ber

Tomcat7-instance / bin / setenv.sh dosyasında TOMCAT7_USER öğesini değiştirdim ve sunucuyu başlattım. Ancak ps kullanarak işlemi görüntülersem, kullanıcı TOMCAT7_USER içinde belirtilen işlem değildir.
Adrian Ber

Neden doğrudan içinde değişiklik yapmıyorsunuz /etc/default/tomcat7?
David Levesque

Diyelim ki iki Tomcat kullanıcı örneğim var ve bunları farklı kullanıcılar olarak başlatmak istiyorum.
Adrian Ber

Bu aşina olmadığım bir senaryo, ancak bu durumda Tomcat'i bir hizmet olarak çalıştırabileceğinizi düşünmüyorum ve yukarıdaki yapılandırma geçerli değil. Belki de bunun hakkında ayrı bir soru sormalısınız.
David Levesque

11

EDIT: Lütfen aşağıdaki yorumları okuyun! Bu çözüm tüm durumlar için geçerli olmayabilir.

Kabul edilen cevap harika ama Tomcat 7'yi Ubuntu 14.04'te çalıştırdığımdan beri, her şeyi çalıştırmak için yapmam gereken bazı ek şeyler vardı:

  1. Dosyayı düzenlemeden önce tomcat hizmetini durdurmanız gerekir /etc/default/tomcat7. Kullanıcı ve grubu değiştirdikten sonra, eski kullanıcıyı kullanarak bir hizmeti durdurmak artık mümkün olmayacaktır.
  2. Dosyadaki kullanıcıyı ve grubu değiştirme /etc/default/tomcat7

  3. Klasörün /var/log/tomcat7ve tüm dosyalarının sahipliğini değiştirmeniz gerekir . Lütfen tüm adm kullanıcılarının günlükleri okuyabilmesi için adm grubunu korumanın bir avantaj olduğunu unutmayın.

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

  4. Klasörün sahipliğini değiştirme /var/lib/tomcat7/webapps

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

  5. Ubuntu 14.04 üzerinde 80/443 numaralı bağlantı noktasında çalışıyorsa, authbind dosyalarının sahipliğini değiştirmeniz gerekir:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Çalışma klasörünün sahipliğini değiştirme

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. Yapılandırma dosyalarını okunabilir hale getirin. Burada iki seçeneğiniz var: Ya tomcat7 grubuna yeni kullanıcı ekleyin:

    sudo usermod -a -G tomcat7 newuser

    ... veya yapılandırma dosyalarının sahipliğini değiştirin:

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

  8. Web uygulamalarınızın eriştiği günlük dosyaları yapılandırma dosyaları gibi başka dosyalarınız varsa, bu dosyaların sahipliğini de değiştirmeniz gerekir.

  9. Şimdi, her şey yeni kullanıcı ile hizmeti yeniden başlatmaya hazır olmalıdır.

DÜZENLEME 2: Tomcat 8 ve Ubuntu 18.04 sürümlerine geçtikten sonra, tomcat'i farklı bir kullanıcı olarak çalıştırırken başka bir sorun ortaya çıktı. Kodda /etc/init.d/tomcat8aşağıdaki satır, tomcat kullanıcısının ana klasörünü değiştirmiş gibi görünüyor, ancak farklı bir kullanıcı kullanıyorsanız sonuç istediğiniz şey değildir.

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

Bu satırı kaldırarak veya yorum yaparak yeni tomcat kullanıcısı için giriş klasörünün değiştirilmesini önleyebilirsiniz.


Cevabınızla ilgili büyük bir sorun var. Bir sonraki tomcat7 paket yükseltmesi (güvenlik düzeltmesi / hata düzeltmesi) sonrasında, apt aynı kullanıcıyı (tomcat7) kullanarak tekrar yeni tomcat7 paket sürümünü yükleyeceğinden kurulumunuz bozulur. Böylece katılımsız yükseltmeler yapamazsınız ve her yükseltmeden sonra chown yapmayı unutmayın.
user323094

Bunu fark etmedim ve şu anda bunun için iyi bir çözümüm yok. Herhangi bir öneriniz var mı?
stenix

Tomcat9'da böyle bir dosya yok.
Stephane
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.