Skip to content
Snippets Groups Projects
masodik 7.82 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tóth Miklós Tibor's avatar
    Tóth Miklós Tibor committed
    Sziasztok!
    Mike vagyok, főleg a sysadminban tevékenykedek, de megtalálhatsz
    a Devteamben, Neteamben és Securiteamben is.
    
    Ez az előadássorozat a Linuxról szól és a mostani videóban
    szó lesz az UNIX-ról, a Linux felépítéséről,
    a felhasználók kezeléséről, az init rendszerekről
    (de főként a systemd-ről), service-ek kezeléséről,
    hálózatkonfigurációról és SSH-ról.
    Kezdjünk is bele!
    
    Mi is az UNIX?
    A korábbiakban szó volt arról, hogy "UNIX rendszer", de mit
    is jelent ez?
    Az UNIX egy '70-es években kifejlesztett rendszer, aminek mai
    változatai is léteznek, például a macOS, iOS és társai,
    illetve a BSD-k formájában. Ezek igazi UNIX-ok, hiszen kódot
    örökölnek az eredeti UNIX operációs rendszerből.
    
    Ezzel szemben a Linux-ok, UNIX-szerű operációs rendszerek,
    mert a Linux fejlesztése teljesen független az UNIX-tól,
    csupán az UNIX filozófiáját és viselkedését követik.
    
    A továbbiakban UNIX rendszer alatt az UNIX-szerű rendszerekre
    is gondolok a valódi UNIX-ok mellett.
    
    Mitől lesz valami UNIX-szerű?
    Két fontos elvet említenék, amik megtalálhatóak az UNIX-okban:
    
    Az első a KISS, vagyis a Keep It Simple, Stupid.
    
    Ennek a jelentése az, hogy írjunk, rövid, egyszerű programokat,
    amik kevés feladatot látnak el, de azokat jól.
    Ezeket a kicsit programokat a shell használatával úgyis össze
    tudjuk majd kötni és el is tudják egymást indítani.
    Ezt tapasztaltuk is, amikor a korábbiakban egymás után
    fűztünk kicsi programokat pipe-pal, vagy ahogy láthatóan
    a man a háttérben less-t használ a szöveg megjelenítésére.
    
    Ez azért hasznos, mivel így ha valamelyik része a rendszernek
    nem tetszik nekünk, azt könnyen ki tudjuk cserélni egy másik
    kicsi programra.
    
    Emellett, mivel ezek a programok kicsik és egyszerűek,
    kisebb a támadási felülete egy-egy programnak.
    
    A másik UNIX-os elem, amiről beszélnék,
    az az "everything is a file", vagyis minden egy file.
    
    Ezt azt takarja, hogy a gépen minden, legyen az RAM, diszkek,
    videokártyák, futó folyamatok vagy bármi más, mind
    elérhetőek mint egy file.
    
    Nézzünk is erre pár példát:
    Ha kiadom az lsblk parancsot, akkor az kilistázza a géphez
    csatlakoztatott diszkeket. Itt látszik egy olyan, hogy vda és
    vda1, illetve látszik, hogy vda1 van a /-be felcsatolva,
    ez a root.
    A Linuxos jelölésrendszerben a SATA diszkeket
    sd<és valami betű>-vel,
    NVMe SSD-ket nvme<szám>n<szám>-mal,
    virtuális diszkeket pedig vd<majd egy betű>-vel jelöljük,
    ezeken a partíciókat pedig SATA és virtuális diszkek esetén
    egy számmal, NVMe esetén pedig p és utána egy számmal jelöljük.
    Itt /dev/vda a diszk, /dev/vda1 pedig a partíció.
    
    Ha kilistázom a /dev-et, vagyis devices-t,
    ahol a hardverek fájljai élnek, akkor a sok más fájl közt ott van
    a vda és vda1 is.
    
    Ez azért hasznos, mivel így, ha például
    egy programot akarnék írni, ami biztonsági menti
    a diszkemet, akkor csupán a /dev/vda vagy hasonlót kéne másolnia
    a programomnak egy másik meghajtóra. Emellett a fájlrendszert
    nem érdekli, hogy ő egy diszken vagy egy fájlon van,
    így simán megtehetem, hogy egy fájlrendszeren belüli fájlon
    létrehozok és használok egy fájlrendszert.
    
    Most szeretnék az UNIX-ok architektúrájáról beszélni.
    Unixon a KISS-t követve, jóval modulárisabbak ezek a részek,
    mint mondjuk Windows-on.
    De mik is ezek a részek?
    
    Kezdjük a bootloader-rel. Ennek a feladata az, hogy
    betölti RAM-ba a kernelt és pár,
    a gép beindításához szükséges fájlt, emellet dual-boot
    esetén lehetőséget ad arra, hogy kiválasszuk, hogy mit tölt be.
    Ubuntu-n a bootloader a Grub.
    
    Miután a bootloader betöltötte a kernelt, esetünkben a Linuxot,
    a kernel inicializálja a hardvereket és önmagát, majd beindítja
    az init rendszert, ezután szépen a háttérben kezelgeti a
    hardvereket.
    
    Az init rendszer, esetünkben a systemd, pedig beindít minden
    szolgáltatást, ami a gép futásához kell, illetve amit kértünk.
    Például egy asztali gép esetén a grafikus felületet,
    vagy egy szerver esetén a webszervert.
    
    Az operációs rendszerek azon része, ami a kernelen kívül fut
    az az úgynevezett userland. Mivel az Ubuntu egy GNU/Linux
    oprendszer, így a userland alapját a GNU programok képezik.
    Ezek a programok közt van a cat, cp, rm, ls és sok egyéb
    olyan eszköz, amit elvárunk, hogy legyen egy shellben.
    
    Na de térjünk is át a szárazabb anyagról a gyakorlati részekre!
    Előszöris tanuljunk meg usereket kezelni.
    
    Hozzuk létre a Patrik usert. Ehhez root jogosultság szükséges,
    de szerencsére nekem az van.
    A patrik user létrehozáshoz a sudo useradd -m patrik parancsot
    kéne kiadni, azonban ezen lehet finomítani.
    Én szeretném, hogy Patrik ha shellt indít bash-t kapjon,
    ne sima sh-t. Ehhez a parancshoz hozzá kell adnom a
    -s /bin/bash parancsot is.
    Emellett szeretnék ha szeretnék patriknak jogosultságot adni
    ahhoz, hogy sambán megosszon mappákat, akkor hozzáadhatom
    a sambashare grouphoz a -G sambashare megadásával.
    Így létre is jött Patrik fiókja, de még nincs rajta jelszó,
    nem lehet belépni. Állítsunk neki jelszót!
    Más userek jelszavának állításához érthető okokból
    root jogosultság szükséges.
    Így hát kezdjük is azzal, hogy sudo.
    A passwd paranccsal tudunk jelszót állítani és argumentumként
    adjuk meg azt, hogy patrik, hiszen az ő jelszavát
    akarjuk beállítani.
    Adjunk meg neki valami jó biztonságos jelszót...
    mégegyszer...
    és most már van jelszava, be tud lépni.
    
    Mi van, ha a saját jelszavam szeretném megváltoztani.
    Ehhez érthetően nem kell root. Futtassuk a passwd-t paraméterek
    nélkül.
    Ami most újdonság, hogy megkérdi a korábbi jelszavunk, mivel
    nem használtunk sudo-t, de adjuk is meg neki.
    Most jöhet az új jelszó...
    és megint...
    És kész is vagyunk.
    
    Eközben rájöttem, hogy megbízok Patrikban és szeretnék neki
    root jogokat adni, vagyis hozzáférést a sudo parancshoz.
    Ehhez hozzá kell adnom a sudo grouphoz. Ezt megtehetem
    a sudo usermod -aG (vagyis add group) sudo patrik
    paranccsal.
    
    Tegyük fel, hogy mégse szeretném, hogy Patrik hozzáférjen
    ehhez a géphez. Töröljük a felhasználóját a
    sudo userdel -r patrik paranccsal.
    Az -r kapcsoló azt jelenti, hogy patrik home mappáját
    is szeretném törölni. Ha nem adom meg, akkor a fájljai rajt
    maradnának a gépen.
    
    Debian alapú disztrókon, így Ubuntun is van egy adduser script
    is emellett, ami talán egy kicsit kényelmesebben használható,
    azonban nincs minden gépen szemben a korábbi parancsokkal,
    amik gnu programok.
    
    Hozzuk létre újra patrik felhasználóját, de ezúttal az
    adduser paranccsal a useradd helyett.
    Ha kiadjuk, hogy sudo adduser patrik, akkor az adduser
    végigvezet minket a Patrik fiók létrehozásán.
    Most adjuk meg patrik jelszavát...
    Emellett csomó metaadatot is megadhatunk.
    A Full name azért külön mező, mivel az unixos felhasználónevek
    csak kisbetűs angol karaktereket tartalmazhatnak. Ez a full name
    jelenik meg például a bejelentkezőképernyőn.
    
    Most megint adjuk hozzá patrikot a sudo csoporthoz, viszont
    most ezt az adduser-rel tegyük.
    sudo adduser patrik sudo
    Király, meg is vagyunk.
    
    Most töröljük patrikot, de használjuk a deluser parancsot
    sudo deluser patrik
    kész.
    
    Most, hogy usereket tudunk kezelni, nézzük meg a csoportkezelést.
    Először is nézzük meg milyen csoportok tagjai vagyunk,
    ezt a groups-szal tehetjük meg.
    Nézzük meg, hogy Bélának milyen csoporttagságai vannak:
    ehhez a groups bela parancsot kell kiadni.
    Próbaként hozzuk létre a kszksok csoportot.
    sudo groupadd kszksok
    Nézzük is meg, hogy működött, csináljunk egy mappát és
    tegyük elérhetővé a csoport számára.
    létrehozok egy mappát
    mkdir test
    group ownerré teszem a kszksok-at
    sudo chgrp kszksok test
    és nézzük meg
    ls -la
    
    Most adjuk hozzá magunkat a csoporthoz.
    sudo usermod -aG kszksok mike
    
    Vegyük ki magunkat a tagok közül: