stokedfish
Anmeldungsdatum: 25. Mai 2005
Beiträge: 678
|
Hallo, ich habe mich soeben mit crontab beschäftigt und mehrere Artikel darüber gelesen. Das ganze scheint mir eigentlich recht logisch und "einfach" - allerdings habe ich dazu doch noch eine Frage... Wie kann ich unter Ubuntu einen cron als Root ausführen, ohne den Root-Account zu aktivieren? Ich würde ja einfach wie im Wiki beschrieben in die /etc/crontab den cron eintragen als root... Nur - wie soll das gehen, wenn ich den Root-Account doch gar nicht aktiviert habe? Und wenn es trotzdem geht, wieso das? Mein Ubuntu hat ja schliesslich gar keinen Root-Account...
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
Natürlich hat Dein Ubuntu einen Root-Accout. Es wurde nur kein Passwort dafür vergeben und somit kann man sich nicht _anmelden_. Aber zum Beispiel der erste Prozeß überhaupt - genannt init - wird als root ausgeführt. Desweiteren nutzt Ubuntu sudo. Mit sudo können Aktionen mit Rootrechten ausgeführt werden, ohne daß man sich vorher als root hätte anmelden müssen (siehe hier: sudo ) Zu Deiner Frage:
sudo nano /etc/crontab
|
stokedfish
(Themenstarter)
Anmeldungsdatum: 25. Mai 2005
Beiträge: 678
|
Ja, aber... fish@fishbox:/media$ su root
Password:
su: Authentication failure
Sorry. Das passiert ja per default.
Aber root kann ich trotzdem in configs verwenden? Irgendwie ist das verwirrend... Anyway, Danke, dann ist ja alles gut! ☺
|
Laser87
Anmeldungsdatum: 11. Februar 2007
Beiträge: 443
Wohnort: Ulm - Heimat des GoldOchsen
|
Entweder: su <enter>, dann kommt die pwd-Abfrage, eingeben <enter> und schon bist Du root Oder: sudo <Befehl> <enter> nach der pwd-Abfrage wird der Befehl als root ausgeführt rgds JoE
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
laser87 hat geschrieben: su <enter>, dann kommt die pwd-Abfrage, eingeben <enter> und schon bist Du root
Nein. Ich wiederhole nochmal: Unter Ubuntu ist kein Root-Passwort vergeben. Ein Benutzerwechsel via 'su' (also zu root) ist daher nicht möglich. Der Unterschied ist folgender: "su root" fragt nach dem Passwort des Users root. "sudo <Befehl>" fragt nach dem Passwort das ausführenden Users. Dazu muss dieser User allerdings in der Gruppe 'admin' sein. Der erste unter Ubuntu angelegte User (während der Installation) ist automatisch Teilnehmer dieser Gruppe.
|
Laser87
Anmeldungsdatum: 11. Februar 2007
Beiträge: 443
Wohnort: Ulm - Heimat des GoldOchsen
|
Sry, wird offtopic, aber ich hab nach su und pwd eindeutig im Terminal stehen root@Pinguin. Benutze ubuntu 6.06 Dapper Drake. Bin einziger user und natürlich in der Gruppe admin. Das Passwort ist auch kein root-pwd sondern meins. rgds JoE
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
Laser87 hat geschrieben: ...ich hab nach su und pwd eindeutig im Terminal stehen root@Pinguin.
Hmm, dann hast Du vielleicht den Root-Account aktiviert? Was passiert, wenn Du dich auf einer Konsole (Strg-Alt-F1) mit Benuzternamen 'root' und 'Deinem' Passwort anmeldest? EDIT: Oder hast Du für 'su' ein Alias gesetzt?
|
kawazu
Anmeldungsdatum: 2. September 2005
Beiträge: 123
Wohnort: DD
|
DrScott hat geschrieben:
... Desweiteren nutzt Ubuntu sudo. Mit sudo können Aktionen mit Rootrechten ausgeführt werden, ohne daß man sich vorher als root hätte anmelden müssen (siehe hier: sudo ) Zu Deiner Frage:
sudo nano /etc/crontab
Sinnvollerweise lieber sudo crontab -e um dafür zu sorgen, daß für den Nutzer (root) eine neue persönliche crontab erzeugt und "installiert" (mithin: gen /var/spool/cron/crontabs kopiert und dem laufenden crond zur Kenntnis gebracht) wird. 😉 Cheers, Kristian
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
kawazu hat geschrieben: Sinnvollerweise lieber sudo crontab -e
Dann bleibt nun nur noch zu klären: Wann lieber 'vi /etc/crontab', wann lieber 'crontab -e'. Im Prinzip macht es das gleiche, dennoch sind es unterschiedliche Ansatzpunkte... Richtig: Bei 'meinem' Ansatz fehlte noch das abschließende
sudo /etc/init.d/cron restart
|
kawazu
Anmeldungsdatum: 2. September 2005
Beiträge: 123
Wohnort: DD
|
DrScott hat geschrieben: Dann bleibt nun nur noch zu klären: Wann lieber 'vi /etc/crontab', wann lieber 'crontab -e'. Im Prinzip macht es das gleiche, dennoch sind es unterschiedliche Ansatzpunkte...
In /etc/crontab muß ich explizit spezifizieren, unter welchem Nutzerkonto ein cron-Job ausgeführt werden soll (root oder nichtprivilegierter Account). Jobs in den nutzerspezifischen Crontabs werden mit den Rechten des Users ausgeführt, dem die Crontab gehört. Das ist hilfreich, wenn man sich als User Routine-Aufgaben planen will, ohne diese notwendigerweise als root ausführen zu müssen, bzw. wenn man als Nicht-User schlicht keinen Schreibzugriff auf /etc/crontab bekommt. 😉 Achso, wenn der vi stört: crontab -e interessiert sich für die $EDITOR-Variable, mithin ist EDITOR=nano sudo crontab -e u.U. etwas bequemer. 😉
Richtig: Bei 'meinem' Ansatz fehlte noch das abschließende
sudo /etc/init.d/cron restart Ich bin unschlüssig, ob das erforderlich ist. Normalerweise sollte cron anhand der Timestamps sehen, daß die Datei jüngst modifiziert worden ist, und daraufhin auch deren Inhalt laden (und zwar im Minuten-Takt). Mit dem restart indes ist es sicherer.
Cheers, Kristian
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
@kawazu: Deine ausführliche Antwort hat aber leider meine eigentliche Frage nicht so ganz beantwortet: Es soll ja in diesem Fall ein root-Job ausgeführt werden. Warum soll nun 'lieber crontab -e' ausgeführt werden? Meines Erachtens sind beide Vorgehensweisen gleichwertig (Zugang zu Rootrechten ist beidemale notwendig), aber vielleicht gibt es ja noch irgendwelche 'Regeln'? Mein Gedanke war eben: Auf Systemebene wird /etc/crontab bereits verwendet, um Jobs mit Rootrechten laufen zu lassen (auch wenn es nur die Einträge von anacron sind...). Daher sollten meiner Meinung nach dementsprechende Jobs (Systemebene) auch dort landen. Einfach um zwei Baustellen zu vermeiden. EDIT: im übrigen hast Du recht: man cron hat geschrieben: Like /etc/crontab, the files in the /etc/cron.d directory are monitored for changes.
|
kawazu
Anmeldungsdatum: 2. September 2005
Beiträge: 123
Wohnort: DD
|
DrScott hat geschrieben:
... Mein Gedanke war eben: Auf Systemebene wird /etc/crontab bereits verwendet, um Jobs mit Rootrechten laufen zu lassen (auch wenn es nur die Einträge von anacron sind...). Daher sollten meiner Meinung nach dementsprechende Jobs (Systemebene) auch dort landen. Einfach um zwei Baustellen zu vermeiden. ...
So gesehen ist mir keine Konvention bekannt, die definiert, was in welche crontab kommt. Im Hinblick auf die Ausführung sind beide gleichberechtigt. Man könnte diskutieren, ob man in /etc/crontab nur distributions-spezifische Dinge liegen haben und eigene System-Jobs in der root-crontab installieren mag, aber das ist vermutlich Geschmackssache. Der andere Gesichtspunkt wäre: "crontab -e" ist konsistent und funktioniert für jeden Nutzer - verwende ich dieses, habe ich nicht den "Werkzeug-Bruch" ('root': /etc/crontab händisch editieren, normaler Nutzer: crontab -e). Aber Geschmackssache, wie gesagt. ☺ Cheers, Kristian
|
Laser87
Anmeldungsdatum: 11. Februar 2007
Beiträge: 443
Wohnort: Ulm - Heimat des GoldOchsen
|
@DrScott: Sry, stimmt. Ich habe ganz am Anfang den root-account aktiviert. Sowohl aus dem Nichtwissen, wie ich es hätte sonst machen sollen, als auch aus Faulheit, jedesmal (und das ist am Anfang oft) das Passwort eingeben zu müssen. Und dann vergessen, daß ich das wieder rückgängig machen wollte. Ich habe den root jetzt wieder deaktiviert (klingt gut, oder? 😀 ), ich kann ja trotzdem ein root-terminal öffnen. thx n rgds JoE
|
Chrissss
Anmeldungsdatum: 31. August 2005
Beiträge: 37971
|
Laser87 hat geschrieben: ...ch kann ja trotzdem ein root-terminal öffnen.
Und man kann mit
sudo -s arbeiten ☺
|