NetBSD File Permissions und Java

GregorK

New Member
Hallo...

ich entwickle an der Java Anwendung Phex die auch von NetBSD Usern benutzt wird. Allerdings haben sich da ein paar Problem ergeben die ich mir absolut nicht erklären kann. Da ich mich mit NetBSD nicht auskenne hoffe ich hier bei euch kann mir jemand helfen das Problem zu lösen.

Es geschieht folgendes:
Das Java Programm erstellt eine Datei mit Namen sharedlibrary.xml.tmp und kopiert nach der Erstellung diese Datei auf den Namen sharedlibrary.xml.
Die sharedlibrary.xml.tmp scheint mit den Rechten '-rwxr-xr-x' angelegt zu werden, die kopierte Datei sharedlibrary.xml bekommt woher auch immer die absolut eigenwillige Rechtekombination '-r-x-wsr--'. Ich kann mir das absolut nicht erklären und habe bisher auch von keinen andern User eines Unix Systems mit ähnlichen Problemen gehört.
Im gesamten Phex Code selbst gibt es eigentlich kein Stelle an der Berechtigungen einer Datei geändert werden. Zu einen möglicherweise existierenden Bug in Java habe ich nichts gefunden. Bleibt die Frage ob es an diese NetBSD Installation liegt oder vielleicht an einer Benutzerkonfiguration??
Allerdings kenne ich mich zuwenig damit aus um hier etwas drüber sagen zu können.

Ausführlich ist das Problem hier in unserem Forum nachzulesen:
http://www.gnutellaforums.com/showthread.php?s=&threadid=52539

Ich würde mich freuen wenn jemand eine Idee hätte, die uns hilft raus zu finden wo das Problem liegen könnte. Es wäre auch interessant ob wissen ob auch andere NetBSD User mit dem Programm Phex das gleiche Problem habe. Oder ob es an dieser einen NetBSD Installation oder User Konfiguration liegt.
Über einen kleinen Erfahrungsbericht diesbezüglich würde ich mich sehr freuen.

Vielen Dank für eure Hilfe,
Gregor

http://www.phex.org
 
Hallo GregorK,

leider arbeite ich nicht mit deinem Programm, deshalb kann ich dir nur indirekt versuchen zu helfen!

Warum änderst du nicht im Anschluß an das Kopieren der 'sharedlibrary.xml.tmp' zu 'sharedlibrary.xml' noch einmal explizit die Dateirechte auf '-rwxr-xr-x' mit den in Java eingebauten Routinen?

Ich programmiere zwar nicht mit Java, sondern eher mit Perl und Python, aber warum sollte das so nicht funktionieren?

Andere Frage:

Wie wären denn die Dateirechte von 'sharedlibrary.xml' , wenn es sich bei der Ursprungsdatei nicht um ein temporäres File handeln würde?
Schon mal simuliert?

Tut mir leid, wenn ich dir sonst nicht weiter helfen kann!

Viel Erfolg!!!

Gruß Frank aus LE
 
franco98 schrieb:
Warum änderst du nicht im Anschluß an das Kopieren der 'sharedlibrary.xml.tmp' zu 'sharedlibrary.xml' noch einmal explizit die Dateirechte auf '-rwxr-xr-x' mit den in Java eingebauten Routinen?
Java bietet leider keine Routinen mit denen man Datei Rechte für user/group/all differenziert ändern kann. Es gibt meines Wissens nur die Möglichkeit eine Datei grundsätzlich auf read-only zu setzen. Das war es dann schon... liegt wohl daran, dass nur angeboten wird was auf allen Systemen gleich ist... nun ja...

franco98 schrieb:
Wie wären denn die Dateirechte von 'sharedlibrary.xml' , wenn es sich bei der Ursprungsdatei nicht um ein temporäres File handeln würde?
Schon mal simuliert?
Wird denn im NetBSD eine Datei die mit .tmp endet anders behandelt? Es wird eigentlich nicht ausdrücklich eine temporäre Datei erzeugt. Sondern eigentlich eine normale Datei der nur .tmp als postfix angehängt wird. Es müsste daher eigentlich bei jeder anderen Endung zur gleichen Konstelation führen... meines Verständnis nach...

Leider hab ich auch nicht die Möglichkeit das ganze schnell mal auf NetBSD zu simmulieren und verschiedene Dinge zu testen, da ich selbst keine Installation zur Verfügung habe. Es würde also immer bedeuten kleine Testprgramme an den User zu schicken und blind versuchen nach einer Ursache zu stöbern...

Gregor
 
GregorK schrieb:
Java bietet leider keine Routinen mit denen man Datei Rechte für user/group/all differenziert ändern kann.

Wie sieht's dann damit aus, ext. Unixbefehle (wird ja wohl für Unix programmiert) zu benutzen?

Ich mache das im Python so, u.a. um Verzeichnisse anzulegen, in Verzeichnisse zu wechseln usw.

Da ja wohl auf jedem Unix chmod, chgrp, chown vorliegen, müßte das evt. auch hier gehen! Ist nicht ganz delikat, aber wozu das Rad erst neu erfinden!

Gruß Frank
 
Naja das ist keine wirkliche Option die mich glücklich macht...
Immerhin gibt es auch einige tausend Windows und Mac installationen. Da würd ich mich nicht so wohl fühlen... Das ist höchstens die letzte Rettung...

Ich hab eher gehofft mir könnt jemand sagen was vielleicht bei diesem User falsch eingstellt sein könnte oder vielleicht dass es auf anderen NetBSD Installationen nicht genauso passiert... dann wüsste ich nämlich es liegt nicht an uns... ;)

Gregor
 
GregorK schrieb:
Naja das ist keine wirkliche Option die mich glücklich macht...
Immerhin gibt es auch einige tausend Windows und Mac installationen. Da würd ich mich nicht so wohl fühlen... Das ist höchstens die letzte Rettung...

Kann ich verstehen! War nur so eine Idee! Vielleicht kann dir ja doch noch ein anderer helfen!

Gruß Frank und viel Erfolg
 
Ich weiß das klingt nicht nach einer sauberen Lösung, aber zumindest solltest sie auf allen Plattformen funktionieren:

Statt die Datei direkt zu kopieren kannst du doch die sharedlibrary.xml.tmp auslesen und in die sharedlibrary.xml streamen. Das ist zwar eine blöde Lösung, aber sie könnte funktionieren.
 
Die umask ist wohl:
Code:
Echelon$ umask     
0022

Welche Kriterien sind wichtig um zu sagen 'unter welchen User' die VM läuft. Reicht root oder nicht root?

[LoN]Kamikaze schrieb:
Statt die Datei direkt zu kopieren kannst du doch die sharedlibrary.xml.tmp auslesen und in die sharedlibrary.xml streamen. Das ist zwar eine blöde Lösung, aber sie könnte funktionieren.
Genau das wird gemacht. Es gibt in Java im Prinzip keine andere Möglichkeit eine Datei zu kopieren.

Gregor
 
Zurück
Oben