Dateirechte Ändern on-upload

K

kolvar

Mitglied
Moin moin,

ich habe folgendes Problem:
Ein User lädt Dateien via FTP auf unseren Server, die automatisch mit den Rechten 644 ausgestattet werden. Ein Script soll via Cronjob nun diese Dateien auslesen, verarbeiten und schließlich löschen. Leider wird dabei der Cronjob unter einem anderen Useraccount ausgeführt (nicht root), was entsprechend dazu führt, dass die Datei zwar ausgelesen, aber nicht gelöscht werden kann.
Daher die Frage: Wie kann ich die Rechte beim FTP-Upload so ändern, dass auch andere User auf die Datei zugreiffen können?
Danke im Voraus (vor allem, weil ich weiß, dass ich das eigentlich wissen müßte)
 
Hi,

wie wäre ein (als root) ?
Code:
chown cronjobuser verzeichnis
chmod u+rwx verzeichnis

gruß Karru
 
Oder beide User in die gleiche Gruppe packen, und den FTP-Server so konfigurieren, dass die Dateien automatisch dieser Gruppe gehören und für die Gruppe schreibbar sind.
 
Oder beide User in die gleiche Gruppe packen, und den FTP-Server so konfigurieren, dass die Dateien automatisch dieser Gruppe gehören und für die Gruppe schreibbar sind.
Jau, genau, das würde ich gerne tun. Aber wie mache ich das?
 
Das dürftest du der Doku deines FTP-Server entnehmen können. Wenn du Pech hast, musst du evtl. auch einen anderen FTP-Server einsetzen, wenn dein aktueller sowas nicht kann. Kommt halt ganz auf den Server an.
 
So, es scheint ProFTPD zu laufen, allerdings werde ich aus der Doku nicht schlau, wie ich Dateirechte im Verzeichnis beim Upload ändere. Irgendjemand noch einen Tip?
 
Mhm, bei castaglia war ich nicht, war hier: http://www.proftpd.de/Docs.17.0.html, ganz davon abgesehen, dass es nicht wirklich das ist, was ich brauche (was ich jetzt aber erst mal gemacht habe - bevor ich deinen link hatte), da es ja generell die Rechte ändert und nicht nur für ein Verzeichnis bzw. einen Account, wie ich es brauche (aber wohl nicht ausdrücklich gesagt habe, mist).
 
Kombi aus sudo & chmod?

Hallo,

ist vielleicht ein puzzeliger Ansatz (was spricht übrigens dagegen, diesen einen Cron-Job als root laufen zu lassen?)

[edit]
Ich hab bei mir sowas, aber ich sehe gerade an den Rechten was, das mir nicht gefällt - also erst mal grau hier stehen lassen...

  • ein Script anlegen, das unter "root" läuft und "chmod" auf die Daten macht
  • einen Eintrag in "/etc/soduers", der dem Chronjob-User dieses (und nur dieses) Script ohne Paßwort erlaubt
Damit könnte der Cronjob-User sich doch vermutlich über die "chmod"-Beschränkung hinweg setzen, aber auch nur für die Verzeichnisse, die in diesem Script stehen. Alle anderen User brauchen für das Script das root-Paßwort oder müßten eh "su" machen und brauchen es dann auch.
 
Zuletzt bearbeitet:
Hallo,

ist vielleicht ein puzzeliger Ansatz (was spricht übrigens dagegen, diesen einen Cron-Job als root laufen zu lassen?)

[edit]
Ich hab bei mir sowas, aber ich sehe gerade an den Rechten was, das mir nicht gefällt - also erst mal grau hier stehen lassen...

  • ein Script anlegen, das unter "root" läuft und "chmod" auf die Daten macht
  • einen Eintrag in "/etc/soduers", der dem Chronjob-User dieses (und nur dieses) Script ohne Paßwort erlaubt
Damit könnte der Cronjob-User sich doch vermutlich über die "chmod"-Beschränkung hinweg setzen, aber auch nur für die Verzeichnisse, die in diesem Script stehen. Alle anderen User brauchen für das Script das root-Paßwort oder müßten eh "su" machen und brauchen es dann auch.

Was dagegen spricht? blödes pdadmin, dass die per hand angelegten cronjobs überschreibt und cronjobs immer an einen Account bindet. Das leben könnte so einfach sein ...
zum ersten Vorschlag: wie rufe ich dieses Script cronjob-mäßig auf, wenn ich es nicht als root aufrufen kann?
zum zweiten: mhm, da muß ich mich in die sudoer mal wieder einlesen.

danke erstmal
 
Du kannst in der einfach in der /etc/crontab einen User definieren unter dem ein bestimmter Cron laufen soll:
Code:
m h dom mon dow user  command
 
muss ich mal probieren, gehe aber davon aus, das pdadmin es wieder überschreibt (grrrr)
 
Ist die Idee Unsinn?

Du kannst in der einfach in der /etc/crontab einen User definieren unter dem ein bestimmter Cron laufen soll:
Geht denn das, wenn der Cronjob als nicht-root läuft??
Code:
m h dom mon dow [color=red]root[/color]  command

Ich habe jetzt mal folgendes gemacht:
  • eine Gruppe angelegt "super_commands"
  • User "jens" in diese Gruppe gepackt
  • als root eine Datei angelegt /xyz
    • (die gehört dann natürlich root:root)
  • ein Script "/root/x_chown.sh" angelegt, das chmod $1:$2 /xyz macht
    • (script gehört natürlich root:root)
  • Script angelegt "/usr/local/bin/x_chown", das sudo /root/x_chown.sh macht
    • (dieses Script gehört root:super_commands und ist g+x)
  • mit "visudo" angehängt: jens ALL = (root) NOPASSWD: /root/x_chown.sh
Danach kann ich mit x_chown jens:users die Eigentumsrechte - sogar wenn root:root war - ändern, aber *nur* von dieser einen Datei /xyz - die staht ja im Script.

Wenn man jetzt gar keine Variablen nimmt, sondern alle zu chown-enden Pfade direkt rein schreibt, könnte auf diesen Fall hier übertragen im per Cron-Job gestarteten Script dieses sich die entsprechenden Pfade - und nur die! - kapern und das löschen müßte gehen.

Die Idee ist fummelig, aber ich dachte mir dabei:
  • Kein User muß in eine privilegierte System-Gruppe, um fremde Rechte ändern zu können
  • im Script steht ganz genau, was überhaupt angerührt wird
  • sudo bestimmt, wer das ohne Paßwort darf
  • alle beteiligten Dateien haben Schreibrecht nur für "root"
    (das eigentlich ausführende Script ist sogar in /root)
Ich wäre dankbar für Hinweise, was ich dabei kritisches übersehen haben könnte... oder was sonst an der Idee Unsinn ist
 
Zuletzt bearbeitet:
Geht denn das, wenn der Cronjob als nicht-root läuft??

Die Frage ist hier, ob der Crondaemon nicht als root läuft oder nur der eine Job nicht. Läuft der Crondaemon als root (was er normalerweise tut), dann geht das. Sonst natürlich nur, wenn der Crondaemon mit dem User läuft, der das Skript ausführen soll. Da aber der Crondaemon normalerweise beim Booten über das init-System gestartet wird, läuft er mit höchster Wahrscheinlichkeit als root, denn mir ist keine Konfigurationsdatei bekannt, in der man den User des Crondaemon ändern kann. Das geht nur, wenn man ihn per Hand oder via extra Skript startet.
 
Sieht ziemlich gut aus. Muss ich mir mal nächste Woche dann antun, da ich jetzt erst mal ins WE gehe, um die Grippe doch noch ein wenig mehr zu kurieren (war nicht die pralle Idee heute schon wieder zur Arbeit zu kommen)
 

Ähnliche Themen

[Debian Lenny] Dateirecht Problem

script wird von Cron ausgeführt, aber einige Befehle nicht

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben