Hallo!
Habe hier ein Problem, dem ich nicht so einfach auf den Grund kommen kann:
Wie bestimmt man unter linux, welche FilePermissions (read, write, execute) gesetzt sind, wenn man mit Java ein File erstellt?
Ich habe eine Webapplikation geschrieben (Servlet), die JPEGs bei Bedarf einließt, auf eine andere Größe bringt und dann unter einem anderen Namen wieder ablegt.
Die abgelegten Files bekommen aber von Java standardmäßig den mode 640 - Sollten aber 750 haben, um über den Webserver erreichbar zu sein.
Das setzen der Permission über einen Systemcall (java.lang.Runtime.getRuntime().exec(„chmod …“)) empfinde ich als ziemlichen Workaround - Ausserdem dürfte er mit dem eingesetzten Securitymanager nicht funktionieren.
Hat irgendwer eine Idee? Meine derzeitige Lösung besteht darin, das File bei Bedarf über das Servlet auszulesen und dann direkt an den Browser weiterzugeben… Was ja eigentlich auch nicht Sinn der Sache ist 
mfG,
J.P.Jarolim
Hallo,
spricht irgendetwas dagegen das außerhalb der VM über umask
zu lösen ?
Gruss
Enno
Nebenwirkungen umask?
Hi!
Erstmal danke für deine Antwort -
spricht irgendetwas dagegen das außerhalb der VM über umask
zu lösen ?
Eigentlich sollte dieser Thread in ein anderes Forum wandern 
Trotzdem:
Regelt umask generell, in welchem mode files von einem bestimmten User angelegt werden?
Das spezielle Problem hier besteht darin, dass die Servlet-Engine als root auf der maschine läuft. Ein Security Manager regelt dann explizit, was einzelne Kunden mit Java
machen können.
Da ich mich mit Linux bzw. Unix nicht allzu gut auskenne: Könnte umask in Verbindung mit dem User root zu unangenehmen Nebenwirkungen führen?
Vielen Dank im Vorraus,
mfG,
J.P.Jarolim
Hallo,
Regelt umask generell, in welchem mode files von einem
bestimmten User angelegt werden?
Ja. In der Tat würde ich die umask des root-Users
nicht ändern. Muß der Web-Server unter Root-Rechten
laufen ? Ein eigener User, dem man die OS- und
architekturspezifische Konfiguration aufdrücken
und damit den Java-Code frei davon halten kann,
wäre m.M. die sauberste Lsg.
Gruss
Enno
Hallo,
Das spezielle Problem hier besteht darin, dass die
Servlet-Engine als root auf der maschine läuft.
Hat zwar mit deinem eigentlichen Problem nichts zu tun, wollte nur sagen, dass das eine ganz schlechte Idee ist.
Die Servlet-Engine und der Webserver sind nach aussen exponiert und egal wie sicher du sie machst, du solltest auch immer davon ausgehen, dass es jemand gelingen könnte mit den Rechten die der Webserver hat Dinge auszuführen. D. h. der Webserver bekommt einen eigenen User der wirklich nur die paar Dinge darf die der Webserver können muss (z. B. nicht mal lesenden Zugriff in irgendwelche anderen Verzeichnisse als das des Webservers).
Grüße, Robert
Hi.
Hat zwar mit deinem eigentlichen Problem nichts zu tun, wollte
nur sagen, dass das eine ganz schlechte Idee ist.
Nein wirklich
Ist halt so, dass der Server nicht der meine ist und ich diesen Tip schon weitergegeben habe. Der Standpunkt des Betreibers ist, dass die Fritzen von SUN wohl wissen, was sie tun, wenn sie einen vorkonfigurierten Webserver mit Java verkaufen.
Ich werde aber weiterhin versuchen, den Betreiber umzustimmen. Bis jetzt hat er eh einige Ratschläge angenommen 
Die Servlet-Engine und der Webserver sind nach aussen
exponiert und egal wie sicher du sie machst, du solltest auch
immer davon ausgehen, dass es jemand gelingen könnte mit den
Rechten die der Webserver hat Dinge auszuführen. D. h. der
Webserver bekommt einen eigenen User der wirklich nur die paar
Dinge darf die der Webserver können muss (z. B. nicht mal
lesenden Zugriff in irgendwelche anderen Verzeichnisse als das
des Webservers).
Das genze läuft derzeit unter einem Security Manager, in der man ganz explizit angeben muß, was die Servletengine (also Java) machen darf oder nicht. Lesende und Schreibende Zugriffe sind da nur im User-Verzeichnis gestattet.
Aber selbst die Tomcatentwickler bescheinigen dieser Lösung nur beschränkte Sicherheit, da man ja z.B. auf die Klassen von Tomcat zugreifen kann - so man sie kennt.
Auf jeden Fall Danke - Ich hätte den gleichen Tip auch abgegeben 
mfG,
J.P.Jarolim
Grüße, Robert