tomcat için kullanıcılara erişim izni için en iyi uygulama


22

Çeşitli geliştiriciler tarafından paylaşılan bir Linux kutum var. Savaş dosyalarını paylaşılan konumdaki (/ opt / tomcat) apache tomcat'e yerleştirmek istiyorlar.

Sudo erişimi olmadığı için tomcat dizini için klasör iznini değiştirmem gerekiyor.

altında dizin yapısı /opt/tomcat-

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Yukarıdaki durumda en iyi uygulamalar nelerdir - Kullanıcıya en uygun erişim izni? Şimdilik webapps ve günlüklere ilişkin iznimi 777 olarak değiştirdim.

Teşekkürler

Yanıtlar:


32

Bunu şu şekilde yaparım:

Tomcat kullanıcısını tomcat klasörünün sahibi olarak koyduk:

# chown -R tomcat:tomcat /opt/tomcat

Kullanıcılar olabilir değil tomcat yapılandırmasını değiştirin:

# chmod -R g+r /opt/tomcat/conf

Kullanıcılar diğer klasörleri değiştirebilir:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Yeni dosyalar için yapışkan biti etkinleştirin izinleri tanımlayın:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Son olarak, tomcat'i kullanabilen kullanıcıların istediğimiz tomcat grubunu ekliyoruz:

# usermod -a -G tomcat MIUSER

4
-A etiketi olmadan yapılırsa kullanıcıyı tomcat grubuna eklersiniz, ancak MIUSER'i ait oldukları diğer gruplardan kaldırırsınız (bu, artık sudo grubu olmadığı anlamına gelir). Sunucularımdan birinde ana hesaptaki grupları kurtarmak için hızlı hareket etmek zorunda kaldım ve onları hala o grupları tuttuğum eski bir oturumdan geri almak zorunda kaldım. Bu yanıtı okuyan diğer kullanıcılar için bir uyarı.
Axoren

Bu yanıta seçenek ekledim. Teşekkürler
intropedro

Tomcat'in tomcat kullanıcısı olarak başlatılması nasıl olur? Benimki bir deamon olarak başlıyor ve şu an kök olarak çalışıyor.
Stephane

1
Merhaba Stephane, Ubuntu'da Tomcat bir tomcat kullanıcısıyla çalışıyor ve TOMCAT8_USER ve TOMCAT8_GROUP değişkenleriyle / etc / default / tomcat8 dosyasında bulunuyor. Diğerlerinde linux bilmiyorum.
intropedro

Is not +skullanıcı / grup kimliği kurdu? Man sayfası +tyapışkan bit diyor .
bmaupin

13

Non-Tomcat settingsTomcat'in güvenlik howto bölümünde bu konu hakkında yararlı bilgiler sağlar. Buraya bakın:

Tomcat kök kullanıcı altında çalıştırılmamalıdır. Tomcat işlemi için özel bir kullanıcı oluşturun ve bu kullanıcıya işletim sistemi için gereken minimum izinleri verin. Örneğin, Tomcat kullanıcısını kullanarak uzaktan oturum açmak mümkün olmamalıdır.

Dosya izinleri de uygun şekilde kısıtlanmalıdır. ASF'deki Tomcat örneklerini örnek alarak (otomatik konuşlandırmanın devre dışı bırakıldığı ve web uygulamalarının patlatılmış dizinler olarak dağıtıldığı) standart yapılandırma, tüm Tomcat dosyalarının Tomcat grubunun köküne sahip olduğunu ve sahibinin okuma / yazma ayrıcalıklarına sahip olduğunu gösterir. , grubun yalnızca okuması vardır ve dünyanın izni yoktur. İstisnalar, kök yerine Tomcat kullanıcısının sahip olduğu günlükler, geçici ve çalışma dizinleridir . Bu, bir saldırgan Tomcat işlemini tehlikeye atacak olsa bile Tomcat yapılandırmasını değiştiremez, yeni web uygulamaları dağıtamaz veya mevcut web uygulamalarını değiştiremez. Tomcat işlemi, bu izinleri korumak için 007 umask ile çalışır.


Açıklanan yaklaşımın sadece Tomcat'te değil, diğer hizmetlerle de (veritabanı, ters proxy, vb.) Kabul edilip edilemeyeceğini merak ediyorum. Sizce uygulanabilir / akıllıca mı?
Paolo

1

En az ayrıcalık ilkesini izlemeniz gerekir . Sunucunun (muhtemelen www-datakontrol etmeniz gerekir) dosyaların çoğunu okuyabilmesi (diyelim) ve sadece günlüklere yazması gerekir. Web geliştiricilerinin ihtiyaç duydukları yerde yazmalarına izin verilir. Dizinlerdeki yapışkan biti, yalnızca dosyanın sahibi tarafından silinebilecek şekilde ayarlayın.

Uygulamada bir grup (örneğin webdev) oluşturmanız ve tüm geliştiricileri ve sunucuyu bu gruba eklemeniz gerekir ( usermod -aG webdev <user>veya usermod -A webdev <user>Linux lezzetinize bağlı olarak). chowntüm dosyaları ve dizini web sunucusu kullanıcısına, chmod tüm dizinleri 500'e ve tüm dosyaları 400'e ( binçalıştırılabilir dosyaların 500 olması gerektiği durumlar hariç ).

/opt/tomcatGruba yazma izinleri verin (570 olacaktır) ve yapışkan biti yalnızca sahip oldukları dosyaları kaldırabilecek şekilde ayarlayın (chmod 1570). Sunucuya günlüklere yazma izni verin ve geliştiricilere izinleri okuyun (klasör için 0740, dosyalar için 0640, yapışkan bit muhtemelen gerekli değildir ve bir dosyaya, yalnızca klasörlere asla vermeyin. farklı anlam (dosya yürütülebilir olduğunda sahibinin izinleriyle yürüt)).

Ardından webdevbazı dizinlere yazma izinleri (1570) vermeniz gerekir . Burada biraz deneme yanılma yapmanız gerekecek ve uygulamaya bağlı olabilir. Bu klasörler 1570, bazıları ise 0500 olabilir).

Geliştiricilerin, sunucuya bunları okuyabilmesi (640) ve ayrıca dizinlerde (750) çalışabilmesi için dosyalarına okuma erişimi vermesi gerekir.


1

@ İntropedro'nun kabul edilen cevabının iyi olduğunu düşünüyorum. Bir paket yükleyici kullanmanın çok fazla baş ağrısından kurtulabileceğini belirtmek gerekir - en azından Ubuntu'daki Tomcat 7 için apt-get install tomcat7daha "standart" bir kurulum dizinleri dizisi üretir:

  • /etc/tomcat7 yapılandırma dosyaları için,
  • /var/lib/tomcat7 çekirdek kütüphaneler için ve
  • /usr/share/tomcat7 paylaşılan kaynaklar için.

Tüm izinler, gruba kullanıcı eklemenin tomcat7konuşlandırmaya izin vermek için yeterli olacağı şekilde en az ayrıcalık ilkesiyle doğru şekilde ayarlanır . Ayrıca, tomcat sunucusu diğerleri gibi başlatılabilen ve durdurulabilen bir hizmet olarak kurulur (örneğin sudo service tomcat startveya alternatif olarak /etc/init.d/tomcat start). Tomcat otomatik olarak yeniden başlatmaya başlar ve bir "yeniden başlat" komutu vardır. RHEL / CentOS kullanıcıları için eşdeğer bir yum paketi olduğundan eminim. (Ve evet, yerel OSX kurulumları için bir homebrew yükleyicisi var).

Sorun yaşıyorsanız , izinler veya başka hatalar varsa bu raporlar olarak /usr/share/binadlandırılan güzel bir yardımcı program configtest.shvardır. Bazı sembolik bağlantılar eklemenizi öneren açık bir hata olduğunu unutmayın .

Hala Ubuntu trusty(14.04) kullanıyoruz; daha yeni sürümleri çalıştıranlar için Tomcat 8 apt-get repo olduğuna inanıyorum.

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.