Operační systém Linux poskytuje možnost pracovat pod různými uživatelskými účty. To znamená, že každý uživatel má po přihlášení k dispozici svoje vlastní soubory a v nich programy a nastavení. Různí uživatelé mají různá práva, do kterých spadají i práva na čtení, zapisování a spouštění souborů.
Linuxový příkazový řádek WebSupport pro svůj hosting poskytuje i jako webovou konzoli, ve které můžeme pracovat pomocí webového prohlížeče jako je Google Chrome. Stejně tak je s ní možné spravovat Virtuální server (VPS). Získáme tak přístup k linuxovému příkazovému řádku z prostředí, které funguje nezávisle na operačním systému.
Systém souborů
V Linuxu existuje standard, podle kterého se v určitých složkách nacházejí určité soubory. Ne všechny linuxové distribuce a programy tento standard přesně dodržují, ale převážně platí tato hierarchie:
Cesta ke složce | Popis |
/ (root, kořen) | Kořenová složka je začátek všech složek a souborů, protože v ní jsou umístěné všechny ostatní soubory a složky. |
/bin (jako binary) | Zde jsou umístěné soubory příkazů, které používá operační systém. |
/boot | Zde najdeme statické soubory programu, který spouští (zavádí) operační systém Linux (tzv. bootloader). |
/dev (jako device) | Zde jsou umístěné soubory zařízení. Podobně to je ve složkách /proc a /sys. Více níže, u druhů souborů c a b. |
/etc (jako et cetera) | Zde najdeme konfigurační soubory lokálního počítače. Například v souboru /etc/passwd najdeme informace o uživatelích. |
/lib (jako library) | Zde jsou umístěné základní sdílené knihovny a moduly jádra. |
/media | Do této složky se připojují (montují) přenosná média jako jsou USB klíče. Linux totiž nepozná disky jako Windows (např. disk C:\), ale připojené pevné disky a ostatní vstupní a výstupní zařízení vždy propojí s konkrétním souborem (více níže, u druhů souborů c a b.), nebo obsah zařízení zařadí (namontuje) pod konkrétní složku v této složce (např. /media/usb1). |
/mnt (jako mounted) | Sem se připojují (montují) dočasně připojené systémy souborů. |
/opt (jako optional) | Přídavné softwarové balíčky (volitelný software). |
/sbin (jako super-binaries) | Zde najdeme důležité soubory systému, které obyčejně fungují pouze pod uživatelem root. |
/root | Domovská složka super-administrátora Linuxu. V Linuxu se uživatel, který může všechno, nazývá root (kořen). Přihlašovat se pod účtem uživatele root může představovat vážné bezpečnostní riziko, a tak se na spouštění příkazů v administrátorském režimu v Linuxu vžilo používání příkazu sudo (jako superuser do nebo novější substitute user do). |
/home | Domovská složka pro všechny uživatele, kromě uživatele root. Uživatel s jménem Tibor by tedy používal domovskou složku /home/tibor , ve kterém by měl právo číst, zapisovat i spouštět soubory. |
/tmp (jako temp) | Dočasné soubory. Při restartu systému jsou odstraněné. |
/usr (jako UNIX System Resources) | Zde jsou umístěné soubory příkazů, které spouští uživatel. Pokud potřebujeme vědět cestu k souboru, který spouštíme po zadání příkazu, použijeme příkaz which (např. which ls ). |
/var (variable) | Proměnlivé údaje jako dočasné soubory, systémové záznamy, sdílené soubory aplikací nebo soubory uživatelských poštovních schránek. |
/proc (ako processes) | Složka, která obsahuje informace o jádře a procesech. Podobně to je ve složkách /dev a /sys. Více níže, u druhů souborů c a b. |
/run | Sem si systémové procesy ukládají svoje dočasné údaje. |
/srv (jako server) | Sem si ukládají údaje servery. Např. FTP server zde může mít složku /srv/ftp. |
/sys | Jde o složku, který obsahuje informace o připojených zařízeních. Podobně to je ve složkách /dev a /proc. Více níže, u druhů souborů c a b. |
Druhy souborů
V Linuxu hraje soubor velkou roli – v Linuxu je všechno soubor. V souborech najdeme uložená nastavení programů, samotné programy, a též obsah vytvořený uživatelem. Jedním souborem můžeme odkazovat na jiný soubor a dokonce i složka je v Linuxu jen druh souboru. V souborech jsou uložené informace o komponentech a zařízeních počítače a přes tyto soubory dokážeme s počítačem komunikovat.
V Linuxu existuje vícero druhů souborů. V tomto návodě se budeme blíže zaobírat pouze s běžně používanými druhy (první 3 v tabulce), které si nejdříve vytvoříme ve složce ~/test
:
mkdir ~/test cd ~/test touch obycejny_soubor.txt touch .skryty_soubor.txt mkdir slozka ln -s obycejny_soubor.txt obycejny_soubor-odkaz.txt
O který druh souboru jde zjistíme z prvního znaku dlouhého seznamu souborů:
ls -lah
Vypíše se seznam souborů a složek, ze kterého na základě prvního znaku z každého řádku zjistíme, o jaký druh souboru jde:
Označení druhu souboru | Popis |
– (pomlčka) | Obyčejný textový soubor. Pokud má soubor před názvem tečku, znamená to, že je skrytý a nezobrazuje se v seznamu souborů, pokud nepoužijeme přepínač -a. Skryté jsou především konfigurační soubory, protože k nim uživatel většinou nepotřebuje přímý přístup. |
d (jako directory) | Složka je v Linuxu pouze druh souboru, takže o skrývání složek platí to stejné jako o skrývaní souborů. |
l (jako link) | Odkaz. Zde odkazuje soubor obycejny_soubor-odkaz.txt na soubor obycejny_soubor.txt . To znamená, že reálně existuje pouze obsah souboru obycejny_soubor.txt , přičemž odkazující soubor tento obsah vždy jen přebírá. |
c (jako character device) | Určuje soubor zařízení, které komunikuje tak, že posílá znak (character) po znaku. Příkladem je generátor náhodných znaků: ls -lah /dev/random |
b (jako block device) | Určuje soubor zařízení, které komunikuje tak, že posílá celé bloky (více znaků najednou). Příkladem je připojení (namontování) souboru jako blokového zařízení: ls -lah /dev/loop0 |
p (jako pipe) | Poskytuje způsob jednostranné komunikace mezi dvěma procesy. |
s (jako socket) | Poskytuje způsob oboustranné komunikace mezi dvěma procesy. |
Spravujeme uživatele
Když už známe systém a druhy souborů v Linuxu, můžeme přejít ke správě uživatelů. Užívatele vytváříme pomocí příkazu useradd
takto:
sudo useradd -m test
Právě jsme vytvořili uživatele se jménem test
(v souboru /etc/passwd
), který se automaticky zařadil do svojí primární nově vytvořené stejnojmenné skupiny test
(v souboru /etc/group
). Zároveň se vytvořila domovská složka /home/test
(přepínač -m
). Aby se nově vytvořený uživatel mohl přihlásit, musíme mu nejdřív přidělit heslo:
sudo passwd test
Na požádání dvakrát zadáme silné heslo a následně si ověříme, jestli se uživatel a skupina opravdu vytvořili:
id test
Vypíše se číselné a slovní označení:
- uživatele (uid jako user identifier),
- primární skupiny (gid jako group identifier) a
- všech skupin (groups), do kterých je uživatel zařazený – pokud jich je víc, jsou oddělené čárkou.
Aby nový uživatel mohl zasahovat do systémových nastavení pomocí příkazu sudo
, musí být zapsaný v souboru /etc/sudoers
. Z bezpečnostních důvodů tento soubor neupravujeme v textovém editoru, ale příkazem visudo
takto:
sudo visudo
Na konec souboru zapíšeme řádek s tímto obsahem:
test ALL=(ALL:ALL) NOPASSWD: ALL
Změnu uložíme pomocí klávesové zkratky Ctrl + X
a následně stlačením klávesy Y
a Enter
. Odteď uživatel test může spouštět všechny příkazy s administrátorskými oprávněními uživatele root bez zadávání hesla.
Vymazat existujícího uživatele můžeme pomocí příkazu userdel
takto:
sudo userdel test
Právě jsme vymazali uživatele test
ze souboru /etc/passwd
a též skupinu test
ze souboru /etc/group
. Pokud je to potřeba, vymažeme záznam o odstraněném uživateli ze souboru /etc/sudoers
pomocí příkazu sudo visudo
.
Pokud potřebujeme vytvořit novou skupinu (první řádek), do které chceme zařadit existujícího uživatele (druhý řádek), poslouží nám příkaz groupadd
(přidá záznam na konec souboru /etc/group
) a v případě vymazání skupiny (třetí řádek) zase příkaz groupdel
(odstraní záznam ze souborů /etc/group
a /etc/passwd
) tako:
sudo groupadd nazev_skupiny
sudo usermod -a -G nazev_skupiny test
sudo groupdel nazev_skupiny
Spravujeme vlastnictví a práva souborů
Každý soubor v Linuxu patří konkrétnímu uživateli a konkrétní skupině. Kterému uživateli a které skupině patří konkrétní soubor, zjistíme pomocí příkazu ls
takto:
ls -lah ~/test/obycejny_soubor.txt
Třetí a čtvrtý sloupec obsahují jméno uživatele a název skupiny – pod tento účet a pod tuto skupinu spadá vlastnictví souboru ~/test/obycejny_soubor.txt
. Příkazem chown
(jako change owner) změníme vlastníka souboru (první řádek) a příkazem chgrp
(jako change group) skupinu (druhý řádek):
sudo chown test ~/test/obycejny_soubor.txt
sudo chgrp test ~/test/obycejny_soubor.txt
Kromě toho, že uživatel a skupina soubor vlastní, mají ve vztahu k souboru i konkrétní práva. Ty jsou zapsané v prvním sloupci od druhého znaku takto:
- první tři znaky vyznačují práva pro uživatele (u jako user), který vlastní soubor
- tři znaky ve středu vyznačují práva pro skupinu (g jako group), která vlastní soubor
- poslední tři znaky vyznačují práva pro všechny ostatní (o jako others)
- písmeno a (jako all) vyznačuje právo pro všechny tři předešlé skupiny (u, g, o)
Zmíněné tři znaky mohou být zastoupené takto:
- písmeno r (jako read) nebo číslice 4 vyznačuje právo na čtení obsahu souboru
- písmeno w (jako write) nebo číslice 2 vyznačuje právo na zapisování do souboru
- písmeno x (jako execute) nebo číslice 1 vyznačuje právo na spuštění obsahu souboru
- pomlčka (–) nebo číslice 0 vyznačuje žádne právo
- existují i speciální práva souborů (s a t), o kterých více píšeme v samostatném návodu
Kdy číselné označení práv spočítáme, dostaneme tyto kombinace práv pod jedinou číslicí:
- 4 + 2 + 1 = 7 = rwx, čili číslice 7 znamená, že uživateli, skupině nebo všem ostatním přiřazujeme všechny práva (čtení, zápis, spuštění)
- 4 + 2 = 6 = rw-, čili číslice 6 znamená, že uživateli, skupině nebo všem ostatním přiřazujeme práva na čtení a zápis
- 4 + 1 = 5 = r-x, čili číslice 5 znamená, že uživateli, skupině nebo všem ostatním přiřazujeme práva na čtení a spuštění
- 2 + 1 = 3 = –wx, čili číslice 3 znamená, že uživateli, skupině nebo všem ostatním přiřazujeme práva na zápis a spuštění
Pokud potřebujeme doplnit chybějící právo souboru pro uživatele (u), skupinu (g), ostatních (o) nebo všech (a), použijeme znak sčítání (první řádek). Když existující právo odebíráme, použijeme znak odčítání (druhý řádek). A pokud všechny existující práva nahrazujeme jiným právem, použijeme znak rovnosti (třetí řádek). Pomocí příkazu chmod
(jako change mode) to zapíšeme následovně:
chmod u+x,g+x,o+w ~/test/obycejny_soubor.txt
chmod a-x ~/test/obycejny_soubor.txt
chmod a=rwx ~/test/obycejny_soubor.txt
Pokud použijeme číselné označení práv souboru, takto zapíšeme právo čtení, zápisu a spuštění pro uživatele (číslice 7), právo čtení a zápisu pro skupinu (číslice 6) a právo čtení pro ostatních (číslice 4):
chmod 764 ~/test/obycejny_soubor.txt
Shrnutí
Abychom v Linuxu mohli zodpovědně spravovat vlastnictví a práva souborů, nejdřív je potřeba pochopit systém souborů a druhy souborů. Proto jsme si v tomto návodu postupně vysvětlili, do kterých složek Linux ukládá konkrétní soubory a jaké druhy souborů Linux rozeznává. Nakonec jsme si ukázali, jak změníme vlastníka a skupinu souborů a též jsme ilustrovali změnu práv pro uživatele, skupinu a všechny ostatní.