Uruchom Tomcat7 jako użytkownik tomcat7 (lub dowolny inny)

10

Jaki będzie zalecany sposób zapewnienia, że ​​instancja Tomcat7 działa jako użytkownik tomcat7 (lub jakikolwiek inny)?

Przypuszczam, że mogę modyfikować tomcat7-instance/bin/startup.shi tomcat7-instance/bin/shutdown.shdodawać „su tomcat7” u góry.

W Tomcat6 myślę, że była to zmienna środowiskowa TOMCAT6_USER.

Adrian Ber
źródło
Jeśli poprosisz o „bezpieczny sposób”, najprawdopodobniej spowoduje to debaty. Teraz, jeśli zapytasz „jak ustawić innego użytkownika dla tomcat7?” to jest odpowiedzialne. BTW, tomcat zaczyna się od użytkownika tomcat, o ile pamiętam, jeśli zainstalowałeś pakiet deb.
Braiam

Odpowiedzi:

13

Najczęstszym sposobem jest instalacja standardowego tomcat7pakietu apt-geti uruchomienie go przy użyciu:

sudo service tomcat7 start

Domyślny użytkownik i grupa są skonfigurowane, /etc/default/tomcat7jak widać w tym fragmencie:

# 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
źródło
TOMCAT7_USER i TOMCAT7_GROUP były tym, czego szukałem. Dzięki
Adrian Ber,
Zmodyfikowałem TOMCAT7_USER w tomcat7-instance / bin / setenv.sh i uruchomiłem serwer. Ale jeśli wyświetlę proces za pomocą ps, użytkownik nie jest tym określonym w TOMCAT7_USER.
Adrian Ber
Dlaczego nie zmodyfikujesz go bezpośrednio w /etc/default/tomcat7?
David Levesque,
Powiedzmy, że mam dwie instancje użytkownika Tomcat i chcę je uruchomić jako różni użytkownicy.
Adrian Ber
Tego scenariusza nie znam, ale w tym przypadku nie sądzę, abyś mógł uruchomić Tomcat jako usługę i powyższa konfiguracja nie ma zastosowania. Może powinieneś zadać osobne pytanie na ten temat.
David Levesque,
11

EDYCJA: Przeczytaj komentarze poniżej! To rozwiązanie może nie mieć zastosowania we wszystkich sytuacjach.

Przyjęta odpowiedź jest świetna, ale odkąd uruchamiam Tomcat 7 na Ubuntu 14.04, musiałem zrobić kilka dodatkowych rzeczy, aby wszystko działało:

  1. Przed edycją pliku musisz zatrzymać usługę tomcat /etc/default/tomcat7. Po zmianie użytkownika i grupy nie będzie już możliwe zatrzymanie usługi przy użyciu starego użytkownika.
  2. Zmień użytkownika i grupę w pliku /etc/default/tomcat7

  3. Musisz zmienić własność folderu /var/log/tomcat7i wszystkich jego plików. Należy pamiętać, że zaletą jest utrzymanie grupy adm, aby wszyscy użytkownicy adm mogli czytać dzienniki.

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

  4. Zmień własność folderu /var/lib/tomcat7/webapps

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

  5. Jeśli działa na porcie 80/443 na Ubuntu 14.04, musisz zmienić własność plików authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Zmień własność folderu roboczego

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. Udostępnij pliki konfiguracyjne. Masz dwie opcje: Dodaj nowego użytkownika do grupy tomcat7 według:

    sudo usermod -a -G tomcat7 newuser

    ... lub zmień własność plików konfiguracyjnych:

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

  8. Jeśli masz inne pliki, do których mają dostęp twoje aplikacje internetowe, takie jak pliki konfiguracyjne plików dziennika itp., Musisz również zmienić ich własność.

  9. Teraz wszystko powinno być gotowe do ponownego uruchomienia usługi z nowym użytkownikiem.

EDYCJA 2: Po aktualizacji do tomcat 8 i Ubuntu 18.04 pojawił się kolejny problem podczas uruchamiania tomcat jako inny użytkownik. W skrypcie /etc/init.d/tomcat8następujący wiersz wydaje się zmieniać folder domowy użytkownika tomcat, ale wynik nie jest tym, czego chcesz, jeśli używasz innego użytkownika.

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

Usuwając lub komentując ten wiersz, możesz uniknąć zmiany folderu domowego dla nowego użytkownika tomcat.

feniks
źródło
Z twoją odpowiedzią jest ogromny problem. Podczas następnej aktualizacji pakietu tomcat7 (poprawka zabezpieczeń / poprawka) instalacja się zepsuje, ponieważ apt ponownie zainstaluje nową wersję pakietu tomcat7, używając tego samego użytkownika (tomcat7). Nie możesz więc wykonywać nienadzorowanych ulepszeń i musisz pamiętać, że po każdym uaktualnieniu musisz być chownem.
user323094,
Nie zdawałem sobie z tego sprawy i nie mam obecnie na to dobrego rozwiązania. Jakieś sugestie, ktoś?
stenix
W Tomcat9 nie ma takiego pliku.
Stephane