Chạy Tomcat7 với tư cách là người dùng tomcat7 (hoặc bất kỳ ai khác)


10

Điều gì sẽ là cách được đề xuất để đảm bảo rằng một phiên bản Tomcat7 đang chạy với tư cách là người dùng tomcat7 (hoặc bất kỳ ai khác)?

Tôi cho rằng tôi có thể sửa đổi tomcat7-instance/bin/startup.shtomcat7-instance/bin/shutdown.shvà thêm 'su tomcat7' ở đầu trang.

Trong Tomcat6 tôi nghĩ đó là biến môi trường TOMCAT6_USER.


Nếu bạn đang yêu cầu "cách an toàn" rất có thể sẽ gây ra các cuộc tranh luận. Bây giờ nếu bạn hỏi "làm thế nào để thiết lập một người dùng khác cho tomcat7?" đó là câu trả lời BTW, tomcat bắt đầu với người dùng tomcat, theo tôi nhớ nếu bạn đã cài đặt gói deb ..
Braiam

Câu trả lời:


13

Cách phổ biến nhất là cài đặt tomcat7gói tiêu chuẩn apt-getvà bắt đầu sử dụng:

sudo service tomcat7 start

Người dùng và nhóm mặc định được cấu hình /etc/default/tomcat7như bạn có thể thấy trong đoạn trích này:

# 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 và TOMCAT7_GROUP là những gì tôi đang tìm kiếm. Cảm ơn
Adrian Ber

Tôi đã sửa đổi TOMCAT7_USER trong tomcat7-instance / bin / setenv.sh và khởi động máy chủ. Nhưng nếu tôi hiển thị quá trình sử dụng ps thì người dùng không phải là người được chỉ định trong TOMCAT7_USER.
Adrian Ber

Tại sao bạn không sửa đổi nó trực tiếp trong /etc/default/tomcat7?
David Levesque

Hãy nói rằng tôi có hai phiên bản người dùng Tomcat và tôi muốn khởi chạy chúng với tư cách là những người dùng khác nhau.
Adrian Ber

Đó là một kịch bản tôi không quen thuộc, nhưng trong trường hợp này tôi không nghĩ bạn có thể chạy Tomcat như một dịch vụ và cấu hình trên không áp dụng. Có lẽ bạn nên hỏi một câu hỏi riêng về điều đó.
David Levesque

11

EDIT: Xin vui lòng đọc ý kiến ​​dưới đây! Giải pháp này có thể không áp dụng cho tất cả các tình huống.

Câu trả lời được chấp nhận là rất tốt nhưng vì tôi chạy Tomcat 7 trên Ubuntu 14.04 nên có một số điều tôi cần phải làm để chạy mọi thứ:

  1. Bạn cần dừng dịch vụ tomcat trước khi chỉnh sửa tệp /etc/default/tomcat7. Khi bạn thay đổi người dùng và nhóm, sẽ không còn có thể dừng dịch vụ sử dụng người dùng cũ.
  2. Thay đổi người dùng và nhóm trong tệp /etc/default/tomcat7

  3. Bạn cần thay đổi quyền sở hữu thư mục /var/log/tomcat7và tất cả các tệp của nó. Xin lưu ý rằng việc giữ nhóm adm để tất cả người dùng adm có thể đọc nhật ký là một lợi thế.

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

  4. Thay đổi quyền sở hữu thư mục /var/lib/tomcat7/webapps

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

  5. Nếu chạy trên cổng 80/443 trên Ubuntu 14.04, bạn cần thay đổi quyền sở hữu các tệp authbind:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. Thay đổi quyền sở hữu của thư mục làm việc

    sudo chown newuser:adm /var/cache/tomcat7

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

  7. Làm cho tập tin cấu hình có thể đọc được. Tại đây bạn có hai tùy chọn: Hoặc thêm bạn người dùng mới vào nhóm tomcat7 bằng cách:

    sudo usermod -a -G tomcat7 newuser

    ... hoặc thay đổi quyền sở hữu các tệp cấu hình:

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

  8. Nếu bạn có các tệp khác mà ứng dụng web của bạn đang truy cập, chẳng hạn như tệp cấu hình tệp nhật ký, v.v. thì bạn cũng cần thay đổi quyền sở hữu các tệp đó.

  9. Bây giờ, mọi thứ sẽ sẵn sàng để khởi động lại dịch vụ với người dùng mới.

EDIT 2: Sau khi nâng cấp lên tomcat 8 và Ubuntu 18.04, một vấn đề khác xuất hiện khi chạy tomcat với tư cách người dùng khác. Trong kịch bản /etc/init.d/tomcat8, dòng sau đây dường như thay đổi thư mục chính của người dùng tomcat nhưng kết quả không như bạn muốn nếu bạn đang sử dụng một người dùng khác.

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

Bằng cách xóa hoặc nhận xét dòng này, bạn có thể tránh việc thay đổi thư mục chính cho người dùng tomcat mới.


Có một vấn đề rất lớn với câu trả lời của bạn. Khi nâng cấp gói tomcat7 tiếp theo (sửa lỗi bảo mật / sửa lỗi), thiết lập của bạn sẽ bị hỏng vì apt sẽ cài đặt phiên bản gói tomcat7 mới bằng cách sử dụng lại cùng một người dùng (tomcat7). Vì vậy, bạn không thể thực hiện nâng cấp không giám sát và phải nhớ chown sau mỗi lần nâng cấp.
dùng323094

Tôi đã không nhận ra điều đó và tôi không có bất kỳ giải pháp tốt nào cho nó vào lúc này. Bất cứ đề nghị, bất cứ ai?
stenix

Không có tập tin như vậy trong Tomcat9.
Stephane
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.