GNU/Linux >> Znalost Linux >  >> Linux

Oprávnění souborů Linux:Vše, co potřebujete vědět

Linux je operační systém pro více uživatelů, který umožňuje nastavit více uživatelských účtů a skupin uživatelů pro přístup ke stejnému počítači. Jak si dokážete představit, přináší to určité bezpečnostní obavy. Naštěstí Linux přichází s výkonnými nastaveními oprávnění k souborům a možnostmi, které uživatelům brání ve vzájemném přístupu k důvěrným a citlivým věcem.

Budete moci definovat různé skupiny uživatelů a přiřadit jim další oprávnění k souborům. Bez patřičných oprávnění nebude uživatel nebo skupina uživatelů moci získat přístup k vašim souborům a adresářům, což uchová všechny vaše informace v bezpečí.

Pro toto čtení jsme připravili podrobného průvodce oprávněními k souborům v Linuxu. Nakonec byste měli dobře rozumět tomu, co jednotlivá oprávnění k souboru znamenají, a jak pomocí této funkce chránit své soubory a adresáře.

Porozumění vlastnictví souborů a oprávněním

Abyste pochopili vlastnictví souborů a oprávnění v Linuxu, musíte nejprve porozumět „uživatelům“ a „skupinám“.

Uživatel vs. Skupina

Linux umožňuje vytvořit více „uživatelů“. To pomáhá oddělit soubory a adresáře pro různé osoby používající počítač. Každý uživatel má některé specifické vlastnosti, včetně ID uživatele a domovského adresáře.

Chcete-li zobrazit různé uživatele ve vašem systému, můžete do terminálu zadat následující příkaz:

$ cat /etc/passwd

Aby bylo možné spravovat všechny uživatele, Linux zavádí koncept „skupin“. Můžete vytvořit jednu nebo dvě skupiny a poté přidat všechny systémové uživatele do jedné nebo více těchto skupin, což vám umožní je snadněji spravovat.

Můžete také vytvořit skupinu, ale nenaplnit ji žádnými uživateli, v takovém případě to bude skupina s nula uživateli.

Ale na druhou stranu, jakmile vytvoříte uživatele, automaticky se přiřadí k „výchozí skupině“. Uživatele můžete samozřejmě přidat do jiné skupiny. Jako takový může být uživatel součástí více skupin.

Chcete-li zobrazit všechny skupiny ve vašem systému, zadejte do terminálu následující příkaz:

$ cat /etc/group

Poznámka:Po spuštění dvou výše uvedených příkazů si všimnete, že váš systém již má spoustu uživatelů a skupin, které jste nevytvořili. To vše jsou uživatelé systému a skupiny. Ty jsou nezbytné pro bezpečný běh všech procesů na pozadí.

Vlastnictví souborů a udělení oprávnění

Kdykoli uživatel vytvoří nový soubor nebo adresář, je „vlastněn“ uživatelem a výchozí skupinou uživatele. Každý soubor nebo adresář může navíc vlastnit pouze jeden uživatel a jedna skupina.

Jak tedy umožníte ostatním uživatelům přístup k vašim souborům a adresáři? Zde musíte nastavit oprávnění k souboru. Všechny soubory a adresáře mají tři druhy tříd oprávnění. Jsou to následující:

  • Vlastník:V rámci této třídy ovlivní oprávnění pouze vlastníka souboru.
  • Skupina:V rámci této třídy bude mít oprávnění vliv na skupinu, která soubor vlastní. Pokud je však vlastník souboru v této skupině, použijte oprávnění „uživatel“ namísto oprávnění „skupina“.
  • Ostatní:V této třídě ovlivní oprávnění všechny ostatní uživatele, kteří jsou v systému.

Každé z těchto tříd můžete přiřadit různá oprávnění a řídit tak, který uživatel a skupina získá jakou úroveň přístupu k vašim souborům a adresářům. Jak již bylo řečeno, pojďme se podívat na různá oprávnění, která můžete přidělit.

S Linuxem získáte přístup ke třem druhům oprávnění k souborům. Jsou to následující:

  • Čtení:Soubor s oprávněním ke čtení umožňuje uživatelům zobrazit jeho obsah. Zatímco pokud má adresář oprávnění ke čtení, uživatelé mohou vidět pouze názvy souborů a dalších adresářů v něm uložených.
  • Zápis:Soubor s oprávněním k zápisu umožňuje uživatelům upravovat obsah tohoto souboru a dokonce jej smazat. Zatímco u adresářů s oprávněním k zápisu mohou uživatelé měnit soubory a adresáře v nich uložené, stejně jako vytvářet nové soubory a adresáře.

Poznámka:Oprávnění k zápisu nemá žádný vliv na adresář, pokud není povoleno také oprávnění ke spuštění. Je to proto, že systém může získat oprávnění složky pouze tehdy, když je nastaven bit spuštění.

  • Spustit:Soubor potřebuje pouze oprávnění k zápisu, aby jej uživatel mohl spustit. Oprávnění ke čtení však musí být také povoleno, jinak to neovlivní. V případě adresáře s oprávněním ke spuštění bude uživatel moci vstoupit do adresáře (pomocí příkazu cd) a zobrazit metadata souborů a adresářů v něm obsažených.

Nyní byste měli mít základní teoretické znalosti o úloze uživatelů Linuxu, skupin a konceptů vlastnictví souborů a oprávnění. Takže když to necháme stranou, pojďme se podívat, jak je můžeme prakticky využít.

Jak zobrazit oprávnění k souboru?

Možná už víte, že pomocí příkazu ls získáte seznam všech souborů v určitém adresáři. Neposkytuje vám však žádné podrobnosti o zabezpečení souborů. Pro tyto informace budete muset použít příkaz ls -l.

To vám umožní spustit příkaz ls s možností „dlouhý seznam“, která vám poskytne podrobné informace o každém ze souborů. Chcete-li to provést, můžete použít následující příkaz:

$ ls -l <path to directory>

Tím získáte informace o oprávněních k souboru daného adresáře. Případně, pokud chcete získat podrobnosti o oprávněních k souborům vašeho aktuálního adresáře, můžete zadat tento příkaz:

$ ls -l

Pro toto čtení použijeme příkaz ls -l v našem domovském adresáři.

Podívejme se, co tyto informace znamenají.

  1. První věc, kterou je třeba poznamenat, je, že každý samostatný řádek obsahuje informace o různých souborech a adresářích umístěných v adresáři, ze kterého jste spustili příkaz.
  2. První znak v každém z řádků bude buď začínat „-“, což znamená, že se jedná o soubor, písmeno „d“, což znamená, že se jedná o adresář, nebo „l“, což naznačuje, že se jedná o symbol odkaz. Na obrázku výše víme, že Desktop je adresář, protože řádek začíná „d“. Hello world je však soubor, protože začíná „-“.
  3. Poté dostaneme devět dalších znaků, které budou představovat konkrétní kombinaci tří písmen „r,w,x“ a symbolu „-“. Používá se k označení oprávnění odpovídajícího souboru nebo adresáře. V pozdější části probereme, jak můžete číst těchto devět znaků, abyste pochopili oprávnění souboru.
  4. Po tomto budou následovat další dva sloupce. Tím se identifikuje vlastník a skupina souboru nebo adresáře. Ve výše uvedeném příkladu, jak vidíte, všechny soubory a adresáře patří vlastníkovi „root“ a výchozí skupině „root“.
  5. Další sloupec vám sdělí velikost souboru nebo adresáře v bajtech.
  6. Pak máme další dva sloupce, které budou zobrazovat datum a čas, kdy byl soubor naposledy upraven.
  7. V posledním sloupci se nakonec zobrazí název souboru nebo adresáře.

Seznámení s bezpečnostními oprávněními

Hned po prvním znaku každého řádku se dalších devět znaků používá k zobrazení oprávnění odpovídajícího souboru nebo adresáře.

Podívejme se na adresář Desktop z výše uvedeného obrázku. Má oprávnění rwxr-xr-x. Ale co to znamená?

Nejprve budete muset rozdělit devět znaků do tří segmentů obsahujících každý tři znaky. První segment označuje oprávnění pro uživatele, druhý zobrazuje oprávnění pro skupinu a třetí zobrazuje oprávnění pro druhého.

Jako takový má uživatel oprávnění rwx. Skupina má oprávnění r-x.

A konečně, druhý má oprávnění r-x.

Zde „r“ znamená „čtení“ oprávnění.

Potom „w“ označuje oprávnění „zapisovat“.

Dále „x“ znamená, že máte oprávnění „provádět“.

Každý segment bude mít tato oprávnění uspořádána v tomto pořadí:rwx. Nenajdete sekvenci jako rxw nebo wxr. Pokud jsou oprávnění ke čtení, zápisu nebo spouštění zrušena, všimnete si, že odpovídající písmeno je nahrazeno „-“.

Z těchto znalostí můžeme odvodit, že v adresáři Desktop má Uživatel oprávnění číst, zapisovat a spouštět. Zatímco Skupina a Ostatní mají oprávnění pouze číst a spouštět, ale ne zapisovat.

Podobně pro soubor má hello world oprávnění rw-rw-r–. To znamená, že uživatel a skupina mají oprávnění ke čtení a zápisu, ale nemají oprávnění ke spuštění. Druhý má zároveň oprávnění pouze ke čtení, bez oprávnění k zápisu nebo spouštění.

Číselné a symbolické znázornění oprávnění k souboru

Ve výše uvedené části jsme vám ukázali, jak se oprávnění označují pomocí písmen „r,w,x“ spolu se symbolem „-“. Toto je známé jako symbolický režim. Existuje také další způsob, jak označit oprávnění souboru – číselný režim.

Aby to bylo srozumitelnější, pojďme znovu zvážit soubor hello world, který má oprávnění rw-rw-r–.

Podle toho má Uživatel oprávnění rw-. Jako taková jsou povolena oprávnění ke čtení a zápisu, zatímco oprávnění ke spouštění je zakázáno.

Každé povolené oprávnění je označeno 1 a zakázané oprávnění je označeno 0. Tímto způsobem získáme binární číslo, které je v tomto případě 110. Dále je budeme muset převést na osmičkové, což nám dává číslo 6.

Pro soubor hello world má tedy uživatel oprávnění 6. Podobně má skupina také oprávnění 6. a druhý má oprávnění 4. Jako takový je v numerickém režimu oprávnění pro soubor hello world 664.

První číslo v číselném vyjádření vždy představuje oprávnění uživatele, druhé číslo se používá k popisu oprávnění skupiny a třetí číslo představuje oprávnění pro všechny ostatní uživatele.

Možná si myslíte, že pro nastavení oprávnění pro soubory a adresáře bude obtížné převést binární na osmičkové za běhu. Ale vše, co musíte udělat, je zapamatovat si toto:

  • r =4
  • w =2
  • x =1
  •  – =0

Pokud tedy chcete vytvořit trojitou hodnotu rwx r-x, číselný ekvivalent bude 4+0+1=5. Podobně pro rw- je číselné vyjádření 4+2+0=6. A pro povolení rwx je číselné vyjádření 4+2+1=7.

Zahrnuli jsme také seznam zobrazující všechny ekvivalenty numerického režimu každého možného tripletu rwx.

  • Číslice „0“ označuje trojici rwx „—“.
  • Číslice „1“ označuje trojici rwx „–x“.
  • Číslice „2“ označuje trojici rwx „-w-“.
  • Číslice „3“ označuje trojici rwx „-wx“.
  • Číslice „4“ označuje trojici rwx „r–“.
  • Číslice „5“ označuje trojici rwx „r-x“.
  • Číslice „6“ označuje trojici rwx „rw-“.
  • Číslice „7“ označuje trojici rwx „rwx“.

Pokud se vám znázornění oprávnění v numerickém režimu zdá trochu těžko zapamatovatelné, není třeba se obávat. Většina nástrojů podporuje symbolický režim. Numerický režim budete muset použít pouze za určitých okolností, a to příliš zřídka.

Příkaz „chmod“:Změna oprávnění k souboru

Nyní byste měli mít komplexní přehled o tom, jak fungují oprávnění k souborům v systému Linux a jak porozumět tomu, jaká oprávnění mají různé skupiny uživatelů pro daný soubor nebo adresář.

Takže s tím mimo, pojďme mluvit o změně oprávnění souboru. Chcete-li to provést, nejprve vytvořte nový soubor pomocí následujícího příkazu:

$ touch file.txt

Tím se vytvoří nový „file.txt“ v adresáři, odkud příkaz spouštíme. Dále spusťte příkaz ls -l, abyste viděli oprávnění k souboru.

Jak můžete vidět z obrázku, soubor.txt má oprávnění rw-rw-r–. Z toho víme, že ani Uživatel, Skupina ani Ostatní nemají oprávnění ke spuštění souboru. Pojďme to změnit.

Chcete-li přidat oprávnění ke spuštění všem uživatelům, musíme použít následující příkaz:

$ chmod a+x file.txt

Zde a označuje, že měníme oprávnění pro všechny uživatele, a +x označuje, že přidáváme oprávnění ke spuštění.

Nyní se podívejme, zda změnilo oprávnění pro soubor opětovným spuštěním příkazu ls -l.

Jak můžete vidět z obrázku výše, oprávnění souboru pro soubor.txt se nyní změnila na rwxrwxr-x, což dává všem uživatelům oprávnění ke spuštění.

Pokud do příkazu nepřidáte „a“, příkaz chmod bude předpokládat, že se změna ve výchozím nastavení vztahuje na všechny uživatele. Můžete tedy zadat příkaz:

$ chmod +x file.txt

Kromě toho bude chmod také přijímat písmena u, g a o používaná k označení „Uživatel“, „Skupina“ a „Jiné“. Místo přepínače „+“ můžete také použít přepínač „-“, který oprávnění zruší.

Uvažujme jako příklad následující příkaz:

$ chmod o-rx,g-w file.txt

Ve výše uvedeném příkazu používáme o-rx k odebrání oprávnění ke čtení a spouštění z Other. Zatímco k odstranění oprávnění k zápisu ze skupiny používáme g-w. Všimněte si, že mezi tyto dvě akce musíme přidat čárku (,), abychom je oddělili.

Kromě přepínačů „+“ a „-“ můžete také použít „=“ k definování oprávnění pro skupinu uživatelů. Místo přidávání nebo odebírání oprávnění se k nastavení konkrétních oprávnění používá přepínač „=“.

Vezměte v úvahu následující příkaz:

$ chmod u=rx, g=r file.txt

Ve výše uvedeném příkazu část u=rx nastaví oprávnění pro uživatele jako r-x. Podobně g=r nastaví oprávnění pro skupinu jako r–.

Nastavte oprávnění pomocí číselného režimu

Oprávnění můžete nastavit také pomocí číselného režimu. Řekněme například, že chcete nastavit oprávnění pro soubor.txt jako rwxr–r–. Podle výše uvedené tabulky můžete vidět, že číselné vyjádření tohoto oprávnění je 744.

Vše, co musíme udělat, je zadat následující příkaz ke změně oprávnění k souboru.

$ chmod 744 file.txt

Nastavit oprávnění pro všechny soubory v adresáři

Někdy může být nutné změnit oprávnění pro všechny soubory patřící do adresáře. Jejich výměna po jednom zabere spoustu času a není praktická. Pro tento účel máme přepínač -R.

Řekněme například, že chcete přidat oprávnění ke spuštění ke všem souborům v adresáři Dokumenty pouze pro uživatele. Chcete-li to provést, můžete provést následující příkaz:

$ chmod -R u+x Documents

Změna oprávnění pro soubory a adresáře, které nevlastníte

Příkaz chmod vám umožňuje změnit pouze oprávnění souborů a adresářů, které vlastníte. V případě, že potřebujete změnit oprávnění souborů a adresářů, které nevlastníte, budete muset použít sudo.

$ sudo chmod <specify the file permissions> <specify the file/directory name>

Zvláštní oprávnění

Nyní byste měli mít funkční znalosti o oprávněních k souborům, vlastnictví souborů a způsobu, jak změnit oprávnění k souborům pro různé skupiny uživatelů.

Kromě toho existují také některé „příznaky přístupových práv“. Používají se k poskytování speciálních oprávnění k souborům a adresářům.

Sticky Bit

Nejprve si promluvme o lepivém kousku. Někdy uživatelé potřebují sdílet a spolupracovat na souboru nebo adresáři. V takovém případě budete muset všem uživatelům v systému poskytnout oprávnění ke čtení, zápisu a spouštění.

Ale co když uživatel omylem smaže (nebo zkazí) jeden ze souborů v adresáři? Nemůžeme jim pouze odebrat oprávnění k zápisu, protože to omezí jejich schopnost pracovat se souborem.

Zde přichází na řadu lepkavý kousek. Pokud nastavíte lepivý bit na adresář nebo soubor, oprávnění k jeho odstranění nebo odstranění bude mít pouze uživatel root, vlastník adresáře a vlastník souboru. Žádní jiní uživatelé nebudou mít možnost odebrat/přejmenovat soubory a adresáře s povoleným lepivým bitem, i když mají potřebná oprávnění.

Ve výchozím nastavení se lepivý bit používá v adresáři /tmp. Jak víte, adresář /tmp uchovává dočasné soubory všech programů spuštěných ve vašem systému a používaných všemi různými uživateli ve vašem systému. Aby se předešlo náhodnému smazání důležitých dočasných souborů, Linux ve výchozím nastavení nastavuje sticky bit na /tmp.

Chcete-li nastavit lepivý bit na jeden z vašich adresářů, můžete použít následující příkaz:

$ chmod +t <directory_name>

Zde je „t“ znak používaný k reprezentaci lepivého bitu a my používáme přepínač „+“ k přidání lepivého bitu do adresáře.

Podobně, k odstranění lepivého bitu z adresáře, můžeme použít následující příkaz:

$ chmod -t <directory_name>

Setuid a Setgid Bit

Bit setuid se používá ke spuštění souboru jako uživatel, který soubor vlastní. Bit setgid se používá ke spuštění souboru jako skupiny, která soubor vlastní. Setuid bit se používá na soubory a neovlivňuje adresáře. Bit setgid však lze použít na adresáře.

Umožňuje novým souborům a podadresářům vytvořeným v adresáři zdědit skupinu vlastníků na rozdíl od výchozí skupiny uživatele. Také nové podadresáře v adresáři budou mít nastavený bit setgid, ale staré soubory zůstanou nedotčeny.

Chcete-li nastavit bit setuid na souboru, můžete použít následující příkaz:

$ sudo chmod +s <file_name>

Zatímco k odstranění setgid bitu budete muset místo toho použít -s. Podobně pro nastavení setgid na soubor můžete použít příkaz:

$ sudo chmod g+s <file_name>

A k jeho odstranění budete muset použít g-s.

Závěr

Jak můžete vidět, Linux nabízí robustní a komplexní funkce pro řešení uživatelských práv na soubory a adresáře v systému. Doufáme, že vám tento článek pomohl pochopit, jak jsou tato oprávnění implementována. Pokud však máte nějaké nejasnosti nebo dotazy týkající se oprávnění k souborům v systému Linux, neváhejte nám zanechat komentář.

Také, pokud začínáte s Linuxem, měli byste si přidat do záložek naši sérii článků Learn Linux. Obsahuje spoustu užitečných tutoriálů a příruček pro začátečníky i pokročilé uživatele, které jim pomohou co nejlépe využít jejich systém Linux.


Linux
  1. Linux tmp Directory:Vše, co potřebujete vědět

  2. Linuxová komprese souborů:Vše, co potřebujete vědět

  3. Linux – všechno je soubor?

  1. Swappiness v Linuxu:Vše, co potřebujete vědět

  2. Vše, co potřebujete vědět o systému souborů Linux

  3. Vše, co potřebujete vědět o Linux Chmod Command

  1. Vše, co potřebujete vědět o Linuxových kontejnerech (LXC)

  2. Vše, co potřebujete vědět o serveru Linux Ubuntu

  3. Vše, co potřebujete vědět o Linux OpenSSH Server