Forked from
Tóth Miklós Tibor / Linux presentation 2020
52 commits behind the upstream repository.
-
Tóth Miklós Tibor authoredTóth Miklós Tibor authored
masodik 7.82 KiB
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: