• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Systemzeit ändern ohne Administrator zu sein

lanzelot

Newbie
Hallo

habe ein shellscript geschrieben. Es geht darum, die Systemzeit mit einem ntp-server zu synchronisieren. Es funktioniert wunderbar. Einziges Problem: Ich muss Admin sein, damit ich es ausführen kann.

Das shellscript sieht so aus:
Code:
#!/bin/sh

echo "Zeit wird mit ETH Server synchronisiert"
cd /usr/sbin
./ntpdate swisstime.ethz.ch
cd ~

Das Skript lässt sich ohne Admin anmeldung ausführen. Jedoch bricht das Programm ab, wo es darum geht, die Datei ntpdate auszuführen. Fehlermeldung:
21 Dec 01:01:36 ntpdate[4271]: bind() fails: Permission denied
Das Datum ist nicht das aktuelle, sondern die Systemzeit. Offenbar kann er diese nicht ändern.

ntpdate hat die Zugriffsrechte 755. Ich kann es also lesen und ausführen. Sollte eigentlich reichen.

Meine Frage:
Was muss ich nun wo ändern, damit ich mein Script ohne Admin Anmeldung ausführen kann?

Besten Dank

Lanzelot
 

panamajo

Guru
lanzelot schrieb:
Was muss ich nun wo ändern, damit ich mein Script ohne Admin Anmeldung ausführen kann?
Systemzeit wird mit ntpd synchronisiert, nicht mit ständigen ntpdate Aufrufen.
Du wirst nicht wollen dass jeder die Systemzeit verändern kann, deshalb verweigert ntpdate den schreibenden Zugriff auf diese.
 

moenk

Administrator
Teammitglied
panamajo schrieb:
Du wirst nicht wollen dass jeder die Systemzeit verändern kann, deshalb verweigert ntpdate den schreibenden Zugriff auf diese.
Und in diesem Forum steht auch wie man das macht - Beitrag verschoben.
 
OP
L

lanzelot

Newbie
Ich habe folgendes Problem: meine Systemzeit ist immer verstellt, wenn ich den Rechner einschalte. Habe auch schon die Uhr auf dem Mainboard ausgewechselt... ohne Erfolg.

Der Befehl ntpd... ist der nicht für freeBSD(habe im Goole nichts zu Linux gefunden)? Habe auf dem Netz diesen Link gefunden über die Synchronisation mittels XNTPD:
http://de.opensuse.org/SDB:Zeit_übe...BChren_der_Zeit_bei_permanenter_Netzanbindung
Allerdings ist dabei ein Problem:
Probleme kann es daher geben, wenn die lokale Zeit zu stark (mehr als 10 Minuten) von der des Timeservers abweicht. In diesem Fall also einmal ntpdate und hwclock (s.o.) starten.

Da die Systemzeit bei mir etwa 14 Tage abweicht, müsste ich also ntpdate zuerste einmal aufrufen.

Da der Rechner später als Server dient wäre eine regelmässige Abgleichung der Zeit das sinnvollste. Trotzdem muss ich am Anfang die Zeit einigermassen abgleichen, damit XNTPD funktioniert.

Gibt es eine Datei oder sonstwas wo ich bei jedem Systemstart ntpdate automatisch ausführen lassen kann? (oder eine andere Lösung mit dem gleichen Effekt)
 
panamajo schrieb:
lanzelot schrieb:
Was muss ich nun wo ändern, damit ich mein Script ohne Admin Anmeldung ausführen kann?
Systemzeit wird mit ntpd synchronisiert, nicht mit ständigen ntpdate Aufrufen.
Ist aber einfacher - denn ntpd verweigert das Updaten der Zeit wenn die Uhr zu sehr driftet (kaputte Mainboards, faultige Treiber, etc.). Außerdem hängt dir dann nicht immer eine Anwendung im RAM.
 

panamajo

Guru
jengelh schrieb:
Ist aber einfacher - denn ntpd verweigert das Updaten der Zeit wenn die Uhr zu sehr driftet (kaputte Mainboards, faultige Treiber, etc.).

Vernünftige Startup Skripte stellen die Uhr einmalig beim Start von ntpd via ntpdate auf einen vernünftigen Wert ein, danach wird mit den Timeservern von ntpd synchronisiert.
Sollten sich dabei zu große Drifts ergeben stellt ntpd aus gutem Grund die Arbeit ein, denn dann liegt entweder ein HW Defekt vor (meist: Batterie leer) oder die eingetragenen Timeserver existieren nicht mehr/liefern keine Daten/sind nicht erreichbar.

In beiden Fällen ist mit ntpdate & cron nichts gewonnen: die Uhr wird auf Mondwerte eingestellt.

Was diese Lösung aber nicht leistet, ntpd schon: die Uhrzeit wird entsprechend der Werte der Timeserver gedehnt/gestaucht in der Art dass sie immer fortlaufend ist.
Wer schon mal Logfiles auf Servern ohne ntpd über z.B. Sommer/Winterzeitumstellungen ausgewertet hat weiss das zu schätzen...

jengelh schrieb:
Außerdem hängt dir dann nicht immer eine Anwendung im RAM.

Stimmt eigentlich. Warum laufen überhaupt irgendwelche daemons, wenn man die alle auch als xinetd Client laufen lassen könnte? Dann belegen die nicht immer Speicher! Weg mit httpd, mysqld und dem ganzen Gemurkse! :mrgreen:

Im Ernst: ich denke mal die 20kB kann man verschmerzen.
 
panamajo schrieb:
Sollten sich dabei zu große Drifts ergeben stellt ntpd aus gutem Grund die Arbeit ein, denn dann liegt entweder ein HW Defekt vor (meist: Batterie leer) oder die eingetragenen Timeserver existieren nicht mehr/liefern keine Daten/sind nicht erreichbar.
In beiden Fällen ist mit ntpdate & cron nichts gewonnen: die Uhr wird auf Mondwerte eingestellt.
Wenn der Timeserver nicht existiert macht auch ntpdate nix. Und wenn deiner Uhr (wir reden hier von der RTC - die Softclock ist nicht battieriebetrieben) der Saft ausgeht - wozu ne neue holen, kannst die Uhr doch wieder durch ntpdate stellen :lol:
Wer schon mal Logfiles auf Servern ohne ntpd über z.B. Sommer/Winterzeitumstellungen ausgewertet hat weiss das zu schätzen...
Also crond hat damit kein Problem wenn aus 3 Uhr plötzlich 2 Uhr wird. Eigentlich auch richtig so. Viel komischer ist, wenn eine Anwendung die periodisch die Uhrzeit braucht auf einmal 0 Stunden Wallclock hat obwohl sie ja ne Stunde lief.
jengelh schrieb:
Außerdem hängt dir dann nicht immer eine Anwendung im RAM.
Stimmt eigentlich. Warum laufen überhaupt irgendwelche daemons, wenn man die alle auch als xinetd Client laufen lassen könnte? Dann belegen die nicht immer Speicher! Weg mit httpd, mysqld und dem ganzen Gemurkse! :mrgreen: Im Ernst: ich denke mal die 20kB kann man verschmerzen.
httpd und mysql sind High-Performance-Anwendungen, verdienen daher ihren eigenen Prozess. ntpd kaum. Darüberhinaus kann man apache auch mit xinetd laufen lassen, nur so BTW!
 

panamajo

Guru
jengelh schrieb:
Also crond hat damit kein Problem wenn aus 3 Uhr plötzlich 2 Uhr wird.

syslog findet das nicht so lustig, wtmp auch nicht, ...

jengelh schrieb:
httpd und mysql sind High-Performance-Anwendungen, verdienen daher ihren eigenen Prozess. ntpd kaum. Darüberhinaus kann man apache auch mit xinetd laufen lassen, nur so BTW!

Performance ist sicher nicht der einzige Grund einem Service einen eigenen daemon zu spendieren. Andere Aspekte wie Sicherheit, Prozessmanagement (eigener User, chroot, ...) und Ausfallsicherheit (in diesem Fall: Verringerung der Abhängigkeitenvon cron, (x)inetd) spielen eine Rolle.

Apache unterstützt den Start via (x)inetd seit 1.3 nicht mehr offiziell.
 
Also, ich hatte auch das Problem mit der verstellten Systemzeit, da die Uhr des Mainbords mit der Zeit versagte.
Folgende Lösung für Suse (10.2):
K-Menü->YAST->Netzwerkdienste->NTP-Konfiguration->
NTP Dämon automatisch starten: "wähernd des Bootens"
NTP-Server Konfiguration:Adresse->wählen-> öffentlicher NTP-Server-> aussuchen (Berlin...), Test, o.k., Beenden und schon ist die richtige Zeit "on Board"
Ist das die Lösung Deines Problems?
 
OP
L

lanzelot

Newbie
Ja, genau nach sowas habe ich gesucht.
So Habe ich beim Systemstart schon mal die richtige Zeit drin.

Als nächstes werde ich wohl noch den anderen Dämon laufen lassen, der dann die Zeit immer wieder etwas nachstellt. Da der PC immer laufen soll, kann sich die Zeit ohne zyklisches Abgleichen schon mal verstellen. Aber für das habe ich ja eine Anleitung.

Vielen Dank euch allen, bin echt froh.

Gruss Lanzelot


PS:Oft gibt es mehr als 1 Variante um ans Ziel zu gelangen.
 
Oben