GNU/Linux >> Znalost Linux >  >> Linux

Oprávnění pro Linux:Úvod do chmod

[Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si jej nyní zdarma.]

Pokud jste někdy pracovali na systému Linux, určitě jste se zabývali soubory, a to znamená, že jste se mohli setkat se zprávami, jako je tato:

localhost@user1$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

Nebo podobné chybové zprávy jako „Nemáte oprávnění k nahrávání souborů do této složky“, které vám mohly bránit ve čtení, zápisu nebo přístupu k určitému souboru. A přirozeně vás tato chyba mohla přimět k zamyšlení – alespoň když jste se s tímto problémem setkali poprvé –, proč vám byl odepřen přístup.

Podívejme se na oprávnění souborů v systému Linux a na způsoby, jak je omezit, a trochu si pohrát se soubory. Když v Linuxu uvádíte soubory v konkrétním adresáři, možná jste viděli r, w a x a zajímalo vás, co tato písmena znamenají. Mají obrovský význam při určování toho, co přesně může konkrétní uživatel se souborem dělat.

Podívejme se na příklad:

localhost@user1$ ls -ltr chmod_directory/
total 0
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Write.txt
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Execute.sh
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Access.txt

Výchozí oprávnění k souboru jsou rw-r--r-- (z hodnoty umask (popsané dále v článku)), jak je znázorněno v příkladu výše.

Každé oprávnění má přiřazenou číselnou hodnotu:

  • r (čtení) má hodnotu 4
  • w (write) má hodnotu 2
  • x (execute) má hodnotu 1

Tyto hodnoty jsou aditivní pro každý „triplet“, což znamená, že oprávnění k souboru rw- má hodnotu 6 a rwx má hodnotu 7. Jak bylo uvedeno výše, každý nově vytvořený soubor má výchozí hodnotu 644 (rw-r --r--), což znamená, že vlastník souboru může číst a zapisovat a všichni ostatní mohou tento soubor pouze číst. První trojice je oprávnění pro vlastníka/tvůrce souboru, druhá je pro skupinová oprávnění a třetí je pro ostatní (uživatele mimo vlastníka/tvůrce nebo skupinu s oprávněními). Toto nastavení má smysl ze zřejmých důvodů:Vlastník by měl mít vyšší kontrolu nad obsahem souboru, aby jej mohl číst i zapisovat. Jiní mohou chtít číst obsah, ale neupravovat jej. Toto nastavení můžete samozřejmě změnit pomocí chmod příkaz, na který se zaměřuje tento článek.

Chcete-li tedy tomuto konceptu porozumět jednodušším způsobem, představte si oprávnění souborů jako matici 3x3, kde vlastníci, skupiny a další mají každý nastavení r, w a x. Ve výše uvedeném příkladu:

  • tvůrce souboru (vlastník/uživatel) má oprávnění ke čtení a zápisu:-rw -r--r--.
  • Tvůrce skupiny (skupina) souboru má oprávnění ke čtení:-rw-r-- r--.
  • Ostatní mají oprávnění ke čtení reprezentovaná posledními bity:-rw-r--r-- .

Nyní se podíváme na výchozí hodnoty oprávnění pro adresář. Řekněme adresář chmod_directory byl vytvořen s výchozími oprávněními 755. Na rozdíl od souborů obsahuje adresář soubory. Aby mohl kdokoli jiný než vlastník 'cd ' do adresáře, potřebuje oprávnění ke spuštění, což zase dělá adresář:

  • Čitelné, zapisovatelné a spustitelné vlastníkem (rwx je 7).
  • Čtené a spustitelné skupinou (r-x je 5).
  • Čitelné a spustitelné pro ostatní (r-x je 5).

Poznámka:Označení r-x NEZNAMENÁ r mínus x, znamená čtení a provádění, ale chybí zápis. - je zástupný symbol pro oprávnění.

(Věnujte prosím chvíli přemýšlení o tom, proč je toto výchozí chování.)

Dobře, teď, když jste se naučili základy oprávnění k souborům a adresářům, pojďme se podívat na chmod příkaz, který pomáhá s prováděním změn oprávnění pro soubory a adresáře.

Jak je uvedeno v manuálové stránce:

This manual page documents the GNU version of chmod. chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits.

The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where perms is either zero or more letters from the set rwxXst, or a single letter from the set ugo. Multiple symbolic modes can be given, separated by commas.

A combination of the letters ugoa controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected.

Použití osmičkové reprezentace

Pro změnu oprávnění k souboru můžete použít buď osmičkové zobrazení (číselné), nebo symbolické zobrazení (písmena). V osmičkovém zobrazení je první číslice pro uživatele, druhá číslice je pro skupinu a třetí číslice je pro ostatní. Podívejme se na dva příklady nastavení oprávnění s osmičkovou reprezentací, abychom tomuto konceptu porozuměli.

Příklad 1 :Pokud chcete uživateli i skupině udělit oprávnění ke čtení (4), k zápisu (2) a spouštění (1) a ostatním pouze ke čtení (4), můžete použít:

localhost@user1$ chmod 774 <file-name>

Příklad 2 :Pokud chcete omezit oprávnění k zápisu na všechny ostatní kromě vlastníka souboru, můžete použít:

localhost@user1$ chmod 744 <file-name>

Použití symbolické reprezentace

Oprávnění můžete také změnit pomocí symbolického znázornění, nikoli číselného. Symbolické znázornění je přidělování oprávnění uživateli (u), skupině (g) a dalším (o) pomocí písmen (symbolov) a označení písmen:r, w a x.

Podívejme se na tyto příklady znovu, ale s použitím symbolické reprezentace.

Příklad 1 :Čtení, zápis a spouštění pro uživatele a skupinu, plus pouze čtení pro ostatní, mapy jako:

localhost@user1$ chmod ug+rwx,o+r <filename>

Příklad 2 :Čtení, zápis a spouštění pro uživatele a oprávnění pouze ke čtení pro skupiny a další mapy jako:

localhost@user1$ chmod u+rwx,go+r <file-name>

Skvělé, jsem na vás všechny hrdý:Nyní jste zvládli koncepty oprávnění k souborům. Ale varuji vás, že existují dva nebezpečné scénáře, kterým byste se mohli chtít vyhnout, takže si to ponechte jako osvědčený postup při používání chmod. Nepoužívejte hraniční případy, jako je chmod 777 <file-name> a chmod 000 <filename> . Pomocí chmod 777 <file-name> dává každému oprávnění rwx a obecně není dobrým zvykem udělovat plné pravomoci všem uživatelům v systému. Druhý případ nechám na vás, hoši, abyste zjistili.

Použití umask

Nechám vám ještě jeden koncept, o kterém musíte vědět (umask), který rozhoduje o výchozích oprávněních pro soubor. Celkově jsou výchozí hodnoty:

  • Maska:0022
  • Soubor:0666
  • Adresář:0777

Jak si možná pamatujete, výchozí hodnota oprávnění k souboru je 0644 a výchozí adresář je 0755. Výchozí hodnota umask se odečte od celkové výchozí hodnoty souboru/adresáře. Hodnoty umask můžete nastavit v /etc/profile nebo v ~/.bashrc .

Zabalení

Chmod je skvělý linuxový příkaz pro manipulaci s oprávněními k souborům a adresářům. S koncepty zmíněnými v tomto článku jste vybaveni dostatečnými znalostmi pro zpracování oprávnění v distribucích založených na Linuxu.


Linux
  1. Základy oprávnění k souborům Linux

  2. Úvod do monitorování uživatelských účtů v Linuxu

  3. Změna oprávnění pro Linux

  1. Úvod do linuxového příkazu chmod

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

  3. Oprávnění souborů v Linuxu – čtení/zápis/spouštění

  1. Linux chmod and chown – Jak změnit oprávnění a vlastnictví souborů v Linuxu

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

  3. Cheat sheet pro oprávnění k souborům/adresáři pro Linux