Jalankan Tomcat7 sebagai pengguna Tomcat7 (atau lainnya)

10

Apa yang akan menjadi cara yang disarankan untuk memastikan bahwa instance Tomcat7 berjalan sebagai pengguna tomcat7 (atau lainnya)?

Saya kira bahwa saya dapat memodifikasi tomcat7-instance/bin/startup.shdan tomcat7-instance/bin/shutdown.shdan menambahkan 'su tomcat7' di bagian atas.

Dalam Tomcat6 saya pikir itu adalah variabel lingkungan TOMCAT6_USER.

Adrian Ber
sumber
Jika Anda meminta "cara aman" kemungkinan besar akan memancing perdebatan. Sekarang jika Anda bertanya "bagaimana cara mengatur pengguna yang berbeda untuk tomcat7?" itu bisa dijawab. BTW, tomcat dimulai dengan tomcat pengguna, sejauh yang saya ingat jika Anda menginstal paket deb ..
Braiam

Jawaban:

13

Cara paling umum adalah menginstal tomcat7paket standar dengan apt-getdan memulainya menggunakan:

sudo service tomcat7 start

Pengguna dan grup default dikonfigurasikan /etc/default/tomcat7seperti yang Anda lihat dalam kutipan ini:

# 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
sumber
TOMCAT7_USER dan TOMCAT7_GROUP adalah apa yang saya cari. Terima kasih
Adrian Ber
Saya memodifikasi TOMCAT7_USER di tomcat7-instance / bin / setenv.sh dan memulai server. Tetapi jika saya menampilkan proses menggunakan ps pengguna bukan yang ditentukan dalam TOMCAT7_USER.
Adrian Ber
Mengapa Anda tidak memodifikasinya secara langsung /etc/default/tomcat7?
David Levesque
Katakanlah saya memiliki dua instance pengguna Tomcat dan saya ingin meluncurkannya sebagai pengguna yang berbeda.
Adrian Ber
Itu skenario yang saya tidak kenal, tetapi dalam hal ini saya tidak berpikir Anda dapat menjalankan Tomcat sebagai layanan dan konfigurasi di atas tidak berlaku. Mungkin Anda harus mengajukan pertanyaan terpisah tentang itu.
David Levesque
11

SUNTING: Baca komentar di bawah ini! Solusi ini mungkin tidak berlaku untuk semua situasi.

Jawaban yang diterima sangat bagus tetapi karena saya menjalankan Tomcat 7 di Ubuntu 14.04 ada beberapa hal tambahan yang perlu saya lakukan untuk menjalankan semuanya:

  1. Anda perlu menghentikan layanan tomcat sebelum mengedit file /etc/default/tomcat7. Setelah Anda mengubah pengguna dan grup, tidak mungkin lagi menghentikan layanan menggunakan pengguna lama.
  2. Ubah pengguna dan grup dalam file /etc/default/tomcat7

  3. Anda perlu mengubah kepemilikan folder /var/log/tomcat7dan semua file itu. Harap perhatikan bahwa mempertahankan grup admin agar semua pengguna admin dapat membaca log adalah keuntungan.

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

  4. Ubah kepemilikan folder /var/lib/tomcat7/webapps

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

  5. Jika berjalan pada port 80/443 pada Ubuntu 14.04 Anda perlu mengubah kepemilikan file authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Ubah kepemilikan folder kerja

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. Buat file konfigurasi dapat dibaca. Di sini Anda memiliki dua opsi: Menambahkan Anda pengguna baru ke grup tomcat7 dengan:

    sudo usermod -a -G tomcat7 newuser

    ... atau ubah kepemilikan file konfigurasi:

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

  8. Jika Anda memiliki file lain yang diakses oleh aplikasi web Anda seperti file konfigurasi file log, dll. Maka Anda perlu mengubah kepemilikan file tersebut juga.

  9. Sekarang, semuanya harus siap untuk menjalankan layanan lagi dengan pengguna baru.

EDIT 2: Setelah memutakhirkan ke tomcat 8 dan Ubuntu 18.04 masalah lain muncul ketika menjalankan tomcat sebagai pengguna yang berbeda. Dalam skrip /etc/init.d/tomcat8, baris berikut ini tampaknya mengubah folder home dari pengguna kucing jantan tetapi hasilnya bukan apa yang Anda inginkan jika Anda menggunakan pengguna yang berbeda.

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

Dengan menghapus atau mengomentari baris ini, Anda dapat menghindari mengubah folder beranda untuk pengguna kucing jantan yang baru.

stenix
sumber
Ada si masalah besar dengan jawaban Anda. Setelah peningkatan paket tomcat7 berikutnya (perbaikan keamanan / perbaikan bug), pengaturan Anda akan rusak karena apt akan menginstal versi paket tomcat7 baru menggunakan pengguna yang sama (tomcat7) lagi. Jadi, Anda tidak dapat melakukan pemutakhiran tanpa pengawasan dan harus mengingatnya setelah setiap pemutakhiran.
user323094
Saya tidak menyadarinya dan saya tidak punya solusi yang baik untuk itu saat ini. Ada saran, siapa saja?
stenix
Tidak ada file seperti itu di Tomcat9.
Stephane