Announcement

Collapse
No announcement yet.

tomcat 5.0 mit symlinks auf Win2008

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • tomcat 5.0 mit symlinks auf Win2008

    Hallo zusammen,
    wir hatten bisher eine web-Anwendung auf tomcat 5.0 und SuSe 10.2 (JDK 1.4.2), jetzt muss diese auf Windows 2008 Server. Das Ding ist SEHR umfangreich, so dass ein Upgrade auf den neusten Stand von Tomcat und Java nicht in Frage kommt.

    Um den Übergang möglichst schmerzfrei zu gestalten, wollte ich die Pfade beibehalten (geht auch: /srv/www/tomcat5 wird als C:\srv\www\tomcat5 interpretiert). Dummerweise waren einige Verzeichnisse als Symlinks eingerichtet. Diese sind auch unter Windows möglich, aber bei Zugriff auf Symlinks, die auf Netzwerkfreigaben zeigen, passiert folgendes:

    File f = new File ([Symlink-Pfad/Ordner/Datei]);
    System.out.println(f.exists());

    gibt "false" zurück, wenn der Code aus einer JSP ausgeführt wird, aber "true", wenn man die "normale" JRE verwendet. Ich vermute, dass Tomcat die Runtime-Umgebung anders initialisiert. Hat jemand eine Idee?

  • #2
    Hi ydzh,
    Tomcat folgt grundsätzlich keinen Symlinks, weil das als Sicherheitsrisiko eingestuft wird. Jemand könnte nämlich einen Symlink zu einem nicht öffentlichen Verzeichniss in Deine Applikation einschmuggeln und der Tomcat würde dessen Inhalt dann im www veröffentlichen.

    Wenn man trotz des Risikos möchte, dass der Tomcat symlinks folgt, muss man ihm das explizit sagen. Dazu folgender Link: http://entwickler-forum.de/showthread.php?t=33791
    Das hast Du vielleicht, bei der Neuinstallation unter Windows vergessen.

    Gruß ngomo
    http://www.winfonet.eu

    Comment


    • #3
      Danke

      Den Trick kenne ich aus linux - dort funktioniert das auch. Unter Windows Server 2008 aber nicht. Hier geht es nicht (nur) darum, dass der Tomcat auf eine externe Ressource zugreifen soll, die über ein Symlink zu erreichen ist (Beispiel: ein <a href="..."> verweist auf eine PDF-Datei), sondern die JSP (also die java-Klasse, die im Container Tomcat ausgeführt wird) - diese hat mit der Logik, die über allowLinking gesteuert wird, nichts zu tun... Habe auch mal "case sensitive" (wie auch immer das Parameter tatsächlich heisst) ausgeschaltet - half auch nichts.

      Comment


      • #4
        Ev. in den Policies mit einer FilePermission
        Christian

        Comment


        • #5
          Tomcat als Service?

          Ich hab grad überlegt, vielleicht folgt der Tomcat zwar dem Symlink, aber sieht das Netzlaufwerk einfach nicht. Den Mount des Netzlaufwerkes macht man ja als ein bestimmter User. Wenn der Tomcat als Service läuft, könnte es ja sein, dass der Mount, in dem Context, in dem der Tomcat läuft garnicht sichtbar ist. Ich bin kein Windows Experte und hab auch kein Windows zur Hand, um das zu testen. Aber es müsste sich leicht herausfinden lassen, ob das evtl. die Ursache ist, indem Du
          • entweder den Tomcat über catalina.bat manuell startest, nachdem das Netzlaufwerk gemounted ist
          • an einer Stelle im Code die "echte" Pfadangabe reinschreibst, statt des Symlinks,
          • oder mit der Methode File.listRoots() schaust, ob das Netzlaufwerk überhaupt angezeigt wird

          Gruß ngomo
          http://www.winfonet.eu

          Comment


          • #6
            ngomo: muss ich testen, Dankeschön!

            Christian Marquardt: wie meinst Du das genau? (das sagt mir irgendwie nichts )

            Comment


            • #7
              Tatsache! Das hängt mit dem Benutzer zusammen. Habe jetzt die Version heruntergeladen, die Stapeldateien mit an Bord hat - dort klappt alles (wird ja in der Sitzung ausgeführt). Die andere Variante läuft als Dienst.

              Jedenfalls weiss ich jetzt, wo man suchen soll. Vielen Dank an alle!

              Comment

              Working...
              X