Newer
Older
<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.
- 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.
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 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/
`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:
`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$
```
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
`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.).
`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`
`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`
`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:~$
```
`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:~$
```
`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
### 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.
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.
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
## 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
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
- `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