Berechtigungen für eine komprimierte Datei in python @ setz

Ich habe eine Dateitest.txt das ist in einem zip-Archivtest.zip. Die Berechtigungen auftest.txt sind außerhalb meiner Kontrolle, wenn es komprimiert ist, aber jetzt möchte ich, dass sie gruppenbeschreibbar sind. Ich extrahiere die Datei mit Python und möchte nicht in die Shell entkommen.

BEARBEITEN Hier ist, was ich bisher habe:

import zipfile

z = zipfile.ZipFile('test.zip', 'w')
zi = zipfile.ZipInfo('test.txt')
zi.external_attr = 0777 << 16L
z.writestr(zi, 'FOO')
z.close()

z = zipfile.ZipFile('test.zip', 'r')
for name in z.namelist():
    newFile = open(name, "wb")
    newFile.write(z.read(name))

    newFile.close()
z.close()

Dies funktioniert perfekt unter OS X mit 2.5.1, aber nicht auf meiner Home-Box (Debian, Python 2.4 & 2.5) oder auf RHEL 5 mit Python 2.4. Unter allen anderen Betriebssystemen als OS X tritt kein Fehler auf, die Berechtigungen werden jedoch auch nicht geändert. Irgendwelche Ideen warum? Auch wie funktioniertwritestr() Arbeit? Ich weiß, dass ich es hier falsch benutze.

Gibt es eine Möglichkeit, dies ohne @ zu tuos.chmod (Der Benutzer, der die Datei extrahiert, hat keine Berechtigung, @ zu verwendeos.chmod nachdem es extrahiert wurde)? Ich habe vollständigen Schreibzugriff auf die ZIP-Datei.

Mehr Info

> ls -l test.zip
-rwxrwxrwx 1 myuser mygroup 2008-11-11 13:24 test.zip
> unzip test.zip
Archive:  test.zip
  inflating: test.txt 
> ls -l test.txt
-rw-r--r-- 1 myuser mygroup 2008-11-11 13:34 test.txt

Der Benutzer, der extrahiert, ist nichtmyuser, ist aber inmygroup.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage