รัน Tomcat7 ในฐานะผู้ใช้ tomcat7 (หรืออื่น ๆ )


10

อะไรคือวิธีที่แนะนำในการตรวจสอบให้แน่ใจว่าอินสแตนซ์ Tomcat7 กำลังทำงานในฐานะผู้ใช้ tomcat7 (หรืออื่น ๆ )

ฉันคิดว่าฉันสามารถแก้ไขtomcat7-instance/bin/startup.shและtomcat7-instance/bin/shutdown.shเพิ่ม 'su tomcat7' ที่ด้านบน

ใน tomcat6 TOMCAT6_USERฉันคิดว่ามันเป็นตัวแปรสภาพแวดล้อม


หากคุณถามถึง "วิธีที่ปลอดภัย" ส่วนใหญ่แล้วจะทำให้เกิดการโต้วาที ตอนนี้ถ้าคุณถาม "วิธีการตั้งค่าผู้ใช้ที่แตกต่างกันสำหรับ tomcat7" ที่ตอบได้ BTW, แมวตัวผู้เริ่มต้นด้วยตัวผู้ใช้เท่าที่ผมจำได้ว่าหากคุณติดตั้งแพคเกจ deb ..
Braiam

คำตอบ:


13

วิธีที่พบบ่อยที่สุดคือการติดตั้งtomcat7แพ็กเกจมาตรฐานด้วยapt-getและเพื่อเริ่มใช้งาน:

sudo service tomcat7 start

ผู้ใช้เริ่มต้นและกลุ่มมีการกำหนดค่าใน/etc/default/tomcat7ที่คุณเห็นในข้อความที่ตัดตอนมานี้:

# 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 และ TOMCAT7_GROUP คือสิ่งที่ฉันกำลังมองหา ขอบคุณ
Adrian Ber

ฉันแก้ไข TOMCAT7_USER ใน tomcat7-instance / bin / setenv.sh และเริ่มเซิร์ฟเวอร์ แต่ถ้าฉันแสดงกระบวนการโดยใช้ ps ผู้ใช้จะไม่ใช่คนที่ระบุใน TOMCAT7_USER
Adrian Ber

ทำไมคุณไม่แก้ไขได้โดยตรงใน/etc/default/tomcat7?
David Levesque

สมมติว่าฉันมีอินสแตนซ์ผู้ใช้ Tomcat สองตัวและฉันต้องการเปิดใช้งานในฐานะผู้ใช้อื่น
Adrian Ber

นั่นเป็นสถานการณ์ที่ฉันไม่คุ้นเคย แต่ในกรณีนี้ฉันไม่คิดว่าคุณจะสามารถเรียกใช้ Tomcat เป็นบริการได้และการตั้งค่าด้านบนใช้ไม่ได้ บางทีคุณควรถามคำถามแยกต่างหากเกี่ยวกับเรื่องนั้น
David Levesque

11

แก้ไข: โปรดอ่านความคิดเห็นด้านล่าง! วิธีนี้อาจไม่สามารถใช้ได้กับทุกสถานการณ์

คำตอบที่ยอมรับนั้นยอดเยี่ยม แต่เนื่องจากฉันรัน Tomcat 7 บน Ubuntu 14.04 มีบางสิ่งเพิ่มเติมที่ฉันต้องทำเพื่อให้ทุกอย่างทำงานได้:

  1. /etc/default/tomcat7คุณจำเป็นต้องหยุดให้บริการคราวก่อนการแก้ไขไฟล์ เมื่อคุณเปลี่ยนผู้ใช้และกลุ่มคุณจะไม่สามารถหยุดบริการโดยใช้ผู้ใช้เก่าได้อีกต่อไป
  2. เปลี่ยนผู้ใช้และกลุ่มในไฟล์ /etc/default/tomcat7

  3. คุณต้องเปลี่ยนความเป็นเจ้าของโฟลเดอร์/var/log/tomcat7และไฟล์ทั้งหมด โปรดทราบว่ามันเป็นข้อได้เปรียบในการรักษากลุ่ม adm ไว้เพื่อให้ผู้ใช้ adm ทุกคนสามารถอ่านบันทึกได้

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

  4. เปลี่ยนความเป็นเจ้าของของโฟลเดอร์ /var/lib/tomcat7/webapps

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

  5. หากทำงานบนพอร์ต 80/443 บน Ubuntu 14.04 คุณต้องเปลี่ยนความเป็นเจ้าของไฟล์ authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. เปลี่ยนความเป็นเจ้าของโฟลเดอร์การทำงาน

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. ทำให้ไฟล์ config สามารถอ่านได้ ที่นี่คุณมีสองตัวเลือก: เพิ่มผู้ใช้ใหม่ในกลุ่ม tomcat7 โดย:

    sudo usermod -a -G tomcat7 newuser

    ... หรือเปลี่ยนการเป็นเจ้าของไฟล์ปรับแต่ง:

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

  8. หากคุณมีไฟล์อื่นที่เว็บแอปของคุณกำลังเข้าถึงอยู่เช่นไฟล์กำหนดค่าไฟล์บันทึกเป็นต้นคุณต้องเปลี่ยนความเป็นเจ้าของไฟล์เหล่านั้นด้วย

  9. ตอนนี้ทุกอย่างควรพร้อมที่จะเปิดให้บริการอีกครั้งด้วยผู้ใช้ใหม่

แก้ไข 2: หลังจากอัปเกรดเป็น tomcat 8 และ Ubuntu 18.04 มีปัญหาอื่นปรากฏขึ้นเมื่อเรียกใช้ tomcat ในฐานะผู้ใช้อื่น ในสคริปต์/etc/init.d/tomcat8บรรทัดต่อไปนี้ดูเหมือนจะเปลี่ยนโฟลเดอร์หลักของผู้ใช้ tomcat แต่ผลลัพธ์ไม่ใช่สิ่งที่คุณต้องการหากคุณใช้ผู้ใช้อื่น

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

โดยการลบหรือแสดงความคิดเห็นบรรทัดนี้คุณสามารถหลีกเลี่ยงการเปลี่ยนแปลงโฟลเดอร์บ้านสำหรับผู้ใช้ Tomcat ใหม่


มีปัญหาใหญ่กับคำตอบของคุณ เมื่ออัพเกรดแพ็คเกจ Tomcat7 ครั้งต่อไป (แก้ไขปัญหาความปลอดภัย / แก้ไขข้อผิดพลาด) การตั้งค่าของคุณจะหยุดทำงานเนื่องจาก apt จะติดตั้งเวอร์ชันแพคเกจ tomcat7 ใหม่โดยใช้ผู้ใช้เดียวกัน (tomcat7) อีกครั้ง ดังนั้นคุณจะไม่สามารถทำการอัพเกรดแบบอัตโนมัติได้และต้องจำไว้ว่าต้อง chown หลังจากการอัพเกรดแต่ละครั้ง
user323094

ฉันไม่ได้ตระหนักถึงสิ่งนั้นและฉันไม่มีวิธีแก้ปัญหาที่ดีเลยในตอนนี้ ข้อเสนอแนะใคร?
stenix

ไม่มีไฟล์ดังกล่าวใน Tomcat9
Stephane
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.