Tomcat 5.5 + MySQL pod Debianem i uprawnienia

Tematy związane z oprogramowaniem, instalacją, konfiguracją
adam_s
Posty: 1
Rejestracja: 17 stycznia 2009, 16:30

Tomcat 5.5 + MySQL pod Debianem i uprawnienia

Post autor: adam_s »

Po pierwsze, witam wszystkich, to mój pierwszy post na tym forum :)

Jak sądzę, być może zadaje to pytanie na nie tym forum co trzeba niemniej problem mam dość dziwny i odnoszę wrażenie, że to jednak jest w jakimś stopniu kwestia systemu.

Mam aplikację Webową (servlet) działającą na tomkacie 5.5 i Mysql 5.0 wszystko postawione na vpsie.
Próbuję podłączyć do bazy danych, jeśli robię to z domu (Windows) wszystko działa poprawnie, jeśli z poziomu ,,servletu'' (ten sam komputer co MySQL) dostaje taki wyjątek:
java.net.SocketException
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5725 connect,resolve)

STACKTRACE:

java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5725 connect,resolve)
at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:407)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:268)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
Google generalnie podpowiada, że mam wpisać coś w stylu:
permission java.net.SocketPermissin "127.0.0.1:5725", "connect,resolve,listen,accept";
do pliku .policy.

I tu moje pytanie, którego?

Kod: Zaznacz cały

find / -name "*.policy" zwraca
/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/jre/lib/security/java.policy
/usr/lib/jvm/java-1.5.0-sun-1.5.0.16/jre/lib/security/javaws.policy
/etc/tomcat5.5/policy.d/50user.policy
/etc/tomcat5.5/policy.d/04webapps.policy
/etc/tomcat5.5/policy.d/03catalina.policy
/etc/tomcat5.5/policy.d/01system.policy
/etc/tomcat5.5/policy.d/02debian.policy
/etc/java-1.5.0-sun/security/java.policy
/var/lib/tomcat5.5/conf/catalina.policy
Czy jest możliwe, że są jakieś pliki "ukryte" poza tą listą?

Dotychczas wypróbowałem:
/etc/tomcat5.5/policy.d/04webapps.policy
/var/lib/tomcat5.5/conf/catalina.policy
/etc/java-1.5.0-sun/security/java.policy
Bez skutku.

my.cnf zawiera linijki:
[client]
port = 5725
socket = /var/run/mysqld/mysqld.sock

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 5725

#bind-address = 127.0.0.1 //tej opcji próbowałem z # i bez
Inne linijki chyba nie są istotne w tym kontekście (jak są to powiedzcie proszę, które to wkleję).

Nie mam pomysłu co robić dalej i trochę mnie załamka bierze, jeśli macie jakikolwiek pomysł, to proszę o pomoc.


Pozdrawiam

Adam

[ Dodano: 2009-01-18, 10:16 ]
Witam wszystkich ponownie

Dwa dni nad tym problemem siedziałem zanim tu napisałem i nie mogłem wpaść na rozwiązanie, po napisaniu rozwiązanie znalazłem w kilka godzin ;-)

W sumie okazało się, że problem nie ma związku z Debianem. Niemniej być może komuś się przyda rozwiązanie, więc je tu zamieszczę.

Istotą problemu jest fakt, że nie wystarczy uprawnić webaplikacji do połączeń na dany IP i port
lecz trzeba również to zrobić ze sterownikiem używanym przez aplikację

tak więc w pliku 04webapps.policy trzeba umieścić dwie sekcje:

ta odpowiada za uprawnienia dla sterownika jdbc

Kod: Zaznacz cały

grant codeBase "jar:file:/var/lib/tomcat5.5/webapps/moj2/WEB-INF/lib/mysql-connector-java-5.0.8.jar!/-" {
permission java.net.SocketPermission "127.0.0.1:3306", "resolve,listen,accept,connect";
permission java.security.AllPermission ;
};
ta za uprawnienia dla aplikacji

Kod: Zaznacz cały

grant codeBase "file:/var/lib/tomcat5.5/webapps/moj2/-" {
permission java.net.SocketPermission "127.0.0.1:3306", "resolve,connect,listen,accept";
permission java.security.AllPermission;
};
 

Pozdrawiam

Adam
ODPOWIEDZ