Tartalom
Bevezető
A modern informatika világában a pontos idő használata kritikus jelentőségű szempont. A mai Linux operációs rendszerekben számos megoldás kínálkozik arra, hogy rendszerünk órája mindig szinkronban legyen a világidővel. De miért is olyan fontos ez?
- Sok biztonsági protokoll, mint például a TLS/SSL, amely az internetes kommunikáció alapját képezi, erősen támaszkodik a pontos időzítésre. Az időeltérések biztonsági réseket nyithatnak meg, melyeket a támadók kihasználhatnak.
- Adatbázis-kezelő rendszerek, fájlrendszerek és más kritikus rendszerek is támaszkodnak a pontos időbélyegekre. Az időeltérések adatvesztéshez vagy inkonzisztenciához vezethetnek.
- Szerverek és kliens rendszerek közötti kommunikáció során elengedhetetlen a pontos idő. Ez különösen fontos a hálózati műveletek, mint a naplózás és a hibakeresés során.
- Pénzügyi tranzakciók és más időérzékeny üzleti folyamatok is megbízható időszinkronizációra támaszkodnak.
- Rendszernaplók készítése esetén is fontos, hogy a különböző forrásokból (például más számítógépekről, eszközökről) érkező adatok időbélyegei összhangban legyenek.
Ebben a rövid leírásban megnézzük, hogyan állíthatjuk be a dátumot, a pontos időt és az időzónánkat kézzel, illetve hogyan aktiválhatjuk az internettel történő időszinkronizációt.
Dátum és idő lekérdezése
A dátumot és az időt a legegyszerűbben a date parancs segítségével kérdezhetjük le:
date
Ha több információt szeretnénk megjeleníteni, akkor pedig a timdatectl parancsot használhatjuk:
timedatectl
A fenti parancsok tehát a rendszeridőt kérdezik le, amit a Linux rendszer az elindulásakor a hardverórától (RTC) kérdez le, és a futása során a kernel szoftveresen mér.
Lehetőség van magát a hardverórát is lekérdeznünk, ezt root-ként tehetjük meg a hwclock parancs segítségével:
sudo hwclock --show
Dátum és idő beállítása
A dátumot és a pontos időt a legkényelmesebben szintén a date paranccsal állíthatjuk be:
date -s "YYYY-MM-DD HH:MM:SS"
Ahol a beállítás formátuma az év-hónap-nap óra:perc:másodperc.
A sikeres beállítás után a parancs a kimenetén visszaadja a beállított dátumot és időt.
Az időt a timedatectl paranccsal is beállíthatjuk:
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
Itt azonban ahogy a képen is szemléltetésre került, ha be van kapcsolva a NTP szinkronizáció (erről később), akkor nem lehet manuálisan beállítani az időt, ilyenkor ezt a hibaüzenetet adja:
Failed to set time: Automatic time synchronization is enabled
Ilyenkor előbb ki kell kapcsolni az NTP szinkronizációt, és utána visszakapcsolni. Persze ennek a gyakorlatban nincs semmi értelme, mivel az NTP szinkronizáció visszakapcsolásakor úgy is beállítja a pontos időt az internetről, bármit is állítottunk be előtte kézzel. Ezzel a példával inkább csak az időkezelési funkciók logikáját érthetjük meg könnyebben.
Itt fontos megjegyezni, hogy ezek az időbeállító parancsok csak a rendszeridőt állítják be, és nem a hardveres órát.
Azonban, ha a számítógép hirtelen áramkimaradás miatt áll le vagy ha az operációs rendszer nem szabályosan futtatja a leállítási rutinokat, akkor előfordulhat hogy a rendszeróra változtatásai nem kerülnek átfrissítésre az RTC-re és a következő indításkor a rendszeróra az RTC-ből olvasott értékre áll vissza.
A folyamat lényege hogy amikor a számítógép leáll, a rendszer az aktuális rendszeridőt "visszaírja" az RTC-be, ezzel biztosítva hogy a hardveróra pontos legyen a következő indításkor. Ez azért fontos mert az RTC az, ami fenntartja az időt amikor a számítógép ki van kapcsolva vagy alacsony energiafogyasztású állapotban van.
Ez a megközelítés biztosítja, hogy a rendszeridő és a hardveridő közötti konzisztencia megmaradjon az újraindítások és a rendszer kikapcsolásai között.
A pontos viselkedés függ a rendszer konfigurációjától és a használt disztribúciótól. Egyes rendszerek úgy vannak beállítva, hogy csak manuális beavatkozásra, vagy specifikus szolgáltatások futtatására frissítsék az RTC-t a rendszeróra alapján. A rendszeróra és a hardveróra (RTC) oda-vissza történő kézi szinkronizációját lentebb tekintjük át.
Időzóna beállítása
A dátum és idő beállításán kívül még az időzónát is módosíthatjuk, amennyiben nem megfelelő a beállítás. Az elérhető időzónákat az alábbi paranccsal listázhatjuk ki:
timedatectl list-timezones
Ha megtaláltuk a listán a beállítani kívánt időzónát, akkor az alábbi paranccsal állíthatjuk be:
timedatectl set-timezone Europe/Budapest
Ez is a rendszerórát állítja be, így a hardveres óra (RTC) a leállításkor kerül beállításra, vagy amikor kézzel szinkronizáljuk.
Hardveres óra (RTC) kézi szinkronizálása
Ha kézzel szeretnénk szinkronizálni a hardveres órát (RTC), akkor ezt mindkét irányban megtehetjük az alábbi parancsok segítségével:
Rendszeróra frissítése a hardveróra alapján:
sudo hwclock --hctosys
Itt egy példát láthatunk, ahol először egyetlen parancssorban kérdeztem le a rendszerórát és a hardverórát, hogy minél pontosabb időket kapjak. Itt látszik, hogy a hardveres óra késik egy másodpercet a rendszerórához képest. Ezután futtattam a --hctosys opciót, amivel a hardverórának az idejét állította be a rendszerórában. Ezután újból lekérdeztem a két időt ugyanúgy egyszerre. Ekkor már a másodpercek is egyeztek.
Hardveres óra frissítése a rendszeróra alapján:
sudo hwclock --systohc
A művelet fordítottja pedig értelemszerűen a rendszeróra idejét állítja be a hardveres órába (RTC).
A hwclock manual oldalából idézve:
[...] DATE-TIME CONFIGURATION Keeping Time without External Synchronization This discussion is based on the following conditions: • Nothing is running that alters the date-time clocks, such as NTP daemon or a cron job." • The system timezone is configured for the correct local time. See below, under POSIX vs 'RIGHT'. • Early during startup the following are called, in this order: adjtimex --tick value --frequency value hwclock --hctosys • During shutdown the following is called: hwclock --systohc [...]
A lényeg itt a felsorolás utolsó tételében van, tehát a rendszer leálláskor ezt a műveletet hajtja végre, így a számítógép kikapcsolásakor frissíti a hardveres órát a rendszeróra pontos idejével, ahogy fentebb már volt erről szó.
Dátum és idő szinkronizálása az internetről a systemd-timesyncd segítségével
Az internetről többféle szolgáltatás segítségével szinkronizálhatjuk le számítógépünkre a pontos világidőt, melynek segítségével rendszerünk ideje teljesen pontossá válik, így akár más számítógépekkel történő kommunikáció során is pontosan fognak működni a különböző hálózati protokollok, stb.
Ebben a fejezetben megnézzük, hogyan tudjuk aktiválni az internetről történő időszinkronizációt a systemd-timesyncd szolgáltatás használatával.
A systemd-timesyncd egy egyszerű NTP (Network Time Protocol) protokollon alapuló kliens, amely célja, hogy egy alapvető, de hatékony időszinkronizációs megoldást biztosítson a Linux rendszerek számára, anélkül, hogy szükség lenne a teljes értékű NTP daemon (például ntpd vagy chrony) telepítésére és konfigurálására.
A szolgáltatás telepítéséhez futtassuk az alábbi parancsot:
sudo apt-get install systemd-timesyncd
Ezután ellenőrizhetjük a timedatectl paranccsal hogy működik-e a szinkronizáció:
timedatectl
És itt már láthatjuk a "yes" és "active" soroknál, hogy működik a szinkronizáció.
Konklúzió
Ebből a rövid leírásból megtudhattuk, hogyan tekinthetjük meg a rendszeridőt és a hardveres órát (RTC), valamint hogyan állíthatjuk be ezeket, és hogyan szinkronizálhatjuk számítógépünk idejét a systemd-timesyncd szolgáltatás segítségével, hogy rendszerünk órája mindig pontos maradjon.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 296 megtekintés