Skip to content
Snippets Groups Projects
második videó.md 12 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.
    
    
     - 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
    
    
    A UNIX 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, kezelése
    
    https://linuxhint.com/ubuntu-user-management/
    
    Fodor Patrik's avatar
    Fodor Patrik committed
    
    ### Felhasználók kezelése
    
    #### Létrehozás
    
    `sudo useradd <username>` A `useradd` parancs segítségével
    hozzáadhatunk egy új felhasználót a rendszerhez. A `<username>` helyére az
    új felhasználó nevét kell írni.
    
    A parancs nem hoz létre user mappát a `/home`-ban, de ha máshol
    szeretnénk, hogy legyen ez a mappa,
    az is megadható az `useradd -m <username>` kapcsolójával.
    Ezenkívül meg lehet adni, hogy a felhasználó milyen shellt akar használni 
    bejelentkezés után, ezt a `-s` kapcsolóval lehet megadni. 
    Mivel a bash-t szeretnénk hasznlni, akkor a `-s /bun/bash`-t kell megadni.
    
    Ezután az új felhasználónak be kell állítani egy jelszót, ezt 
    a `sudo passwd <username>` parancs kiadása után állítható be.
    
    ```
    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
    és egyébb 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.
    
    ```
    patrik@ubuntu:/home$ sudo usermod -aG sudo mike
    ```
    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ó, 
    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
    ```
    
    `cat /etc/group`
    
    
    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
    
    
    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.
    
    
    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.
    
    `systemctl` the central management tool for controlling the init system
    
    `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
    
    
    `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
    
    
    
    
    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
    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