แก้ไข: โปรดอ่านความคิดเห็นด้านล่าง! วิธีนี้อาจไม่สามารถใช้ได้กับทุกสถานการณ์
คำตอบที่ยอมรับนั้นยอดเยี่ยม แต่เนื่องจากฉันรัน Tomcat 7 บน Ubuntu 14.04 มีบางสิ่งเพิ่มเติมที่ฉันต้องทำเพื่อให้ทุกอย่างทำงานได้:
/etc/default/tomcat7
คุณจำเป็นต้องหยุดให้บริการคราวก่อนการแก้ไขไฟล์ เมื่อคุณเปลี่ยนผู้ใช้และกลุ่มคุณจะไม่สามารถหยุดบริการโดยใช้ผู้ใช้เก่าได้อีกต่อไป
เปลี่ยนผู้ใช้และกลุ่มในไฟล์ /etc/default/tomcat7
คุณต้องเปลี่ยนความเป็นเจ้าของโฟลเดอร์/var/log/tomcat7
และไฟล์ทั้งหมด โปรดทราบว่ามันเป็นข้อได้เปรียบในการรักษากลุ่ม adm ไว้เพื่อให้ผู้ใช้ adm ทุกคนสามารถอ่านบันทึกได้
sudo chown -R newuser:adm /var/log/tomcat7
เปลี่ยนความเป็นเจ้าของของโฟลเดอร์ /var/lib/tomcat7/webapps
sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps
หากทำงานบนพอร์ต 80/443 บน Ubuntu 14.04 คุณต้องเปลี่ยนความเป็นเจ้าของไฟล์ authbind:
sudo chown newuser /etc/authbind/byport/80
sudo chown newuser /etc/authbind/byport/443
เปลี่ยนความเป็นเจ้าของโฟลเดอร์การทำงาน
sudo chown newuser:adm /var/cache/tomcat7
sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina
ทำให้ไฟล์ config สามารถอ่านได้ ที่นี่คุณมีสองตัวเลือก: เพิ่มผู้ใช้ใหม่ในกลุ่ม tomcat7 โดย:
sudo usermod -a -G tomcat7 newuser
... หรือเปลี่ยนการเป็นเจ้าของไฟล์ปรับแต่ง:
sudo chown -R :newgroup /var/lib/tomcat7/conf/*
หากคุณมีไฟล์อื่นที่เว็บแอปของคุณกำลังเข้าถึงอยู่เช่นไฟล์กำหนดค่าไฟล์บันทึกเป็นต้นคุณต้องเปลี่ยนความเป็นเจ้าของไฟล์เหล่านั้นด้วย
- ตอนนี้ทุกอย่างควรพร้อมที่จะเปิดให้บริการอีกครั้งด้วยผู้ใช้ใหม่
แก้ไข 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 ใหม่