1. Home
  2. Začínáme
  3. Správa souborů a uživatelů v linuxovém příkazovém řádku
  1. Home
  2. Užitečné návody
  3. Správa souborů a uživatelů v linuxovém příkazovém řádku
  1. Home
  2. Cloud a servery
  3. Správa souborů a uživatelů v linuxovém příkazovém řádku

Správa souborů a uživatelů v linuxovém příkazovém řádku

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žcePopis
/ (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.
/bootZde 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.
/mediaDo 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.
/rootDomovská 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).
/homeDomovská 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.
/runSem 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.
/sysJde 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

Více o práci se soubory a složkami v linuxovém příkazovém řádku najdete v návodu Základy práce se soubory a složkami v linuxovém příkazovém řádku.

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 souboruPopis
– (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í:

  1. uživatele (uid jako user identifier),
  2. primární skupiny (gid jako group identifier) a
  3. 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.

Tato možnost přidá danému uživateli možnost použít jakýkoliv příkaz bez nutnosti zadávat heslo. V praxi doporučujeme zvážit vyžadování hesla a omezit příkazy, které může uživatel používat.

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

Při nastavovaní práv souborů je potřeba vybrat si, jestli chceme práva označovat číselně nebo písmeny. Kombinace není možná.

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í.

Aktualizováno: 19 července, 2021

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU