2009-02-23 23 views
5

Chúng tôi có một cửa hàng ba được phát triển cục bộ dựa trên các cây b mà tôi muốn sử dụng để lưu trữ liên tục trong một số ứng dụng servlet. Thay vì nhúng các tệp chỉ mục b-tree trong servlet .war, tôi muốn lưu trữ chúng tại một vị trí đã biết và có các servlet truy cập trực tiếp chúng. Tất cả điều này hoạt động trong Jetty, nhưng làm tăng một ngoại lệ bảo mật khi tôi thử nó trong Tomcat. Tôi nói rằng mô hình bảo mật của Tomcat yêu cầu quyền rõ ràng đối với một servlet để truy cập các tệp bên ngoài cây thư mục nơi .war được giải nén. Nếu tôi đã hiểu Tomcat (phiên bản 5.5) tài liệu một cách chính xác, sau đây được bổ sung vào catalina.policy nên cho phép servlet để truy cập thư mục chứa các tập tin chỉ số là:Cài đặt catalina.policy để cho phép truy cập tập tin bởi servlets

grant codeBase "jar:file:${catalina.home}/webapps/mytestapp/-" 
{ 
    permission java.io.FilePermission "/var/data/tdb/-", "read, write, delete"; 
} 

Tuy nhiên, tôi vẫn nhận được một ngoại lệ an ninh:

java.io.FileNotFoundException: 
        /var/data/tdb/kb/node2id.idn (Permission denied) 
    at java.io.RandomAccessFile.open(Native Method) 
    ... 

Để đánh dấu các lỗi câm rõ ràng: Tôi đã kiểm tra xem tệp chỉ mục có đúng vị trí, với quyền chính xác và không bị hỏng hay không. Bất kỳ gợi ý hay gợi ý nào về những gì tôi đã sai trong các thiết lập bảo mật sẽ được nhận biết ơn.

+0

Bạn có thể đăng cách bạn mở tệp/mã bạn đang sử dụng để làm như vậy không? –

+0

Bạn đang chạy selinux? Nếu vậy, bạn có thể cần phải cấu hình selinux để nó cho phép truy cập vào thư mục đó bằng Java. – Eddie

Trả lời

4
java.io.FileNotFoundException: 
       /var/data/tdb/kb/node2id.idn (Permission denied) 

Đây là HĐH của bạn từ chối truy cập, chứ không phải bảo mật Java. Nếu đó là bảo mật Java, bạn sẽ nhận được AccessControlException (hoặc một số hình thức khác là SecurityException). Người dùng bạn đang chạy quá trình Tomcat có lẽ không có quyền truy cập vào tệp đó.

+0

Xin chào Tom, Cảm ơn thông tin. Đó là suy nghĩ đầu tiên của tôi, nhưng tôi đã chown'ed và chgrp'ed các tập tin, và thư mục họ đang ở, cho cùng một người dùng và nhóm như quá trình Tomcat. Tuy nhiên, nó mang lại cho tôi một con trỏ để điều tra. Cảm ơn. –

+1

Tom đã đúng, đó là một vấn đề quyền truy cập tập tin hệ điều hành, không phải Tomcat. Tôi đã không hoàn toàn có đến dưới cùng của nó, nhưng tạm thời mở quyền truy cập tập tin trên máy chủ thử nghiệm để một rw loại bỏ các ngoại lệ. Bây giờ tôi chỉ cần tìm ra một thiết lập hạn chế hơn mà không để cửa hàng mở rộng! –

Các vấn đề liên quan