# 2. videó segédlet ## UNIX alapelvek <Note type="tip" label="Magyarázat"> A Linux egy [UNIX-szerű](https://en.wikipedia.org/wiki/Unix-like) rendszer, ugyanazokra az alapelvekre épül, ezért beszélünk most róluk. Amiket ebben a fejezetben olvashattok egyaránt vonatkozik a UNIX-ra és a Linux-ra is. </Note> Vannak különböző [elvek](https://en.wikipedia.org/wiki/Unix_philosophy), amik alapján egy UNIX operációs rendszert megalkotnak. A Linux is ezen elvek alapján készült. - Build modular programs - Write readable programs - Use composition - Separate mechanisms from policy - Write simple programs - Write small programs - Write transparent programs - Write robust programs - Make data complicated when required, not the program - Build on potential users' expected knowledge - Avoid unnecessary output - Write programs which fail in a way that is easy to diagnose - Value developer time over machine time - Write abstract programs that generate code instead of writing code by hand - Prototype software before polishing it - Write flexible and open programs - Make the program and protocols extensible ### KISS (Keep it Simple, Stupid) A legtöbb rendszer akkor működik a legjobban, ha azt egyszerűnek hagyják, és nem teszik egyre bonyolultabbá. Ezért az egyszerűségnek a tervezés egyik fő céljának kell lennie, és kerülni kell az olyan összetételeket, amelyekre nincs szükség. ### Everything is a file Ez azt jelenti, hogy a felhasználó fájljai, a rendszer könyvtárkatalógusai és a rendszerhez csatlakoztatott hardver eszközök, mint fájlok egységesen kezelhetőek. Its derivatives that a wide range of input/output resources such as documents, directories, hard-drives, modems, keyboards, printers and even some inter-process and network communications are simple streams of bytes exposed through the filesystem. The advantage of this approach is that the same set of tools, utilities and APIs can be used on a wide range of resources. There are a number of file types. When a file is opened, a file descriptor is created. The file path becoming the addressing system and the file descriptor being the byte stream I/O interface. But file descriptors are also created for things like anonymous pipes and network sockets via different methods. Therefore a more accurate description of this feature is Everything is a file descriptor. Additionally, a range of pseudo and virtual filesystems exists which exposes information about processes and other system information in a hierarchical file-like structure. These are mounted into the single file hierarchy. ### Architektúra Réteges felépítésû. A legbelsõ része a [kernel](https://en.wikipedia.org/wiki/Kernel_(operating_system)), az operációs rendszer magja, amely a rendszer erõforrásainak szétosztását és a futó folyamatok ütemezését végzi, valamint felelős a fájlkezelésért, az eszközkezelésért és a hálózatkezelésért. is A kernel köré épülnek a UNIX különbözõ programjai. Ezek közé tartoznak a különbözõ segédprogramok (pld. ls, cat, mv) és a felhasználó számára a legfontosabb az úgynevezett parancsértelmezõ (shell). ## A többfelhasználós rendszer működése (users be like) ### Felhasználók kezelése #### Létrehozás #### Törlés #### Root jog "szerzése" ### Csoportok kezelése #### Létrehozás #### Törlés #### Felhasználók hozzáadása ### Superuser Kicsit bővebben azon kívül, amit eddig mondtunk. Bár lehet, hogy a UNIX elvek után/ beleépítve is mehetne, hogy kb mi. ## Init rendszer A UNIX operációs rendszerben vannak olyan feladatok, amiket a háttérben (gyakran "észrevétlenül") futó folyamatok végeznek el. Ezeket a programokat daemon folyamatoknak is nevezik. Mivel ezeket a folyamatokat nem a terminálról indítják, általában a rendszerindításkor automatikusan indulnak el. A Service is a server application or set of applications that runs in the background waiting to be used, or carrying out essential task. They are basically called in inter-process communication. Manapság a démonok (daemon) és a szolgáltatások (service) alatt ugyanazt a fogalmat értjük, mivel ezek a programok egyszerre daemon-ok és service-ek is. Az init rendszer a legelső (és egyetlen) program, amelyet a kernel indulása után elindít. (PID 1) Az ő feladata, hogy minden szükséges szolgáltatást elindítson. ### systemd A systemd egy rendszer-előkészítő és rendszer-menedzselő szoftver (init rendszer), amely egy szabvány lett a Linux rendszerek számára, ma már szinte az összes disztribúció ezt használja, mivel számos előnye van elődeihez képest. A systemd rendszer-előkészítő feladata, hogy a Linux kernel indulása után előkészítse az induló szolgáltatásokat. A rendszer-előkészítővel kezeljük a szolgáltatásokat, démonokat a rendszer futása közben. Azaz ez a systemd felel nagyon sok olyan háttérmunkáért, amiről sok esetben nem is tudunk, de szükségesek a rendszerhez, vagy egy-egy feladat indításához. szolgáltatások, démonok, konfigfájlok Megjegyzés: a `.service`-t nem kötelező kiírni `systemctl` `systemctl status <service_neve.service>` `systemctl start <service_neve.service>` `systemctl stop <service_neve.service>` `systemctl restart <service_neve.service>` `systemctl enable <service_neve.service>` `systemctl disable <service_neve.service>` `journalctl` `journalctl` Naplók megjelenítése `journalctl -xe` Hibák megjelenítése `journalctl -u <service_neve>` Egy szolgáltatás logjainak megjelenítése `journalctl --since “1 hour ago”` Egy időpont óta történt események ## Hálózat alapszintű konfigurálása <Note type="tip" label> Az esetek többségében ezt nem kell nekünk kézzel megcsinálni, hanem a network manager megoldja helyettünk (ezt rendesen át kell fogalmazni) </Note> Rövid szöveg Példa ## Távoli hozzáférés (SSH) A rendszerhez hozzáférhetünk távolról is, így is megkönnyítve a munkánkat, nem kell fizikailag az adott számítógépnél/szervernél lennünk. Erre többféle módszer is van, de a legbiztonságosabb és ma is leginkább használatos az ssh (feloldása ide, most nem jut eszembe). ### Használata - `ssh a_távoligépen_lévő_felhasználónk_neve@a_távoli_gép_neve` - Megkérdezi a felhasználó nevünkhöz tartozó jelszót, ezt megadjuk ééééééééés bent is vagyunk ```shell [patrik@patrik-laptop ~]$ whoami patrik [patrik@patrik-laptop ~]$ ssh hallgato@172.16.228.130 3944ms 2021. márc. 16., kedd, 20:41:28 CET hallgato@172.16.228.130's password: Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-65-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Last login: Tue Mar 16 20:41:47 2021 hallgato@ubuntu:~$ whoami hallgato hallgato@ubuntu:~$ ``` Ez mit is mutat? - `whoami` (ki vagyok én?) válaszol erre a kérdésre - Ezt a parancsot kiadom a saját gépemen és visszaadja, hogy `patrik` - `ssh hallgato@172.16.228.130 ` szeretnék belépni ssh-n keresztül a 172.16.228.130 ip címmel rendelkező gépre hallgato felhasználó névvel - `hallgato@172.16.228.130's password:` itt kell megadni a felhasználó jelszavát - Ha létezik a felhasználó és jó a megadott jelszó, akkor belépünk a rendszerbe - Ezután látható, hogy tényleg sikeresen beléptem, egy "üdvözlő üzenet" fogad, valamint a promt is megváltozott `hallgato@ubuntu:~$`-ra - `whoami` parancs kiadása a távoli gépem - Itt már a `hallgato` nevet kapom vissza, ebből is látszik, hogy most egy másik felhasználóként használom a shell-t