Secure Shell – biztonságos távkapcsolat két számítógép között – ssh, scp egy Mac mini OS X és egy Linux között

Két Linux/UNIX alapú számítógép között a biztonságos kapcsolatot, titkosított adatátvitelt az úgynevezett secure shell, azaz ssh kapcsolat jelenti. Alapvetően kliens-szerver kapcsolat, és rémesen egyszerű, ha az ember egyszer ráérez.

Először is felfedeztem, hogy az sshd, ssh daemon – vagyis a szerver – nincs installálva a Debian 10-em alatt. No ezen könnyű volt segíteni. Debian alatt alapvetően az apt-get install paranccsal lehet valamit telepíteni (rendszergazdaként). Kapásból legenerálja a szükséges kulcsokat, úgyhogy nem sok dolog van vele. 🙂

root@gergo1:~# apt-get install ssh
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
openssh-server openssh-sftp-server
Suggested packages:
molly-guard monkeysphere rssh ssh-askpass ufw
The following NEW packages will be installed:
openssh-server openssh-sftp-server ssh
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 599 kB of archives.
After this operation, 1,829 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://cdn-fastly.deb.debian.org/debian buster/main amd64 openssh-sftp-server amd64 1:7.9p1-10 [44.6 kB]
Get:2 http://cdn-fastly.deb.debian.org/debian buster/main amd64 openssh-server amd64 1:7.9p1-10 [352 kB]
Get:3 http://cdn-fastly.deb.debian.org/debian buster/main amd64 ssh all 1:7.9p1-10 [202 kB]
Fetched 599 kB in 2s (388 kB/s)
Preconfiguring packages …
Selecting previously unselected package openssh-sftp-server.
(Reading database … 488002 files and directories currently installed.)
Preparing to unpack …/openssh-sftp-server_1%3a7.9p1-10_amd64.deb …
Unpacking openssh-sftp-server (1:7.9p1-10) …
Selecting previously unselected package openssh-server.
Preparing to unpack …/openssh-server_1%3a7.9p1-10_amd64.deb …
Unpacking openssh-server (1:7.9p1-10) …
Selecting previously unselected package ssh.
Preparing to unpack …/ssh_1%3a7.9p1-10_all.deb …
Unpacking ssh (1:7.9p1-10) …
Setting up openssh-sftp-server (1:7.9p1-10) …
Setting up openssh-server (1:7.9p1-10) …
Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time …
2048 SHA256:dOGw/PajE/BBgatmagHg384uQbysjJY2wr6m8WCkfus root@gergo1 (RSA)
Creating SSH2 ECDSA key; this may take some time …
256 SHA256:j8q+pBRwTqbiAvP1X4pL+pHUj7G4aoojCBGv7FYqWIE root@gergo1 (ECDSA)
Creating SSH2 ED25519 key; this may take some time …
256 SHA256:yn8li9pazT1UXV3T+gmo44boWeJU1S6HA7bKDgVpKc0 root@gergo1 (ED25519)
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
rescue-ssh.target is a disabled or a static unit, not starting it.
Setting up ssh (1:7.9p1-10) …
Processing triggers for man-db (2.8.5-2) …
Processing triggers for systemd (241-5) …

Aztán az első “belépés” OS X-ről az ssh paranccsal. A Linux gép ip címe 192.168.0.109, lekérdezni command prompt-ból OS X alatt az “ifconfig“, Debian alatt az “ip addr“, illetve az “ip a” paranccsal lehet. Természetesen a hálózatban “belső ip címeket” használunk, az összes gép “tűzfal mögött” van. 🙂

Mac-mini:~ gvamosi$ ssh 192.168.0.109
The authenticity of host '192.168.0.109 (192.168.0.109)' can't be established.
ECDSA key fingerprint is SHA256:j8q+pBRwTqbiAvP1X4pL+pHUj7G4aoojCBGv7FYqWIE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.109' (ECDSA) to the list of known hosts.
gvamosi@192.168.0.109's password:
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Sep 4 07:08:30 2019
gvamosi@gergo1:~$

Ezek után a w (who is) paranccsal megnézhetjük a bejelentkezetteket.

gvamosi@gergo1:~$ w
18:21:32 up 2 days, 7:36, 2 users, load average: 0.33, 0.60, 0.61
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
gvamosi tty2 tty2 Sat10 2days 1:24m 0.64s /opt/google/chrome/chrome --type=renderer --field-trial-handle=15503761646981189628,17074726826077816693,131072 --lang=en-US --enable-auto-reload
gvamosi pts/1 192.168.0.113 18:21 10.00s 0.00s 0.00s -bash

Látható, hogy a pts/1-en a 192.168.0.113-as IP címről van egy belépett “távoli” felhasználónk. 🙂

És akkor nézzük meg azt a trükköt, hogy ne kérjen többet jelszót, és másoljunk át scp-vel egy file-t. Ezt ezután akár egy automatikus processz (tipikusan egy script) is elvégezheti, pl. mentésbackup – céljából. Ezekről a későbbiekben írok majd bővebben. 🙂

Mac-mini:~ gvamosi$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/gvamosi/.ssh/id_rsa):
/Users/gvamosi/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/gvamosi/.ssh/id_rsa.
Your public key has been saved in /Users/gvamosi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8DpEyLqQO78UnwTlsbdhjxklU7o459DqmUC84Pc6jVs gvamosi@Mac-mini.local
The key's randomart image is:
+---[RSA 2048]----+
| o o.o |
| + + = |
| . = O |
| o o * @ |
|+ = = O S |
|.= * O . |
|o.=.*E+ |
| +.=o+ . |
| o+B. |
+----[SHA256]-----+
Mac-mini:~ gvamosi$ less .ssh/id_rsa.pub
Mac-mini:~ gvamosi$ ssh 192.168.0.109
gvamosi@192.168.0.109's password:
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 16 17:40:12 2019 from 192.168.0.113
gvamosi@gergo1:~$ vi .ssh/authorized_keys
gvamosi@gergo1:~$ logout
Connection to 192.168.0.109 closed.
Mac-mini:~ gvamosi$ ssh 192.168.0.109
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 16 17:42:13 2019 from 192.168.0.113
gvamosi@gergo1:~$ logout
Connection to 192.168.0.109 closed.
Mac-mini:~ gvamosi$ scp ownCloud/Photos/San\ Francisco.jpg 192.168.0.109:
San Francisco.jpg 100% 211KB 211.0KB/s 00:00
Mac-mini:~ gvamosi$

Mi is történik? Először kulcsot kenerálunk OS X alatt az ssh-keygen paranccsal. Aztán a publikus rsa kulcsot (RSA: Rivest-Shamir-Adleman – titkosítási rendszer nyilvános kulcsú titkosításhoz, bemutatása később) átmásoljuk a Linuxszerverre” az authorized_keys file-ba.

Utána csodák csodája már nem kér jelszót. 🙂

Ezután scp-vel átmásoljuk a “San Francisco.jpg” file-t.

Környezeti változók Linux alatt

Beállítani egy környezeti változót az export paranccsal lehet.

gvamosi@gergo1:~$ export KERESS_PENZT_LINUXSZAL=gvamosi.worpress.com

Kiírni egy környezeti változó értékét pedig mi sem egyszerűbb.

gvamosi@gergo1:~$ printenv KERESS_PENZT_LINUXSZAL
gvamosi.worpress.com
gvamosi@gergo1:~$ echo $KERESS_PENZT_LINUXSZAL
gvamosi.worpress.com

Az összes környezeti változót a set, env vagy printenv paranccsal kérdezhetjük le.

gvamosi@gergo1:~$ printenv | sort
COLORTERM=truecolor
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=gnome
DISPLAY=:0
GDM_LANG=en_US.UTF-8
GDMSESSION=gnome
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/12b6ca2c_41b1_4c0d_81ab_573afc40b82a
GNOME_TERMINAL_SERVICE=:1.91
GTK_MODULES=gail:atk-bridge
HOME=/home/gvamosi
KERESS_PENZT_LINUXSZAL=gvamosi.worpress.com
LANG=en_US.UTF-8
LOGNAME=gvamosi
OLDPWD=/home/gvamosi/Documents/irasok/Andreas_Witt-Egy_kidobott_ferfi_elete-20190418-Nagycsutortok
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:.
PWD=/home/gvamosi
QT_ACCESSIBILITY=1
QT_IM_MODULE=ibus
SESSION_MANAGER=local/gergo1:@/tmp/.ICE-unix/1075,unix/gergo1:/tmp/.ICE-unix/1075
SHELL=/bin/bash
SHLVL=0
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TERM=xterm-256color
USER=gvamosi
USERNAME=gvamosi
_=/usr/bin/printenv
VTE_VERSION=5402
WAYLAND_DISPLAY=wayland-0
XDG_CURRENT_DESKTOP=GNOME
XDG_MENU_PREFIX=gnome-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_ID=2
XDG_SESSION_TYPE=wayland
XDG_VTNR=2
XMODIFIERS=@im=ibus

Egy környezeti változót az unset paranccsal “törölhetünk”.

Magyarázat néhány környezeti változóhoz:

USER: az aktuáisan bejelentkezett felhasználó
HOME: a bejelentkezett felhasználó home könyvtára
SHELL: az aktuális felhasználó shell-je
LOGNAME: az aktuális felhasználó neve
PATH: a keresési útvonal parancsok végrehajtásakor (TAB billentyű)
LANG: az aktuális nyelvi beállítás
TERM: az aktuális terminálemuláció

Bővebben az alábbi weboldalon lehet a környezeti változókról olvasni.

https://linuxize.com/post/how-to-set-and-list-environment-variables-in-linux/

Boole-algebra és shell script

Az és, a vagy és a negáció műveletei igen fontosak. Nézzünk egy egyszerű példát.

[ "$#" -ne 2 ] && { echo "Nem megfelelő argumentumszám"; exit; }

Hogy ez hogyan működik egy képzeletbeli script elején? Az && és kapcsolatot fejez ki. Tehát ha nem 2 argumentumot kap a script, akkor kíír egy üzenetet és kilép a programocskból. 🙂 Hogyan lehet ezt megfordítani?

[ "$#" -eq 2 ] || { echo "Nem megfelelő argumentumszám"; exit; }

Az eredmény ugyanaz. A || vagy kapcsolatot fejez ki. Vagy egyenlő 2-vel az argumentum szám, vagy kilép a programból. Az első script részlet algebrailag (A != B) és (igaz), a második (A == B) vagy (igaz).

Az egyik legfontosabb szabály, hogy a nem-és felcserélhető igen-vagy-ra. 🙂

További részletek a Boole-algebráról az alábbi linkeken.

https://hu.wikipedia.org/wiki/Boole-algebra_(informatika)

https://hu.wikipedia.org/wiki/Boole-algebra

Linux parancsok III. – folyamat (processz vagyis process) kezelés

A rendszer illetve felhasználói folyamatok változását a top paranccsal követhetjük nyomon.

gvamosi@gergo1:~$ top
top - 14:07:27 up 10 days, 23:46, 1 user, load average: 1.25, 1.64, 1.48
Tasks: 296 total, 1 running, 295 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.6 us, 2.7 sy, 0.0 ni, 90.2 id, 0.1 wa, 0.0 hi, 0.4 si, 0.0 st
MiB Mem : 7787.5 total, 338.1 free, 5721.7 used, 1727.8 buff/cache
MiB Swap: 7999.0 total, 5819.9 free, 2179.1 used. 1256.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2344 gvamosi 20 0 1374840 286664 77172 S 4.5 3.6 12:53.42 chrome
1078 gvamosi 20 0 3845288 419172 154072 S 4.3 5.3 65:51.87 gnome-shell
651 root 20 0 242112 7888 4120 S 3.3 0.1 44:46.06 polkitd
618 message+ 20 0 10980 4864 2812 S 2.5 0.1 34:15.79 dbus-daemon
9875 gvamosi 20 0 786732 142276 37384 S 2.2 1.8 16:27.54 chrome
2572 gvamosi 20 0 746960 250692 171320 S 2.0 3.1 52:54.91 chrome
2535 gvamosi 20 0 1605200 350008 59044 S 1.2 4.4 57:11.69 chrome
1277 gvamosi 20 0 802672 11396 6860 S 1.0 0.1 12:39.06 gsd-power
259 root 20 0 78056 22700 12216 S 0.7 0.3 7:51.31 systemd-journal
2577 gvamosi 20 0 424236 79836 18900 S 0.7 1.0 13:30.91 chrome
2898 gvamosi 20 0 720348 135476 39892 S 0.5 1.7 6:50.90 chrome
5869 gvamosi 20 0 425680 27296 18704 S 0.5 0.3 1:03.25 gnome-terminal-
24660 root 20 0 23136 2064 1584 S 0.5 0.0 0:02.33 systemd-udevd
626 root 20 0 236956 4252 3864 S 0.3 0.1 4:11.97 iio-sensor-prox
710 root 20 0 1419904 3700 3476 S 0.3 0.0 5:10.92 libvirtd
2891 gvamosi 20 0 1622204 368832 71120 S 0.3 4.6 15:17.82 chrome
3038 gvamosi 20 0 846480 219688 52028 S 0.3 2.8 18:07.01 chrome
6242 gvamosi 20 0 631976 58680 22788 S 0.3 0.7 1:53.68 chrome
6382 gvamosi 20 0 654012 77832 22240 S 0.3 1.0 1:58.41 chrome
31699 gvamosi 20 0 11592 4068 3188 R 0.3 0.1 0:00.30 top
1 root 20 0 170984 7468 5340 S 0.2 0.1 3:27.43 systemd

Jól látható a tetején az “up” azaz 10 napja volt elindítva a gép – persze közben volt sleep státuszban 🙂 -, aztán hogy 1 felhasználó van bejelentkezve, és hogy a load, azaz a kihasználtsága a rendszernek körülbelül 1,5 – ami jónak mondható.

Aztán a folytatásban a teljes taszkok (folyamatok) száma 296, amiből egy van “running”, azaz “futó” státuszban.

Majd a processzor kihasználtság százalékokban: felhsználó, rendszer, idle. Ezt követi a memória és a swap kihasználtsága. 🙂

Ezen általános rendszer-mérőszámok után következnek a processzek, vagyis a folyamatok, pid – processz id-vel, tulajdonos user-rel (többnyire gvamosi, illetve root a példában), mindenféle memóriafoglaltságokkal és cpu (processzor) használattal, végül az eddigi futási idő összesen és a parancs neve. 🙂

Fontos parancs még a teljes processz lista lekérése, a ps axu. Ez az összes processz kilistázása a rendszeren.

gvamosi@gergo1:~$ ps axu | less

Ebben a listában szemügyre vehetjük, a top kimenetéhez hasonlóan, hogy ki mit futtat, illetve mennyi erőforrást vesznek igénybe az egyes folyamatok.

Ha megszámoljuk a sorokat a wc -l (word count) paranccsal, akkor a topban kapott “Tasks total” számot + egyet, a fejléc miatt – kell kapjunk. 🙂

gvamosi@gergo1:~$ ps axu | wc -l
286

Látható, hogy a top parancs óta pár folyamat “bezáródott”.

Nézzük még meg a kill parancsot. Bemutatom, hogyan lehet saját magunk alatt kivágni vele a “fát”. Előbb lekérdezzük a bash shell-ünk id-jét a ps paramccsal, majd -9 -es killel termináljuk a saját shell-ünk. 🙂

gvamosi@gergo1:~$ ps
PID TTY TIME CMD
20646 pts/0 00:00:00 bash
20733 pts/0 00:00:00 ps
gvamosi@gergo1:~$ kill -9 20646

A folyamatokról a teljes leírást státuszdiagrammal az alábbiakban olvashatjuk (angolul).

https://www.tecmint.com/linux-process-management/

Sorvége jel Linux, Mac és Windows alatt, folyamat kezelés parancssorból

Az ún. szövegfile-ok feldolgozása soronként történik. A sorvége karakterek a CR – carriage return, escape szekvenciája \r, (decimális kódja 13, hexadecimálisan pedig 0D, jelölik még ^M, azaz CTRL+M-ként is, “CTRL+V CTRL+M”-ként lehet “előhozni”), illetve az LF – line feed, azaz shell scriptben vagy c-ben jelölve \n (decimális kódja 10, hexadecimálisan pedig 0A).

Linux alatt – illetve OS X alatt is – ez “\n”, klasszikus Mac alatt “\r”, Windows alatt pedig “\r\n”. Látható tehát, hogy teljes káosz. 🙂

https://en.wikipedia.org/wiki/Newline

Nézzünk meg néhány hasznos billentyűzet kódot Linux/UNIX alatt, illetve a folyamat kezelés ide vonatkozó részeit!

CTRL+C: SIGINT, megszakítás, azaz interrupt, vagyis “kill
CTRL+Z
: SIGTSTP, az előtérben futó processz megszakítása, szoktak utána “bg <ENTER>“-t beírni, így a processz háttérben (background) tovább fut, jobs parancs-csal lehet kiírni a futó processzeket, illetve fg (foreground) paranccsal újra “előtérbe hozni” – eleve “háttérben” a sor végi “&” jellel lehet indítani egy folyamatot/processzt
CTRL+D: file vége, úgyis mint exit parancs a shellben, pl. bash-ban

CTRL+L: képernyőtörlés – ugyanaz, mint a “clear” parancs
CTRL+S
: leállítja a képernyőre/terminálba küldött “kimenetet”
CTRL+Q: a CTRL+S-sel leállított kimenetet “folytatja”

https://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/

https://www.thegeekdiary.com/understanding-the-job-control-commands-in-linux-bg-fg-and-ctrlz/

Linux parancsok II. – és a pipeline

Linux illetve UNIX-ok alatt van egy nagyon izgalmas eszköz a fejlesztő vagy rendszergazda kezében. Ez a “|” pipe jel. 🙂

https://www.guru99.com/linux-pipe-grep.html

A “|” pipe jel segítségével az egyik parancs kimenetét a következő parancs bemenetére köthetjük, így létrehozva egy pipeline-t, azaz egy csővezetéket. Értsd: egy parancs STDOUT-ját a következő parancs STDIN-jére lehet kötni. Természetesen több tagon keresztül lehet “vezetni” az adatfolyamot.

Nézzük meg a Linux/UNIX világ két legkedveltebb pager-ét, a more-t és a less-t.

gvamosi@gergo1:~$ ls -lR / | more

gvamosi@gergo1:~$ ls -lR / | less

A közös bennük, hogy az ls -lR miatt várhatóan jó hosszú listába engednek betekintést nyújtani, hiszen erre vannak kitalálva. A more csak előre “lép”, és minden UNIX rendszeren telepítve van, a less oda-vissza hagyja magát scrollozni, és implementációfüggő. 🙂

Bonyolítsuk meg a grep, azaz az egrep (reguláris kifejezések megengedettek, leírása később) funkcióval, és a hiba STDERR kimenetet irányítsuk át a null device-ba, azaz a “semmibe”.

gvamosi@gergo1:~$ ls -lR / 2> /dev/null | egrep "/home/gvamosi:$"
/home/gvamosi:

Ez a parancs egyszer ki fogja írni a “/home/gvamosi:” sztringet, mivel a gvamosi felhasználó által bebarangolható könyvtárak és fájlok között a saját home könyvtára egyszer szerepel. A grep parancs egyébként sor szinten keres szövegben adott mintát (szöveg vagy reguláris kifejezés). 🙂

Hogy miért írok a parancssori csővezetékről, azaz a pipeline-ról? A válasz abban rejlik, hogy ez mindenhol visszaköszön az infotudományban. Akár a TCP/IP adatátviteli protokoll stack, tehát az internetet felépítő protokollstruktúra – hiszen tekinthetjük a hálózatot csővezetéknek, akár egy modern és friss terminológia, a “Pipeline as Code” Jenkins alatt. 🙂

https://hu.wikipedia.org/wiki/TCP/IP

https://jenkins.io/doc/book/pipeline-as-code/

A leggyakoribb parancsok I.

Azután a bizonyos dollár jel után – erről majd később – egy terminálban vagy a konzolon adhatunk a linux rendszerünknek parancsokat.

gvamosi@gergo1:~$ ls -l

Ez a parancs kijelzi egy listában az adott könyvtár tartalmát. A -l egy kapcsoló, azt jelenti, hogy kijelzést kapunk a file típusáról, hogy könyvtár-e vagy file vagy egyéb, a jgosultságokról, írható, olvasható vagy végrehajtható – a részletekről a későbbiekben -, a tulajdonosáról, méretéről, a létrehozás dátumáról és a nevéről.

gvamosi@gergo1:~$ ls --help

Általában igaz, hogy a --help kapcsolóval egy parancs felhasználásáról kaphatunk információkat.

mkdir alma: új könyvtár létrehozása “alma” név alatt
cd alma: váltás a paraméterben megadott “alma” könyvtárba
cd ..: váltás a szülő könyvtárba (eggyel feljebb a hierarchiában)
touch alma/alma.txt: “alma” könyvtár alatt “alma.txt” file létrehozása üres mérettel
rmdir alma: “alma” könyvtár törlése, csak ha üres! – figyelem, nem visszavonható!!
rm alma/alma.txt: “alma.txt” file törlése – figyelem, a törlés végleges, nem visszavonható!!

És búcsúzóul még egy szép parancs:

gvamosi@gergo1:~$ w
07:46:57 up 17:26, 1 user, load average: 0.60, 0.70, 0.81
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
gvamosi tty2 tty2 Mon14 17:26m 18:54 0.05s /opt/google/chrome/chrome

A “w” parancs kijelzi, hogy ki van és kik vannak belépve a számítógépre, és hogy mit is csinálnak nagyjából 🙂 – merthogy a Linux egy többfelhasználós operációs rendszer – mily meglepő. 🙂

Mi fán terem a / – azaz a gyökér vagy root könyvtár – avagy bevezetés a Linux könyvtárstruktúra alapjaiba

Linux alatt, akár az Android telefonokon nincsenek C: D: E: satöbbi “meghajtók”, csupán egy, a gyökér “/” alól elágazó könyvtárfa. 🙂

gvamosi@gergo1:~$ ls -l /
total 408
drwxr-xr-x 2 root root 4096 Jun 28 21:09 bin
drwxr-xr-x 4 root root 4096 Jun 27 06:47 boot
drwxr-xr-x 20 root root 3380 Aug 27 04:49 dev
drwxr-xr-x 153 root root 12288 Sep 2 13:33 etc
drwxr-xr-x 4 root root 4096 Jun 7 03:22 home
lrwxrwxrwx 1 root root 30 Jun 19 03:55 initrd.img -> boot/initrd.img-4.19.0-5-amd64
lrwxrwxrwx 1 root root 29 Jun 19 03:55 initrd.img.old -> boot/initrd.img-4.9.0-9-amd64
drwxr-xr-x 18 root root 4096 Jun 19 03:50 lib
drwxr-xr-x 2 root root 12288 Jun 19 03:33 lib32
drwxr-xr-x 2 root root 4096 Jun 19 03:32 lib64
drwxr-xr-x 2 root root 12288 Jun 19 03:33 libx32
drwx------ 2 root root 16384 Aug 26 2017 lost+found
drwxr-xr-x 4 root root 4096 Aug 26 2017 media
drwxr-xr-x 2 root root 4096 Jul 23 2017 mnt
drwxr-xr-x 7 root root 4096 Aug 22 03:33 opt
dr-xr-xr-x 289 root root 0 Aug 27 01:11 proc
drwxr-xr-x 15 root root 4096 Aug 22 03:34 root
drwxr-xr-x 29 root root 860 Sep 2 13:33 run
drwxr-xr-x 2 root root 12288 Jun 27 17:34 sbin
drwxr-xr-x 2 root root 4096 Jul 23 2017 srv
dr-xr-xr-x 13 root root 0 Sep 2 13:36 sys
drwxrwxrwt 26 root root 299008 Sep 2 13:38 tmp
drwxr-xr-x 13 root root 4096 Jun 19 03:46 usr
drwxr-xr-x 12 root root 4096 Aug 28 2017 var
lrwxrwxrwx 1 root root 27 Jun 19 03:55 vmlinuz -> boot/vmlinuz-4.19.0-5-amd64
lrwxrwxrwx 1 root root 26 Jun 19 03:55 vmlinuz.old -> boot/vmlinuz-4.9.0-9-amd64

Mit takarnak a gyökérből nyíló könyvtárnevek? Alább olvasható a teljesség igénye nélkül egy rövid ismertető.

bin: fontos binárisok, azaz “futtatható” programok könyvtára
etc: rendszerbeállítások könyvtára
home: felhasználók “otthon” könyvtárai
lib: rendszerkönyvtárak
media, mnt: külső kötetek, pl. egy pendrive “helye”
root: a rendszergazda “otthon” könyvtára 🙂
sbin: fontos rendszer binárisok
tmp: ideiglenes file-ok könyvtára
usr: felhasználói programok és könyvtárak
var: adatok

Megjegyzés: a merevlemez (HDD) vagy SSD (Solid State Disk) minden partíciójának (fdisk parancs) saját filerendszere van. Filerendszer ellenőrzésére és javítására az e2fsck parancs használatos. Segítségével ext2, ext3 és ext4 filerendszereket vizsgálhatunk. Ezek a Linux saját filerendszerei. Jelenleg a legújabb ext4-es filerendszert használom én is. Filerendszert vizsgálni általában csak olvasható módban mount-olt köteten lehetséges (mount parancs leírása később).

https://wiki.archlinux.org/index.php/File_systems_(Magyar)