Seite 1 von 1

Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 10:12
von Francesco
Eine Sache, die mir öfters unterkommt, ist

Code: Alles auswählen

cfile = file(meinfile, 'wb')
cfile.write("irgendwas")
cfile.close()
Error: Write Access: (mein file), wenn ich den editor mit normalen user rechten gestartet habe und das file eben root rechte hat.

Natürlich könnte ich den Editor als root öffnen, das möchte ich aber nicht. Statt dessen wäre es mir lieber (feststellen, dass der grund die fehlerhaften rechte sind), wenn der benutzer die Gelegenheit bekommt, mit einem Dialog, in dem er das root oder was auch immer passwort eingeben kann, das file dann speichern kann.

wie kann ich am besten feststellen, dass der Grund des Schreiberrors am root recht liegt? Eigentlich könnte ich gleich in die Titel- oder Statuszeile (evtl. mit besonderer Farbe) das kennzeichnen (root oder was auch immer).

Re: Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 11:09
von ichisich
Ha in dem Du das File fragen tust wem es gehört !!

OS-Modul

Wäre wohl eine Möglichkeit.

Code: Alles auswählen

os.access(path, mode)
# und oder
os.stat(path)
#siehe Link unteres Drittel ...

Re: Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 11:35
von Francesco
Ja, danke (das hätt ich eigentlich selbst auch rausfinden müssen/sollen :oops: ). Jetzt bleibt noch die Frage, wie ich das dann wirklich dann auch speichern kann.

Re: Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 13:58
von ichisich
Mir wird nicht ganz klar wie dein Szenario ist.
Du hast einen selbst implementierten Editor !?
Du benutzt einen externen Editor !?
.
.
.


Und was willst Du wo speichern ?
Welches File welche Rechte hat oder wie ?

Warum nicht jedes mal vor dem Öffnen testen wie die Rechtelage ist und dann darauf reagieren ?

Gruß

Re: Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 15:43
von Francesco
ichisich hat geschrieben:Mir wird nicht ganz klar wie dein Szenario ist.
Du hast einen selbst implementierten Editor !?
Du benutzt einen externen Editor !?
Und was willst Du wo speichern ?
Welches File welche Rechte hat oder wie ?
Warum nicht jedes mal vor dem Öffnen testen wie die Rechtelage ist und dann darauf reagieren ?
Gruß
Sorry, ich habe mich nicht klar genug ausgedrückt, das möchte ich hiermit nachholen.

Ich verwende bzw. möchte DrPython erweitern (mit einem Plugin). Es passiert manchmal, dass ich ein File öffne/ändern möchte, das root rechte hat. Man editiert daraufhin und dann kommt man drauf, oje, war ein root file.

Natürlich kann ich mich oder dem Anwender aufmerksam machen, hoppla, das hat Root Rechte, das kannst du nicht speichern, ... und auffordern, mit einem anderen Editor (oder Drpython als Root aufgerufen) zu editieren. Dass das noch hineingehört, ok fehlt noch, hatte ich ohnehin vor.

Ich kann das file auch unter anderen Namen abspeichern (für den Fall, dass ich schon einiges editiert habe und die Änderungen nicht verlieren möchte) und dann die Rechte des Files auf root ändern und unbenennen. Aber praktischer als den Editor mit einer zweiten Instanz (also zusätzlich als root aufzurufen wäre, das file (ausnahmsweise) speichern zu können. Das würde auch das Linux Sicherheitssystem nicht verletzen.

Da gibts ja irgendein ein Bit oder so etwas, was man vorübergehende setzen kann (s uid oder so .. muss ich noch nachsehen). Das schöne wäre, wenn nun (neben dem aufmerksam machen nach dem öffnen des files oder sonstige Kennzeichnung) beim Speichern dann ein Dialog käme, so kann es nicht gespeichert werden (was eh klar ist), mit der Möglichkeit, das root passwort einzugeben und die Datei damit speichern zu können.

Auf die Idee bin ich unter anderem auch deswegen gekommen, weil es im krusader auch so ein useraction script gibt, das erlaubt, in normalen krusader mode (nicht im root mode) ein file mit root rechten editieren zu können. Es kommt ein dialog: "Edit as root" mit einem Texteingabefeld: Password. Wenn das passwort falsch ist, startet es nicht, sondern fragt nochmals oder man kann abbrechen.

Am einfachsten (ist ein wenig russisch) wäre es einfach, bei files, bei denen man von haus aus weis, dass man sie ändern möchte (zb in /etc oder /usr), einfach die Rechte auf den user zu setzen.

Re: Files mit root rechten schreiben

Verfasst: Freitag 23. Juli 2010, 16:03
von Francesco
Hmm, mittlerweile denke ich, dass es sauberer wäre, den user hinzuweisen, dass der (zb beim öffnen schon) das file ohnehin nicht speichern kann und er den editor (evtl. als zweite instanz) mit root rechten (mit sudo oder gksudo) starten soll.

Nachtrag: Wen es irgendwen noch interessieren sollte. Ich habe es eine mehr oder weniger wilde Art gelöst. Falls es nicht zum Speichern ist, nehme ich an, die Rechte passen nicht. Dabei starte ich python von meinem python programm neu mit gksudo, speichere das file vorher in ein tmpfile, gebe das file als tmpfile (den namen) und den eigentlichen filenamen an das gestartetete (zweite) python (sudo) programm mit, der dann das file als root speichert.