os.tempnam nutzt Vorgabeverzeichnis nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo,

mir ist eben aufgefallen, dass bei meinem Python 2.4.1 das Vorgabeverzeichnis bei os.tempnam nicht berücksichtigt wird:

Code: Alles auswählen

import os
sName = "test"
sNeuerName = os.tempnam("c:\\python24", sName+"_")
print sNeuerName
Bei mir wird ein Pfad im Eigene Dokumente-Ordner zurückgegeben. Bei 2.2 unter HP-UX funktioniert das ganz gut. Mache ich etwas falsch oder muss ich da einen Trick anwenden?

Und wo ich schon wieder dabei bin, euch mit Fragen zu überhäufen: gibt es einen Weg, diese Unsicherheitswarnung (oder wenigstens alle Warnungen) zu unterdrücken?

Vielen Dank für eure Hilfe,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Michael Schneider hat geschrieben:Und wo ich schon wieder dabei bin, euch mit Fragen zu überhäufen: gibt es einen Weg, diese Unsicherheitswarnung (oder wenigstens alle Warnungen) zu unterdrücken?
Die Warnung ernst nehmen und tmpfile() benutzen, so wie die Dokumentation vorschlägt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Leonidas hat geschrieben:
Michael Schneider hat geschrieben:Und wo ich schon wieder dabei bin, euch mit Fragen zu überhäufen: gibt es einen Weg, diese Unsicherheitswarnung (oder wenigstens alle Warnungen) zu unterdrücken?
Die Warnung ernst nehmen und tmpfile() benutzen, so wie die Dokumentation vorschlägt?
Hi Leonidas,

das hilft mir leider nicht weiter, denn scheinbar kann ich weder bei tmpnam, noch bei tmpfile das Verzeichnis spezifizieren, in dem die Dateien abgelegt werden sollen. Den Algorithmus benutze ich eigentlich nur, um noch nicht belegte Dateinamen zu finden. Angriffe sind eher unwahrscheinlich und sym-link Attacken kann man durch Prüfung nach Öffnen der Datei ausschließen.

Aber wenn es eine andere Methode zum ermitteln freier Dateinamen für ein bestimmtes Verzeichnis gibt, würde ich darauf auch umsteigen.

Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Michael Schneider hat geschrieben:Angriffe sind eher unwahrscheinlich und sym-link Attacken kann man durch Prüfung nach Öffnen der Datei ausschließen.
Hi Michael!

Wenn das Problem anders gelöst werden kann, dann sollte man es anders lösen. Wenn nicht, dann muss man sich Bewusst sein, dass ein Sicherheitsrisiko besteht. Die Warnung soll hauptsächlich zum Nachdenken über die Sicherheit anregen. Wenn die Programmsicherheit garantiert kein Problem darstellt, dann ist es auch kein Problem, die Warnung herauszufiltern.

Das geht über das Modul ``warnings``.
Ich glaube, mit ``warnings.filterwarnings()``, kannst du die ausgeworfene Warnung explizit herausfiltern.

Und hier noch der Wink mit dem Betonpfeiler: ;-)
Verwende für temporäre Dateien das Modul ``tempfile``!!! ... und lies dir die Modulbeschreibung komplett durch. --> http://docs.python.org/lib/module-tempfile.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Gerold,

bei os.tmpfile() konnte man kein Verzeichnis angeben, aber das Modul tempname sieht schon besser aus. Mal sehen, was ich davon in Python 2.2 schon nutzen kann.

Nachdenken über Sicherheit ist sicherlich nur selten fehl am Platz (sonst wüsste ich jetzt nicht, was sym-link Attacken sind), aber wenn User das Programm ausführen, ist definitiv der schlechteste Zeitpunkt. ;-)

Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten