ubuntuusers.de

Crontab als Root ausführen?

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

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 Team-Icon

Ehemalige
Avatar von DrScott

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

Avatar von 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 Team-Icon

Ehemalige
Avatar von DrScott

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

Avatar von 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 Team-Icon

Ehemalige
Avatar von DrScott

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

Avatar von 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 Team-Icon

Ehemalige
Avatar von DrScott

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

Avatar von 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 Team-Icon

Ehemalige
Avatar von DrScott

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

Avatar von 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

Avatar von 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 Team-Icon

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 ☺

Antworten |