thực hành tốt nhất để cấp quyền truy cập cho người dùng cho tomache apache


22

Tôi có một hộp Linux đang được chia sẻ bởi các nhà phát triển khác nhau. Họ muốn triển khai các tệp tin chiến tranh của họ trong tomache apache ở vị trí được chia sẻ (/ opt / tomcat).

Vì họ không có quyền truy cập sudo, tôi phải thay đổi quyền thư mục cho thư mục tomcat.

cấu trúc thư mục dưới /opt/tomcatlà -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Các thực tiễn tốt nhất trong tình huống trên - Quyền truy cập phù hợp nhất với người dùng là gì? Hiện tại, tôi đã thay đổi quyền thành 777 thành ứng dụng web và nhật ký.

Cảm ơn

Câu trả lời:


32

Tôi làm theo cách này:

Chúng tôi đặt người dùng tomcat làm chủ sở hữu thư mục của tomcat:

# chown -R tomcat:tomcat /opt/tomcat

Người dùng không thể sửa đổi cấu hình của tomcat:

# chmod -R g+r /opt/tomcat/conf

Người dùng có thể sửa đổi các thư mục khác:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Kích hoạt bit dính cho các tệp mới giữ quyền được xác định:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Cuối cùng, chúng tôi thêm nhóm tomcat mà chúng tôi muốn người dùng có thể sử dụng tomcat:

# usermod -a -G tomcat MIUSER

4
Nếu được thực hiện mà không có thẻ -a, bạn sẽ thêm người dùng vào nhóm tomcat, nhưng xóa MIUSER khỏi tất cả các nhóm khác mà họ thuộc về (điều này có nghĩa là không còn nhóm sudo nữa). Tôi chỉ cần hành động nhanh chóng để khôi phục các nhóm của mình trên tài khoản chính trên một trong các máy chủ của mình, truy xuất chúng từ một phiên cũ mà tôi vẫn giữ các nhóm đó. Một lời cảnh báo cho những người dùng khác đang đọc câu trả lời này.
Axoren

Tôi đã thêm tùy chọn để trả lời. Cảm ơn
intropedro

Làm thế nào để Tomcat bắt đầu như một người dùng tomcat? Của tôi được bắt đầu như một deamon và cho đến bây giờ nó chạy như root.
Stephane

1
Xin chào Stephane, Trong Ubuntu, Tomcat đang thực thi với người dùng tomcat và nó nằm trong tệp / etc / default / tomcat8 với các biến TOMCAT8_USER và TOMCAT8_GROUP. Trong những người khác linux tôi không biết.
intropedro

Không +sđặt ID người dùng / nhóm? Các trang người đàn ông nói +tlà dính bit.
bmaupin

13

Các Non-Tomcat settingsphần của howto an ninh của Tomcat cung cấp thông tin hữu ích về chủ đề này. Xem tại đây:

Tomcat không nên được chạy dưới người dùng root. Tạo một người dùng chuyên dụng cho quy trình Tomcat và cung cấp cho người dùng đó các quyền cần thiết tối thiểu cho hệ điều hành. Ví dụ: không thể đăng nhập từ xa bằng người dùng Tomcat.

Quyền truy cập tập tin cũng nên được hạn chế phù hợp. Lấy các ví dụ Tomcat tại ASF làm ví dụ (trong đó việc triển khai tự động bị vô hiệu hóa và các ứng dụng web được triển khai dưới dạng thư mục đã phát nổ), cấu hình tiêu chuẩn là có tất cả các tệp Tomcat được sở hữu bởi root với nhóm Tomcat và trong khi chủ sở hữu có quyền đọc / ghi , nhóm chỉ có đọc và thế giới không có quyền. Các ngoại lệ là các bản ghi nhật ký, temp và thư mục công việc thuộc sở hữu của người dùng Tomcat chứ không phải root . Điều này có nghĩa là ngay cả khi kẻ tấn công xâm phạm quy trình Tomcat, chúng không thể thay đổi cấu hình Tomcat, triển khai các ứng dụng web mới hoặc sửa đổi các ứng dụng web hiện có. Quá trình Tomcat chạy với một số lượng lớn 007 để duy trì các quyền này.


Tôi tự hỏi nếu cách tiếp cận được mô tả có thể được chấp nhận không chỉ trong Tomcat mà còn với các dịch vụ khác (cơ sở dữ liệu, proxy ngược, v.v.). Bạn có nghĩ rằng nó khả thi / khôn ngoan?
Paolo

1

Bạn cần tuân theo nguyên tắc đặc quyền tối thiểu . Máy chủ (có thể www-data, nhưng bạn sẽ cần kiểm tra) cần có khả năng đọc hầu hết các tệp (giả sử tất cả) và chỉ ghi vào nhật ký. Các nhà phát triển web được phép viết ở nơi họ cần. Đặt bit dính trên các thư mục để chỉ chủ sở hữu của tệp có thể xóa nó.

Trong thực tế, bạn cần tạo một nhóm (ví dụ webdev) và thêm tất cả các nhà phát triển và máy chủ vào đó ( usermod -aG webdev <user>hoặc usermod -A webdev <user>tùy thuộc vào hương vị Linux của bạn). chowntất cả các tệp và thư mục cho người dùng máy chủ web, chmod tất cả các thư mục thành 500 và tất cả các tệp thành 400 (ngoại trừ trong binđó các tệp thực thi cũng phải là 500).

Cấp quyền ghi cho /opt/tomcatnhóm (đó sẽ là 570) và đặt bit dính để họ chỉ có thể xóa các tệp mà họ sở hữu (chmod 1570). Cấp quyền cho máy chủ ghi nhật ký và đọc quyền cho nhà phát triển (0740 cho thư mục, 0640 cho các tệp, bit dính có lẽ là không cần thiết và không bao giờ cấp cho tệp, chỉ các thư mục, vì nó có ý nghĩa khác nhau (thực thi với sự cho phép của chủ sở hữu khi tập tin được thực thi)).

Sau đó, bạn sẽ cần cấp quyền ghi (1570) cho webdevmột số thư mục. Bạn sẽ cần một số thử nghiệm và lỗi ở đây, và nó có thể phụ thuộc vào ứng dụng. Các thư mục đó phải là 1570, trong khi một số khác có thể là 0500).

Các nhà phát triển sẽ cần cấp quyền truy cập đọc trên các tệp của họ cho nhóm để máy chủ có thể đọc chúng (đó là 640) và cũng thực thi trên các thư mục (đó là 750).


1

Tôi nghĩ rằng câu trả lời được chấp nhận của @ intropedro là một câu trả lời hay. Thật đáng để chỉ ra rằng việc sử dụng trình cài đặt gói có thể tiết kiệm rất nhiều vấn đề đau đầu - ít nhất là cho Tomcat 7 trên Ubuntu apt-get install tomcat7tạo ra một bộ thư mục cài đặt "chuẩn" hơn là:

  • /etc/tomcat7 cho các tập tin cấu hình,
  • /var/lib/tomcat7 cho các thư viện cốt lõi và
  • /usr/share/tomcat7 cho các tài nguyên được chia sẻ.

Tất cả các quyền được thiết lập chính xác theo nguyên tắc đặc quyền tối thiểu, như vậy việc thêm người dùng vào nhóm tomcat7là đủ để cho phép triển khai. Hơn nữa, máy chủ tomcat được thiết lập như một dịch vụ có thể được khởi động và dừng như những dịch vụ khác (ví dụ sudo service tomcat starthoặc thay thế /etc/init.d/tomcat start). Tomcat bắt đầu khởi động lại tự động và có lệnh "khởi động lại". Tôi chắc chắn có một gói yum tương đương cho người dùng RHEL / CentOS. (Và vâng, có một trình cài đặt homebrew cho các cài đặt OSX cục bộ).

Nếu bạn gặp sự cố, có một tiện ích tuyệt vời /usr/share/binđược gọi là configtest.shbáo cáo nếu có quyền hoặc các lỗi khác. Lưu ý, có một lỗi mở gợi ý thêm một số liên kết tượng trưng .

Chúng tôi vẫn đang chạy Ubuntu trusty(14.04); Đối với những người chạy các phiên bản gần đây hơn, tôi tin rằng có một repo Tomcat 8 apt-get.

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.