Hallo,
ich hoffe sehr, dass mir hier jemand weiterhelfen kann.
Ich verwende procmail zum sortieren der von fetchmail abgeholten emails. Fetchmail wird unter dem user "user1" mittels "fetchmail -d 120" gestartet. Die letzte Zeile des .fetchmailrc dieses Nutzers ist: "mda /usr/bin/procmail", hiervon wird also procmail gestartet.
In /home/user1/.procmailrc habe ich eine Regel:
[ins]
:0c
* ^To.*
bla@blub.de
| /home/user1/skript.py
[/ins]
Die eingehende Email, die dem Kriterium entspricht, wird an ein python-skript "sktript.py" weitergeleitet:
[ins]
#!/usr/bin/python2
[...][/ins]
[ins]os.system("sudo chown "+str(user)+" "+str(file_path))
os.system("sudo chmod 777 "+str(file_path))[/ins]
[ins]os.system("sudo id > /home/user1/who")
[/ins]
Das skript ist hier auf den Teil gekürtzt, um das es mir geht: Ich will aus diesem Skript heraus den Besitzer und die Zugriffsrechte auf eine Datei anpassen, das ich mit den Rechten des user1 nicht kann. Das skript an sich tut, wenn man es über die Kommandozeile startet, z. B. mit "echo bla | ./skript.py" genau das, was es soll. Aus procmail aufgerufen jedoch funktioniert dieser Teil des skriptes nicht.
Zu debugging-Zwecken habe ich die letzte zeile "os.system("sudo id > /home/user1/who")" eingefügt, um zu sehen, mit welchen User-rechten dieses Skript aus procmail heraus gestartet wird.
Eigentlich müsste es nach meiner Einschätzung user1 sein, denn unter user1 wird fetchmail gestartet, der dann procmail aufruft, der dann das skript aufruft.
Jedoch funktioniert das sudo in diesem Falle nicht.
lautet die Zeile:
"os.system("id > /home/user1/who")", so gibt es in der Datei who die Korrekten Werte des Nutzers user1 zurück.
bei "os.system("sudo id > /home/user1/who")" hingegen bleibt die datei leer.
Ich verstehe leider beim besten willen nicht, warum das sudo hier funktioniert, wenn das skript direkt in der Kommandozeile gestartet wird, über procmail hingegen nicht, und brauche wirklich wirklich dringend eine Lösung!
Vielen Dank für eure Hilfe!