2009-02-23 8 views
5

Mamy lokalnie opracowany potrójny sklep oparty na b-drzewach, który chcę użyć do trwałego przechowywania w wielu aplikacjach serwletów. Zamiast osadzać pliki indeksu b-tree w serwlecie .war, chciałbym przechowywać je w znanej lokalizacji i mieć serwlety do bezpośredniego dostępu do nich. To wszystko działa w Jetty, ale podnosi wyjątek bezpieczeństwa, gdy próbuję go w Tomcat. Powiedziano mi, że model bezpieczeństwa Tomcat wymaga jawnych uprawnień serwletu, aby uzyskać dostęp do plików spoza drzewa katalogów, gdzie rozpakowana jest .war. Jakbym rozumiał (wersja 5.5) Dokumentacja Tomcat prawidłowo, co następuje dodany do catalina.policy powinno pozwolić serwletu aby uzyskać dostęp do katalogów gdzie znajdują się pliki indeksowe są:Ustawienie catalina.policy w celu umożliwienia dostępu do plików przez serwlety

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

Jednak wciąż otrzymuję wyjątek zabezpieczeń:

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

Aby odliczyć oczywiste głupie błędy: Sprawdziłem, czy pliki indeksu znajdują się we właściwej lokalizacji, z odpowiednimi uprawnieniami i nie są uszkodzone. Wszelkie sugestie lub podpowiedzi na temat tego, co mam źle w ustawieniach bezpieczeństwa, zostaną z wdzięcznością przyjęte.

+0

Czy możesz podać, w jaki sposób otwierasz plik/jakiego kodu używasz? –

+0

Czy używasz selinux? Jeśli tak, może być konieczne skonfigurowanie selinux, aby umożliwić dostęp do tego katalogu przez Javę. – Eddie

Odpowiedz

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

To jest odmowa dostępu do systemu operacyjnego, a nie ochrona Java. Gdyby to była ochrona Java, otrzymalibyśmy AccessControlException (lub inną formę SecurityException). Użytkownik, który uruchamia proces Tomcat, prawdopodobnie nie ma dostępu do tego pliku.

+0

Cześć Tom, Dzięki za informacje. To była moja pierwsza myśl, ale już chrupałem i chgrpowałem pliki i katalog, w którym się znajdują, do tego samego użytkownika i grupy, co proces Tomcat. Mimo to daje mi wskaźnik do zbadania. Dzięki. –

+1

Tom miał rację, był to problem z prawem dostępu do plików OS, a nie Tomcat. Nie doszedłem do końca, ale tymczasowo otwierając uprawnienia do plików na serwerze testowym do + rw usuwa wyjątek. Teraz muszę wymyślić bardziej restrykcyjne ustawienie, które nie pozostawi sklepu szeroko otwarte! –