Skip to content
Snippets Groups Projects
második videó.md 12.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • Fodor Patrik's avatar
    Fodor Patrik committed
    # 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.
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    A Linux is ezen elvek alapján készült.
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    Ezek közül néhány:
    
    
     - 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.
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    ### 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.
    
    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
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    A UNIX rendszereknél az operációs rendszer részei
    jóval függetlenebbek egymástól, mint mondjuk egy Windows alapú rendszernél. 
    
    *De mik is ezek a részek?*
    
    #### Bootloader
    Ez a legelső program, ami betöltődik, amikor a gépet bekapcsoljuk.
    A feladata a kernel és pár [alapvető driver és program](https://en.wikipedia.org/wiki/Initial_ramdisk)
    betöltése RAM-ba, majd a kernel elindítása.
    Dual boot esetén lehetőséget ad arra, hogy kiválasszuk melyik OS-t
    szeretnénk elindítani.  
    *Az Ubuntu által használt bootloader a Grub.*
    
    #### Kernel
    A kernel feladata a hardverek bekurblizása és kezelése,
    erőforrások szétosztása, jogosultságok behajtása
    és sok gyakran használt,
    hardverközeli teendőhöz függvényeket biztosítani
    (pl: hálózati csomagküldés, adatblokk beolvasása lemezről, stb.).  
    *Az Ubuntu által használt kernel a Linux.*
    
    #### Init rendszer
    Az init rendszer feladata az operációs rendszer szolgáltatásainak
    elindítása, felügyelete és kezelése.
    Ez indítja el a hálózatkezelőt és bejelentkezőablakot is például.  
    *Az Ubuntu által használt init rendszer a systemd.*
    
    #### Userland
    A userland egy nehezen behatárolható dolog. Igazából minden,
    az operációs rendszerrel jövő, nem kernelben élő szoftver a userland része.
    Ebbe beletartozik az init rendszer is, de mégse venném ide, mivel
    annak elég jól elkülönülő határai vannak.
    
    Egy UNIX rendszer userland-ja alatt általában
    az alapvető programokat értjük, amik a rendszer és rajta futó
    programok használatához szükségesek.  
    Ilyen pélául az `ls`, `cat`, `sh`, `cp`, `rm`, stb.  
    *Az Ubuntu GNU userland-et használ.*
    
    ## A többfelhasználós rendszer működése, kezelése
    
    https://linuxhint.com/ubuntu-user-management/
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    ### Felhasználók kezelése
    
    #### Létrehozás
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    `sudo useradd -G kszksok -s /bin/bash -m mike`
    - `sudo`: mert root hozhat csak létre új usert
    - `useradd`: ez a parancs hoz létre usert
    - `-G kszksok`: a `kszksok` csoport tagja legyen az új user
    - `-s /bin/bash`: a bash legyen a shellje a usernek
    - `-m`: legyen home mappája
    - `mike`: az új user neve
    
    
    Ezután az új felhasználónak be kell állítani egy jelszót, ezt 
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    a `sudo passwd mike` parancs kiadása után állítható be.
    <Note type="warning" label="Megjegyzés">
    A `passwd` nem ír semmit a terminálra miközben írjuk a jelszót,
    de ne kételkedjünk, hogy nem látunk semmit, attól még íródik.
    </Note>
    
    
    ```
    patrik@ubuntu:/home$ useradd -m -s /bin/bash mike 
    useradd: Permission denied.
    useradd: cannot lock /etc/passwd; try again later.
    patrik@ubuntu:/home$ sudo useradd -m -s /bin/bash  mike
    patrik@ubuntu:/home$ sudo passwd mike
    New password: 
    Retype new password: 
    
    passwd: password updated successfully
    
    patrik@ubuntu:/home$
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    #### Törlés
    
    `sudo userdel <username>`parancs segítségével
    eltávolíthatunk egy új felhasználót a rendszerből.
    Azonban ez csak a felhasználót törli a hozzá tartozó `home` mappát
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    és egyéb fájlokat nem, ezt az `-r` kapcsoló megadásával tehetjük meg.
    
    ```
    patrik@ubuntu:/home$ sudo userdel -r mike
    [sudo] password for patrik: 
    patrik@ubuntu:/home$
    ```
    
    #### Jelszó megváltoztatása
    
    
    `sudo passwd <username>` parancs segítségével megváltoztatható
    egy-egy felhasználó jelszava. Akkor ha csak annyit írunk, hogy passwd, azzal
    a bejelentkezett felhasználó jelszavát változtatjuk meg.
    
    ```
    patrik@ubuntu:/home$ sudo passwd mike
    [sudo] password for patrik: 
    New password: 
    Retype new password: 
    passwd: password updated successfully
    patrik@ubuntu:/home$ passwd
    Changing password for patrik.
    Current password: 
    New password: 
    Retype new password: 
    passwd: password updated successfully
    patrik@ubuntu:/home$ passwd
    Changing password for patrik.
    Current password: 
    New password: 
    Retype new password: 
    Password unchanged
    New password: 
    Retype new password: 
    You must choose a longer password
    New password: 
    Retype new password: 
    Bad: new and old password are too similar
    passwd: Authentication token manipulation error
    passwd: password unchanged
    patrik@ubuntu:/home$
    ```
    
    A jelszó megadásánál van egy pár követelmény, 
    aminek meg kell felelni. Ilyenek azok is, melyek fentebb láthatóak.
    A jelszó nem egyezhet meg a korábbival, nem lehet ahhoz nagyon hasonló,
    hosszúnak kell lennie, ha túl egyszerű
    azt se engedi (1234, asdasd...stb.).
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    #### Root jog "szerzése"
    
    
    `usermod -aG sudo <username>` parancs segítségével hozzáadjuk a 
    megadott felhasználót a sudo nevű csoporthoz.
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    *Hint: `-aG`, mint add group.*
    
    ```
    patrik@ubuntu:/home$ sudo usermod -aG sudo mike
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    ``` 
    
    Vagy a létrehozás során adjuk meg a plusz group-ot
    `useradd -m -G additional_groups -s login_shell username`
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    ### Csoportok kezelése
    
    
    `groups username` parancs megadásával megtudhatjuk egy felhasználó, 
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    mely csoportoknak a tagjai. A `groups` parancs önmagában a bejelentkezett felhasználó
    
    csoportjait mutatja meg.
    
    ```
    patrik@ubuntu:~$ groups mike
    mike : mike sudo
    patrik@ubuntu:~$ groups patrik
    patrik : patrik adm cdrom sudo dip plugdev lpadmin lxd sambashare
    patrik@ubuntu:~$ groups
    patrik adm cdrom sudo dip plugdev lpadmin lxd sambashare
    ```
    
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    #### Létrehozás
    
    
    `sudo groupadd <groupname>` parancs segítségével lehet létrehozni egy új
    csoportot. 
    
    ```
    patrik@ubuntu:~$ sudo groupadd almafa
    [sudo] password for patrik: 
    patrik@ubuntu:~$ sudo cat /etc/group | grep alma
    almafa:x:1002:
    patrik@ubuntu:~$ 
    ```
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    #### Törlés
    
    
    `sudo groupdel <groupname>` parancs segítségével eltávolíthatunk egy csoportot.
    
    ```
    patrik@ubuntu:~$ sudo groupdel almafa
    patrik@ubuntu:~$ sudo cat /etc/group | grep alma
    patrik@ubuntu:~$
    ```
    
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    #### Felhasználók hozzáadása
    
    
    `sudo usermod -aG <groupname> <username>` parancs segítségével felhasználót
    lehet hozzáadni a megadott csoporthoz.
    
    ```
    patrik@ubuntu:~$ sudo usermod -aG almafa mike
    patrik@ubuntu:~$ groups mike
    mike : mike sudo almafa
    patrik@ubuntu:~$ 
    ```
    
    
    #### Felhasználók eltávolítása a csoportból
    
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    ### 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 démonok és szolgáltatások is.
    
    Az init rendszer a legelső (és egyetlen) program, démon, amelyet a kernel indulása után elindít.
    Az ő feladata, hogy minden szükséges szolgáltatást, démont elindítson.
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    ### systemd
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    A systemd egy init rendszer, 
    amely nagyon elterjed Linux rendszereken, ma már szinte az 
    
    összes disztribúció ezt használja, mivel számos előnye van elődeihez képest.
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    A systemd feladata, hogy a Linux kernel 
    indulása után előkészítse az induló szolgáltatásokat 
    és 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.
    
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    szolgáltatások, démonok, konfigfájlok
    
    
    Megjegyzés: a `.service`-t nem kötelező kiírni
    
    
    Vannak olyan programok, amit szeretnénk, a rendszerrel együtt indítani,
    a rendszerrel együtt szabályosan leállítani, valamint
    igény szerint kézzel indítani, leállítani, újraindítani.
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    #### `systemctl`: a systemd-t piszkáló, vele kommunikáló eszköz
    
    `systemctl status <service_neve.service>` Szolgáltatás indítása
    
    `systemctl start <service_neve.service>` Szolgáltatás leállítása
    
    `systemctl stop <service_neve.service>` Szolgáltatás újraindítása
    
    `systemctl restart <service_neve.service>` Szolgáltatás státusza
    
    `systemctl enable <service_neve.service>` Indítás a rendszerrel
    
    `systemctl disable <service_neve.service>` Ne induljon a rendszerrel
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    #### `journalctl`: naplózó, logkezelő service
    
    
    `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
    
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    `journalctl --since "1 hour ago"` Egy időpont óta történt események
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    ## 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
    
    Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    az ssh (secure shell).
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    ### 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