GNU/Linux >> Znalost Linux >  >> Linux

Oprávnění a vlastnictví souborů Linuxu vysvětleno s příklady

Podle návrhu je Linux operační systém pro více uživatelů. V podnikovém systému by ke stejnému systému přistupovalo více uživatelů. Pokud by však kterýkoli uživatel mohl přistupovat a upravovat všechny soubory patřící jiným uživatelům nebo systémové soubory, bylo by to jistě bezpečnostní riziko.

To je důvod, proč má UNIX a tím i Linux (Linux je systém podobný Unixu) vestavěná bezpečnostní opatření. To zajišťuje, že k souboru nebo adresáři mohou přistupovat, upravovat nebo spouštět pouze požadovaní uživatelé.

Který uživatel by měl k souboru přistupovat, rozhodují v Linuxu dva faktory:

  • Vlastnictví souboru
  • Oprávnění k souboru

Pochopení vlastnictví souborů a oprávnění je pro uživatele Linuxu zásadní. Tyto pojmy zde podrobně vysvětlím.

Vlastnictví souborů v systému Linux

Poznámka:Mohl bych zde použít termín soubor, ale lze jej použít i pro adresáře. Myslím, že víte, že adresáře jsou stejně soubory.

Každý soubor a adresář v Linuxu má tři druhy vlastníků:

Uživatel

Uživatel je vlastníkem souboru. Když vytvoříte soubor, stanete se vlastníkem souboru. Vlastnictví lze také změnit, ale to uvidíme později.

Skupina

Každý uživatel je součástí určité skupiny (skupin). Skupina se skládá z několika uživatelů a toto je jeden způsob, jak spravovat uživatele ve víceuživatelském prostředí.

Pokud máte například vývojářský tým, tým QA a tým správce systému přistupující ke stejnému systému, měli byste pro ně vytvořit samostatné skupiny. Tímto způsobem můžete efektivně spravovat soubory a zabezpečení systému. Šetří to čas, protože místo ručního přidávání oprávnění pro každého uživatele je můžete jednoduše přidat do skupiny a změnit oprávnění pro skupinu. Jak to udělat, uvidíte později v tomto článku.

I když jste jediným uživatelem systému, stále budete součástí mnoha skupin. Distribuce jako Ubuntu také vytvářejí skupinu s názvem stejným jako jméno uživatele.

💡Spusťte příkaz skupiny abyste viděli, do kterých uživatelských skupin patříte.

Jiné

„Ostatní“ lze považovat za super skupinu se všemi uživateli v systému. Do této skupiny patří v podstatě kdokoli s přístupem do systému.

Jinými slovy, „Uživatel“ je jeden uživatel, Skupina je sbírka uživatelů a Ostatní sestávají ze všech uživatelů v systému.

Oprávnění k souborům v systému Linux

Každý soubor a adresář v Linuxu má následující tři oprávnění pro všechny tři druhy vlastníků:

Oprávnění pro soubory

  • Číst – může zobrazit nebo zkopírovat obsah souboru
  • Zápis – může upravovat obsah souboru
  • Spustit – může spustit soubor (pokud je spustitelný)

Oprávnění pro adresáře

  • Číst – může vypsat všechny soubory a zkopírovat soubory z adresáře
  • Zápis – Může přidávat nebo mazat soubory do adresáře (vyžaduje také oprávnění ke spuštění)
  • Provést – může vstoupit do adresáře

Vysvětlení oprávnění a vlastnictví souborů v systému Linux

Nyní, když jste si vědomi základní terminologie oprávnění k souborům a vlastnictví, je čas to vidět v akci.

Ke kontrole oprávnění k souboru můžete použít „příkaz stat“ nebo „příkaz ls“.

Pokud na soubor použijete příkaz ls s volbou -l, uvidíte výstup takto:

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Dovolte mi vysvětlit tento výstup pomocí obrázku:

Dovolte mi dále podrobně vysvětlit celý výstup:

  • Typ souboru :Označuje typ souboru. d znamená adresář, – znamená běžný soubor, l znamená symbolický odkaz.
  • Oprávnění :Toto pole zobrazuje oprávnění nastavená u souboru. Podrobně to vysvětlím v další části.
  • Počet pevných odkazů :Ukazuje, zda soubor obsahuje pevné odkazy. Výchozí počet je jedna.
  • Uživatel :Uživatel, který vlastní soubory.
  • Skupina :Skupina, která má přístup k tomuto souboru. Vlastníkem souboru může být současně pouze jedna skupina.
  • Velikost souboru :Velikost souboru v bajtech.
  • Čas úpravy :Datum a čas, kdy byl soubor naposledy upraven.
  • Název souboru :Samozřejmě název souboru nebo adresáře.

Nyní, když jste pochopili výstup příkazu ls -l, zaměřme se na část oprávnění k souboru.

Ve výše uvedeném příkazu vidíte oprávnění k souboru takto v devítimístnémformátu :

rwxrw-r--

Každé písmeno označuje konkrétní oprávnění:

  • r :Oprávnění ke čtení
  • w :Oprávnění k zápisu
  • x :Oprávnění k provedení
  • – :Není nastaveno žádné oprávnění

Oprávnění jsou vždy v pořadí čtení, zápis a spuštění, tj. rwx. A pak jsou tato oprávnění nastavena pro všechny tři druhy vlastníků (viz sekce vlastnictví) v pořadí Uživatel, Skupina a Ostatní.

Tento obrázek vše lépe vysvětlí:

Pokud se tedy nyní podíváte na obrázek výše, můžete o oprávněních k souboru říci následující věci:

  • Soubor má oprávnění ke čtení, zápisu a spouštění pro vlastníka uživatele. Ale kdo je vlastníkem tohoto souboru? Tyto informace máte ve výstupu ls -l (tj. uživatel abhi).
  • Soubor má oprávnění ke čtení a zápisu pro skupinu, ale není spuštěn. O kterou skupinu jde? Informace o skupině máte ve výstupu příkazu ls -l (tj. group itsfoss).
  • Soubor má oprávnění pouze ke čtení pro Ostatní, tj. pro každého, kdo má přístup do systému. Nemusíte vědět, který další to je, protože „jiný“ znamená všechny uživatele.

Pokud nyní znovu uvidíte celý příkaz ls -l, můžete si společně přečíst oprávnění k souboru a vlastnictví.

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Soubor agatha.txt vlastní uživatel abhi a abhi má oprávnění ke čtení, zápisu a spouštění. Všichni členové skupiny istfoss mají k tomuto souboru přístup pro čtení a zápis, zatímco všichni ostatní mají k tomuto souboru přístup pouze pro čtení.

Poznámka:Uživatel root má superschopnosti a normálně má oprávnění ke čtení, zápisu a spouštění ke všem souborům, i když to v oprávněních souboru nevidíte.

Jeden uživatel může být členem několika skupin, ale pouze primární skupina uživatele je vlastníkem skupiny souboru vytvořeného uživatelem. Primární skupinu uživatele lze najít pomocí příkazu id jako id -gn <username> . Pokud se snažíte najít svou vlastní primární skupinu, ponechte uživatelské jméno prázdné.

Nyní, když víte, jak zjistit oprávnění k souboru, pojďme se podívat, jak můžete změnit oprávnění a vlastnictví souboru.

Změna oprávnění k souboru v systému Linux

Pro změnu oprávnění k souboru v Linuxu můžete použít příkaz chmod.

📚Oprávnění se dříve nazývala režim přístupu a proto chmod byla krátká forma změnit režim přístupu .

Existují dva způsoby, jak použít příkaz chmod:

  • Absolutní režim
  • Symbolický režim

Použití chmod v absolutním režimu

V absolutním režimu jsou oprávnění reprezentována v číselné formě (přesněji v osmičkové soustavě). V tomto systému je každé oprávnění k souboru reprezentováno číslem.

  • r (čtení) =4
  • w (zápis) =2
  • x (spustit) =1
  • – (bez oprávnění) =0

S těmito číselnými hodnotami je můžete kombinovat, a tak lze použít jedno číslo k reprezentaci celé sady oprávnění.

Číslo Povolení
0
1 –x
2 -w-
3 (tj. 2+1) -wx
4 r–
5 (tj. 4+1) r-x
6 (tj. 4+2) rw-
7 (tj. 4+2+1) rwx

Dokážete v našem příkladu zatím uhodnout oprávnění k souboru v číslech v souboru agatha.txt? Správně, je to 764.

Nyní, když víte, jaké číslo představuje které oprávnění, pojďme se podívat, jak pomocí těchto znalostí změnit oprávnění k souboru.

Předpokládejme, že chcete změnit oprávnění k souboru agatha.txt tak, aby každý mohl číst a zapisovat, ale nikdo jej nemohl spustit? V takovém případě můžete použít příkaz chmod takto:

chmod 666 agatha.txt

Pokud nyní uvedete agatha.txt, uvidíte, že oprávnění bylo změněno.

-rw-rw-rw- 1 abhishek abhishek 457 Aug 10 11:55 agatha.txt

Použití chmod v symbolickém režimu

Problém s absolutním režimem je, že byste měli vždy zadat tři čísla pro všechny tři vlastníky, i když chcete změnit  nastavení oprávnění pouze pro jednoho vlastníka.

Zde můžete použít symbolický režim s příkazem chmod.

V symbolickém režimu jsou vlastníci označeni následujícími symboly:

  • u =vlastník uživatele
  • g =vlastník skupiny
  • o =jiné
  • a =všichni (uživatel + skupina + další)

Symbolický režim používá k provádění změn oprávnění matematické operátory:

  • + pro přidání oprávnění
  • – pro odebrání oprávnění
  • =pro přepsání stávajících oprávnění novou hodnotou

Nyní, když to víte, pojďme se podívat, jak používat příkaz chmod v symbolickém režimu.

V našem předchozím příkladu, pokud chcete přidat oprávnění ke spuštění pro vlastníka skupiny, můžete použít příkaz chmod takto:

chmod g+x agatha.txt

Pokud se nyní podíváte na oprávnění k tomuto souboru, uvidíte, že nyní bylo přidáno oprávnění ke spuštění:

-rw-rwxrw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

V jednom příkazu můžete také kombinovat více změn oprávnění. Předpokládejme, že chcete odebrat oprávnění ke čtení a zápisu a přidat oprávnění ke spouštění pro Ostatní. Chcete také přidat oprávnění ke spuštění pro vlastníka uživatele. To vše můžete provést jediným příkazem:

chmod o-rw+x,u+x agatha.txt

Výsledná oprávnění by vypadala takto:

-rwxrwx--x 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Pokud chcete změnit oprávnění pro všechny tři druhy uživatelů současně, můžete to použít následujícím způsobem:

chmod a-x agatha.txt

Tímto odeberete oprávnění ke spuštění pro všechny.

-rw-rw---- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Někteří lidé považují převod oprávnění k souboru z jednoho režimu do druhého za únavnou práci. To je důvod, proč jsem vytvořil tento malý nástroj, který vám umožňuje vypočítat oprávnění souborů Linux v různých režimech online.

Změna vlastnictví souboru v systému Linux

Chcete-li změnit vlastnictví souboru, můžete použít příkaz chown. Můžete snadno uhodnout, že chown znamená změnu vlastníka.

Uživatelského vlastníka souboru můžete změnit následujícím způsobem:

chown <new_user_name> <filename>

Pokud chcete změnit uživatele i skupinu, můžete použít příkaz chown takto:

chown <new_user_name>:<new_user_group> <filename>

Pokud chcete pouze změnit skupinu, můžete buď použít příkaz chown tímto způsobem:

chown :<new_user_group> <filename>

nebo použijte příkaz chgrp speciálně používaný pro změnu vlastníka skupiny souboru nebo adresáře. Můžete hádat, že chgrp znamená skupinu změn.

chgrp <new_user_group> <filename>

V našem dosavadním příkladu, pokud chcete změnit vlastníka uživatele a skupinu na root, můžete použít příkaz chown takto:

sudo chown root:root agatha.txt

Tím se změní vlastnictví souboru na root pro uživatele i skupinu.

-rw-rw---- 1 root root 457 Aug 10 11:55 agatha.txt

Všimli jste si, že jsem musel použít sudo s chownem? Je to proto, že je zde zapojen root a pro práci s rootem potřebujete práva superuživatele.

Tip :Dvě skupiny nemohou vlastnit stejný soubor.

Bonusový tip:Existuje priorita v oprávněních k souboru?

Představte si situaci, kdy vlastník uživatele nemá žádná oprávnění, skupina má oprávnění ke čtení, zatímco ostatní mají oprávnění ke čtení a zápisu.

----r--rw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Nyní, pokud se uživatel abhi pokusí číst soubor pomocí příkazu cat nebo less, bude to moci? Odpověď zní ne, protože nemá oprávnění ke čtení.

Ale uživatel abhi je součástí skupiny itsfoss a tato skupina má přístup pro čtení. Sakra! jiný má oprávnění ke čtení a zápisu. To by mělo znamenat, že každý (včetně uživatele abhi) může číst a zapisovat soubor, že? Špatně!

V Linuxu má přednost uživatel a poté skupina a poté další. Systém Linux zkontroluje, kdo proces inicioval (v našem příkladu kočka nebo méně). Pokud je uživatel, který proces inicioval, také uživatelským vlastníkem souboru, nastaví se bity uživatelských oprávnění.

Pokud vlastník souboru proces nezahájil, systém Linux zkontroluje skupinu. Pokud je uživatel, který proces spustil, ve stejné skupině jako skupina vlastníků souboru, je nastaven bit skupinových oprávnění.

Pokud tento vlastník procesu není ani ve skupině jako vlastník skupiny souboru, pak jsou nastaveny ostatní bity oprávnění.

Co dál?

Doufám, že se vám článek líbil a nyní lépe rozumíte tomu, jak fungují oprávnění k souborům v Linuxu.

Existují některá pokročilá oprávnění k souborům, jako je SUID, GUID a sticky bit, která se můžete naučit příště, pokud chcete.

Pokud máte nějaké dotazy nebo návrhy nebo chcete jen poděkovat, zanechte prosím komentář níže. Pokud se vám článek líbil, sdílejte ho na sociálních sítích nebo na různých fórech. Pomůže to nám i ostatním uživatelům Linuxu.


Linux
  1. Třídit příkaz v Linuxu s příklady

  2. Příkazy hlavy a ocasu v Linuxu vysvětleny s příklady

  3. Příkaz Linux Traceroute, vysvětlený s příklady

  1. Jak zkopírovat oprávnění a vlastnictví souboru do jiného souboru v Linuxu

  2. Oprávnění souborů v Linuxu s příkladem

  3. Zkontrolujte oprávnění souborů Linux pomocí ls

  1. Linux cut Command Vysvětlení pomocí 6 příkladů

  2. Linux Zip a Unzip Command s příklady

  3. Linuxový příkaz cksum vysvětlený pro začátečníky (s příklady)