diff --git "a/els\305\221 vide\303\263.md" "b/els\305\221 vide\303\263.md" index 448d5d279846733071900662e2346ecc0886a589..29a42c428eee8f21f1453ffa0849da072c2ffeb5 100644 --- "a/els\305\221 vide\303\263.md" +++ "b/els\305\221 vide\303\263.md" @@ -2,11 +2,100 @@ ## Mi is a Linux +A [Linux](https://www.kernel.org/) önmaga csak egy kernel, nem tartalmaz egy programot sem. +Amikor Linuxról beszélünk, általában GNU/Linux-ra gondolunk, +ami azt jelenti, hogy Linux kernelen futtatunk [GNU +rendszerprogramokat](https://www.gnu.org/software/coreutils/) és könyvtárakat. +<Note type="warning" label="Megjegyzés"> + +Ha Linux-ot mondunk ebben a segédletben, sok esetben itt is +GNU/Linux-ra gondolunk + +</Note> + +<Note type="tip" label="Extra infó"> + +Vannak nem GNU programokat használó Linux [disztribúciók](#disztribúciók) is, +pl: az Alpine Linux vagy az Android + +</Note> + +### Disztribúciók + +Nem lenne túl kényelmes kézzel lefordítani és helyére másolni +minden programot (beleértve a fordítót és kernelt is). +Ennek a problémának az áthidalására születtek meg +a Linux disztribúciók, vagy röviden disztrók. + +Egy disztró feladatai: +- telepítés megkönnyítése + - telepítő diszk, akár grafikus telepítővel + - telepítéskor alap rendszerprogramok feltelepítése +- használat megkönnyítése + - csomagkezelő biztosítása a könnyű és biztonságos + programtelepítéshez + - értelmes alapbeállítások programokhoz +- segítségkérés + - minden disztrónak van fóruma, soknak wikije is, + így az esetleges hibákra gyorsan lehet találni megoldást + +[Nagyon sok disztró van](https://upload.wikimedia.org/wikipedia/commons/8/83/Linux_Distribution_Timeline_27_02_21.svg), +mindenki meg tudja találni a magának megfelelőt. + +Az [Ubuntu](https://ubuntu.com/) a legelterjedtebb disztró, +a továbbiakban is Ubuntut fogunk használni, de a legtöbb dolog +univerzális. + +### GUI + +Linux-ra van nagyon sokféle GUI shell (vagy Desktop Environment, DE), +a legelterjedtebbek a +Gnome, KDE, Xfce. + +<center> +<ImageZoom + src="pics/ubuntu.jpg" +/> +Gnome Ubuntun +<br> +</center> +<br> + +<center> +<ImageZoom + src="pics/kde.jpg" +/> +KDE +<br> +</center> +<br> + +<center> +<ImageZoom + src="pics/xfce.png" +/> +Xfce +<br> +</center> +<br> + + +<center> +<ImageZoom + src="pics/elementary.png" +/> +elementary OS +<br> +</center> +<br> + +Az asztali számítógépre szánt disztrókon általában alapértelmezetten +telepítve van valamilyen DE. ## CLI, terminál, shell -<Note type="tip" label> +<Note type="tip" label="Megjegyzés"> Ez a fejezet sok fogalmat tartalmaz, kérlek **_ne_** magold be ezeket. Csupán annyi a célja a fejezetnek, hogy akik nemigazán @@ -27,15 +116,11 @@ hogy bárkinek is be kell mutatni, hogy mit jelent. Ez jeleníti meg a karaktereket és adja meg a programnak a beírt karaktereket. Régebben külön céleszközök voltak, ma már programok. -Miki: ide rizsa pls - ### Shell Egy olyan CLI program, amibe parancsokat lehet bepötyögni és a shell a megfelelő programokat elindítva és összekapcsolva<sup>(erről később lesz szó)</sup> lefuttatja azt. -Miki: ide is - ### Pár ismertebb shell #### `sh` @@ -73,7 +158,7 @@ alapbeállításokkal is nagyon kényelmes használni. Azonban *nem* POSIX shell, vagyis a következőekben bemutatott parancsok nem feltétlenül működnek benne. -<Note type="warning" label> +<Note type="warning" label="Figyelem"> Innentől bash-ről lesz szó. Ha olyat olvasol, hogy "írjuk be a shellünkbe", akkor ott a "bashünkre" gondolunk. @@ -108,50 +193,174 @@ Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben. ### Pár shelles fogalom -#### Mi a parancs? - -#### Redirekció `>` - -#### Pipe `|` - -#### Shell execution - -#### Manual page `man` +- parancs: egy program, a kapcsolói, és egyéb opciók + - általában: `parancs --kapcsoló -k fájl.txt` + - kapcsolók: programok különböző funkcióit + lehet velük ki-be kapcsolni + - pl: + - `ls -la`: kilistáza a mostani mappa tartalmát + - `ls`: listázó program + - `-l`: listaként jelenjen meg + - `-a`: rejtett fájlokat is megjeleníti + - `ls -a en_mappam`: kilistázza az `en_mappam` mappa tartalmát + a rejtett fájlokkal együtt + - `ip address`: kiírja a gépünk IP címeit + - `cd en_mappam`: belelép az `en_mappam` mappába + - `cd ..`: egy mappával feljebb lép +- redirekció (`>`, `<`) + - `>`: átirányítja egy program kimenetét egy fájlba + - `<`: egy program konzolos bemenetét egy fájlból olvassa + - pl: + - `ls > fajlok.txt`: a jelenlegi mappában létrehozza + a `fajlok.txt` fájlt és beleírja a jelenlegi + mappában lévő fájlok és mappák neveit +- pipe (`|`) + - egy program kimenetét beleírja egy másik program bemenetébe + - pl: + - `ls -l *.txt | grep alma`: + - `ls -l *.txt`: kíírja a jelenlegi mappában lévő + txt fájlok neveit, ez lesz a grep bemenete + - `grep alma`: kiszűri a bementén kapott szövegből + azokat a sorokat, amikben nem szerepel az alma szó + - → kilistázza azokat a txt fájlokat, amelyek nevében + szerepel az, hogy alma. + +- shell execution `"$(parancs)"` + - egy program kimenetét beleteszi egy stringbe + - pl: + - `echo a mappa tartalma: $(ls)` + #### [Egyéb hasznos shell cuccok](https://devhints.io/bash) ### Szövegszerkesztők -#### Nano - -#### Egyebek +- `nano`: egyszerű szövegszerkesztő + - terminál alján kiír pár támogatott billentyűkombinációt + - használat: + - `nano <fájl>` + - írkáljunk + - `CTRL+S` ment + - `CTRL+X` bezár +- `vi`: bonyolultabb picivel, de többet tud + - `vim`: vi improved, továbbfejlesztés + - `nvim`: neovim, vim továbbfejlesztés + - használat + - `vim <fájl>` + - `i` (insert mode) + - írkáljunk + - `ESC` (normal mode) + - `:wq` (parancs: write, quit) + - a fejlettebb funkcióit nem mutatjuk most be + +### Fontosabb shell parancsok/programok + +- `ls`: listáz +- `man <parancs>`: "manual", felhasználói útmutató programokhoz + - pl: `man ip` +- `cat <fájlok>`: fájlokat ír ki +- `less`: a bemenetén kapott szöveget görgeti, így lassabban +lehet olvasni, mint ahogy jön +- `echo <szöveg>`: kiír egy szöveget +- `cd <mappa>`: mappát vált +- `mkdir <mappa>`: mappa létrehozása +- `rm <fájlok>`: fájlok törlése +- `rmdir <mappa>`: mappa törlése +- `touch <fájl>`: üres fájl létrehozása # Csomagkezelés ### Mi a csomag? +**Gyakorlatilag egy program, ami tudsz telepíteni.** +*Bővebben:* A különböző programokat nevezzük csomagoknak (package), melyek -a bináris fájlon kívül különböző konfigurációs fájlokat és +a bináris (futtatható) fájlokon kívül különböző konfigurációs fájlokat és a program más programoktól való függőségeit is tartalmazza. ### Hogyan telepítsünk csomagokat? A programok telepíthetjük [kézzel](http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-10.1.pdf) (8.2-es fejezet), de ez általában nehézkes művelet és nem valami hatékony, -ezért csomagkezelőt (package maganer) szoktunk használni a csomagok -telepítéséhez. A csomagkezelő egy egyszerű program, mellyel telepíthetünk, -frissíthetünk, eltávolíthatunk és kereshetünk csomagokat. +ezért csomagkezelőt (package manager) szoktunk használni a csomagok +telepítéséhez. A csomagkezelő egy egyszerű program, mellyel biztonságosan telepíthetünk, +frissíthetünk, eltávolíthatunk és kereshetünk csomagokat. +Egy csomagkezelő frissen tudja tartani a rendszert, kezeli a függőségeket és ütközéseket. Mi az apt nevű csomagkezelőt fogjuk használni a továbbiakban. ``` +[patrik@patrik-laptop ~]$ cowsay test +bash: cowsay: command not found [patrik@patrik-laptop ~]$ sudo apt update +Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB] +Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB] +[...] +Fetched 17.2 MB in 2s (11.2 MB/s) +Reading package lists... Done +Building dependency tree +Reading state information... Done +1 package can be upgraded. Run 'apt list --upgradable' to see it. [patrik@patrik-laptop ~]$ sudo apt search cowsay +Sorting... Done +Full Text Search... Done +cowsay/focal 3.03+dfsg2-7 all + configurable talking cow + +cowsay-off/focal 3.03+dfsg2-7 all + configurable talking cow (offensive cows) + +xcowsay/focal 1.5-1 amd64 + Graphical configurable talking cow + [patrik@patrik-laptop ~]$ sudo apt install cowsay +Reading package lists... Done +Building dependency tree +Reading state information... Done +[...] +After this operation, 46.4 MB of additional disk space will be used. +Do you want to continue? [Y/n] y +[...] +Setting up cowsay (3.03+dfsg2-7) ... +[patrik@patrik-laptop ~]$ cowsay test + ______ +< test > + ------ + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || [patrik@patrik-laptop ~]$ sudo apt upgrade +[...] +The following packages will be upgraded: + libzstd1 +1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Need to get 237 kB of archives. +After this operation, 0 B of additional disk space will be used. +Do you want to continue? [Y/n] y +[...] [patrik@patrik-laptop ~]$ sudo apt remove cowsay +[...] +The following packages will be REMOVED: + cowsay +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +After this operation, 93.2 kB disk space will be freed. +Do you want to continue? [Y/n] y +Removing cowsay (3.03+dfsg2-7) ... +[patrik@patrik-laptop ~]$ cowsay test +bash: cowsay: command not found +[patrik@patrik-laptop ~]$ ``` +<Note type="success" label="Infó"> + +Ahogy látod, kihagytunk részeket a parancsok kimenetéből. +Ez azért van, mert nem fér bele értelmesen a doksiba. +A videón látható ezek kimenete, de bátran próbáljátok ki ti is. + +</Note> + Az `apt update` paranccsal frissíthetjük az apt adatbázisát, mely a csomagok elérhetőségéről tárol adatokat. @@ -172,10 +381,11 @@ A különböző Linux disztribúciók különböző csomagkezelőket használnak az alábbi táblázatban található csomagkezelők is. Néhány csomagkezelő disztribúcióhoz van kötve, azonban egyre jobban kezdenek elterjedni a disztribúcióktól független csomagkezelők is. -- `apt` Debian és Ubuntu alapú disztrókon -- `dnf` Fedora -- `pacman` Arch Linux -- `flatpak` és `snap` disztrófüggetlen +- `apt`: Debian és Ubuntu alapú disztrókon +- `dnf`: Red Hat (alapú) disztrók: Fedora, CentOS, Red Hat Enterprise Linux +- `pacman`: Arch Linux, Manjaro +- `flatpak` és `snap`: disztrófüggetlen, mindenhol működik, ha [feltelepítjük](https://flatpak.org/setup/) egy +disztróspecifikus csomagkezelővel | parancs | apt | dnf | pacman | snap | flatpak | |---|---|---|---|---|---| @@ -183,48 +393,76 @@ azonban egyre jobban kezdenek elterjedni a disztribúcióktól független csomag | adatbázis frissítése | update | check-update | -Sy | automatikus | a frissítéssel együtt ez is megtörténik (update) | | frissítés | upgrade | upgrade | -Syu | automatikus (ha kézzel akarod: refresh) | update | | törlés | remove | remove | -R | nincs ilyen | nincs ilyen | -| törlés beállításokkal | purge | nincs ilyen | -Rn | remove | uninstall | +| törlés beállításokkal | purge | nincs ilyen | -Rns | remove | uninstall | | keresés | search | search | -Ss | find | search | +--- + +<Note type="danger" label="Légy óvatos"> + +Itt szó lesz két azonos nevű, de különbőző dologról. +- `root` user +- `root` mappa + +A kettő teljesen független egymástól, ne keverjük össze. + +</Note> + ## Hogyan néz ki a Linux fájlrendszere? -### [Könyvtárak](https://www.linux.com/training-tutorials/linux-filesystem-explained/) +UNIX-on a mappastruktúra a `/`-ből indul, ellenben a Windows-zal, ahol a +meghajtók külön betűket kapnak (`C:\ `, `D:\ `, stb). +Emellett UNIX-on a mappaelválasztó a `/`, míg Windows-on a `\ `. -``` -[patrik@patrik-laptop ~]$ tree -L 1 / -/ -├── bin -> usr/bin -├── boot -├── dev -├── etc -├── home -├── lib -> usr/lib -├── lib64 -> usr/lib -├── lost+found -├── mnt -├── opt -├── proc -├── root -├── run -├── sbin -> usr/bin -├── srv -├── sys -├── tmp -├── usr -└── var -``` +Itt a rendszermeghajtó lesz a `/` <sup>(root, ejtsd: rút)</sup>, +minden mappa innen indul. Erre fel lehet csatolni (`mount`-olni) más meghajtókat is, +tetszőleges mappákba. Például, ha a rendszerünket egy SSD-re telepítjük, majd egy +HDD-t felcsatolunk a `/mnt/HDD` mappába, akkor: +- a `/home/béla/random_file.txt` az SSD-n lesz +- a `/mnt/HDD/cucc/random_file.txt` pedig a merevlemezen lesz -#### root `/` +Ennek a megközelítésnek egy nagy előnye, hogy bármit tehetünk bárhova, +például - az előző példát folytatva - ha azt szeretnénk, hogy a fájljaink +a merevlemezen legyenek, de a rendszer és a programok az SSD-n, hogy felcsatoljuk +a merevlemezt a `/home`-ra, így a userek fájljai a merevlemezre kerülnek. -#### home `/home` +### [Könyvtárak](https://www.linux.com/training-tutorials/linux-filesystem-explained/) -#### konfigurációs fájlok `/etc` +<Note type="tip" label="Megjegyzés"> -#### `/var` +A fájlrendszer mappastruktúráját nem kell tudni fejből, +elég ha tudod, hogy a konfigurációs fájlokat a `/etc`-ben szokás keresni +és a userek a `/home/<username>` alatt élnek. -#### `/usr` +</Note> -#### `/lib` +- `/bin`: "binaries", futtatható programok +- `/boot`: bootloader, kernel és egyéb indításhoz szükséges fájl<sup>erről később lesz szó</sup> +- `/dev`: "devices", eszközök<sup>erről később lesz szó</sup> +- `/etc`: konfigurációs fájlok +- `/home`: userek fájljai +- `/lib`: "libraries", programok futásához szükséges könyvtárak +- `/lib64`: 64 bites `/lib` +- `/mnt`: felcsatolt meghajtók +- `/opt`: "optional programs", néhány program itt él <sup>(olyan programok, amik nem kötődnek a rendszerhez)</sup> +- `/proc`: futó programokról információk<sup>erről később lesz szó</sup> +- `/root`: a [root user](#user-ek-és-groupok) home-ja +- `/run`: rendszerindításonként újraépül, a futó szolgáltatásokhoz való csatlakozásban segít <!-- TODO --> +- `/sbin`: "system binaries", rendszerprogramok +- `/srv`: "servers", a gépen futtatott szerver programok fájljai +- `/sys`: "system", hardvereléréshez kell<sup>erről később lesz szó</sup> +- `/tmp`: "temporary", ideiglenes fájlok, RAM-ban tartva +- `/usr`: "user installed", a telepített csomagok pakolnak ide fájlokat +- `/var`: szolgáltatások tárhelyei + +### Speciális "mappák" + +- `.`: a jelenlegi mappa + - `././././.`: ez is a jelenlegi mappa, mert a jelenlegi mappa jelenlegi mappájának [...] jelenlegi mappája +- `..`: az egy szinttel feljebb lévő mappa + - `/..` == `/`, root fölé nem lehet menni +- `~`: a mi userünk home mappája + - `~béla`: a `béla` user home mappája ## Jogosultságkezelés @@ -233,7 +471,35 @@ A UNIX permission rendszer elemei: - group-ok - módok -Minden fájl valamelyik user-hez és group-hoz tartozik valamilyen módon. +Minden fájl és mappa egy user-hez és egy group-hoz tartozik. +Minden fájlra és mappára meg lehet adni, hogy mi legyen +a módja (továbbiakban permissionjei), ezek: +- `user`: a birtokló user tudja-e: + - `r`: read, olvasni + - `w`: write, írni + - `x`: futtatni (ha fájl) vagy a tartalmát listázni (ha mappa) +- `group`: a birtokló csoport tagjai tudják-e: + - `r`: olvasni + - `w`: írni + - `x`: futtatni vagy listázni +- `others`: bárki más tudja-e: + - `r`: olvasni + - `w`: írni + - `x`: futtatni vagy listázni + +<Note type="tip" label="Extra infó"> + +Van két extra permission, a `setuid` és `setgid`. +Ezekkel meg lehet adni, hogy egy program a tulajdonos nevében +vagy tulajdonos csoport nevében fusson. +Ezt a permission-t használja pár program, amit mindennapi userek +is kell, hogy tudjanak futtatni, de mégis kell valami, csak nagyobb +jogosultsággal elérhető funkció bele. + +Ezen kívül van egy ma már nem igazán használt permission is, +a "sticky bit", erről [itt](http://permissions-calculator.org/info/#sticky-bit) olvashatsz. + +</Note> Mindezek számok alapján vannak tárolva, de a programok okosan feloldják nevekre ezeket. @@ -243,12 +509,152 @@ de a programok okosan feloldják nevekre ezeket. Egy user az pont ugyanaz, mint aminek elképzelted, egy felhasználó, aki tud programokat futtatni. -Egy különleges felhasználó a `root`, ő a főfelhasználó, -az ő nevében lehet csak a rendszerbeállításokat módosítani. +Egy különleges felhasználó a `root`, ő a főfelhasználó (super-user), +az ő nevében lehet csak a rendszerbeállításokat módosítani, +ez a Windows-os "Rendszergazda" vagy "Adminisztrátor" megfelelője. Minden userhez tartozik egy ugyanolyan nevű group is, azonban egy user több groupban is benne lehet. -### Jogosultságok +### Példa a jogosultságokra + +Alul látható, hogy hogy néz ki egy listázás `ls`-sel. +A permission-ök user, group, other sorrendben követik egymást. + +<Note type="tip" label="Tip"> + +A különböző fájlokhoz/mappákhoz tartozó magyarázatokat +lenyíló szövegként tettük az oldalra, hogy össze tudd +nézni a magyarázatot és a shell-t. + +</Note> + +``` +[mike@thinkyboi permissions]$ ls -la -tr +total 0 +drwxr-xr-x 3 mike mike 120 Mar 11 13:19 . +drwxrwxrwt 21 root root 640 Mar 11 04:20 .. +-rw-r----- 1 root ftp 0 Mar 11 13:37 egyik +-rw-r--r-- 1 mike daemon 0 Mar 11 13:37 másik +-rwx------ 1 mike mike 0 Mar 11 13:37 harmadik +drwxr-xr-x 2 mike daemon 40 Mar 11 13:37 negyedik +-rwsr-sr-x 1 mike mike 0 Mar 11 13:37 ötödik +``` -### Speciális jogosultságok \ No newline at end of file +<details> +<summary> + <code>ls -la -tr</code> +</summary> + +- `ls`: fájlokat és mappákat listázó program +- `-la` + - `l`: listaként + - `a`: a `.`-tal kezdődő fájlokat is +- `-tr` + - `t`: idő szerint rendezve + - `r`: visszafelé rendezve + +(ezt meg lehetne adni úgy is, hogy `ls -latr`, +de az olvashatóság kevéért mi külön vettük) + +</details> + +<details> +<summary> + <code>.</code> (a jelenlegi mappa, vagyis `permissions`, ami a prompt-ból látszik) +</summary> + + - `d`: egy mappa + - `rwx`: a birtokos usernek (`mike`) van joga: + - olvasni + - írni + - listázni + - `r-x`: a birtokos csoportnak (szintén `mike`) van joga: + - olvasni + - listázni + - `r-x`: mindenki másnak van joga: + - olvasni + - listázni + - → bárki meglesheti mi van benne, de csak `mike` + tehet bele dolgokat + +</details> + +<details> +<summary> +<code>..</code> (az eggyel e fölött lévő mappa) +</summary> + + - `d`: egy mappa + - `rwx`: `root` user mindent csinálhat vele + - `rwx`: `root` group mindent csinálhat vele + - `rwt`: mindenki más is bármit csinálhat, de mivel a mappa + "sticky", így ha valakinél meg van nyitva valami benne, azt + más nem piszkálhatja + - `t` == `x` + sticky bit + +</details> + +<details> +<summary> +<code>egyik</code> +</summary> + + - egy file (nem `d`-vel kezdődik a permission sor) + - `rw-`: `root` user tudja olvasni és írni + - `r--`: `ftp` csoport tagjai tudják olvasni + - `---`: a többiek nem tudnak semmit csinálni vele + +</details> + +<details> +<summary> +<code>másik</code> +</summary> + + - egy file + - `mike` tudja olvasni és írni + - `daemon` csoport tagja tudják olvasni + - mindenki más is tudja olvasni + +</details> + +<details> +<summary> +<code>harmadik</code> +</summary> + + - egy file + - `mike` tudja írni, olvasni, futtatni + - `x`: mivel lehet futtatni, ez vagy egy program, + vagy hibát dob, ha megpróbáljuk futtatni + +</details> + +<details> +<summary> +<code>negyedik</code> +</summary> + + - egy mappa + - mindenki tudja olvasni és listázni, de csak `mike` tud benne + fájlt létrehozni + + +</details> + +<details> +<summary> +<code>ötödik</code> +</summary> + +- `rws`: `mike` tudja futtani, és ha futtatva van bárki által, + akkor is `mike` usere nevében fut + - `s` == `x` + setuid +- `r-s`: `mike` csoport tagjai tudják olvasni és futtatni, és + ha bárki futtatja, akkor is kap `mike` csoporttagságot a program +- `r-x`: bárki futtathatja +- → bárki olvashatja és futtathatja, és ha futtatja, akkor + `mike` nevében fog futni a program + +</details> \ No newline at end of file diff --git a/index.html b/index.html index d85fe465fa123650335883cd39ad240c0bfced53..a3837487fc9282fffb6e97ae48d259768b6e47e3 100644 --- a/index.html +++ b/index.html @@ -71,6 +71,7 @@ ], fetchOptions: { cache: 'no-cache' }, }); + console.log("i like your curiosity"); } init(); </script> diff --git a/pics/elementary.png b/pics/elementary.png new file mode 100644 index 0000000000000000000000000000000000000000..5149a2f2751bdfe7961c3b4b046aa4a340effe78 Binary files /dev/null and b/pics/elementary.png differ diff --git a/pics/kde.jpg b/pics/kde.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01bbfc0b240a27483920cbb62c3104e25d2f1fe6 Binary files /dev/null and b/pics/kde.jpg differ diff --git a/pics/ubuntu.jpg b/pics/ubuntu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b91f0549d98aa7863d657e0f16be17f518e507d Binary files /dev/null and b/pics/ubuntu.jpg differ diff --git a/pics/xfce.png b/pics/xfce.png new file mode 100644 index 0000000000000000000000000000000000000000..7be2b70c423524cdc1f8e0f311614ddf713cff6c Binary files /dev/null and b/pics/xfce.png differ