GNU/Linux >> Znalost Linux >  >> Linux

Oprávnění pro Linux 101

Pochopení oprávnění Linuxu a toho, jak řídit, kteří uživatelé mají přístup k souborům, je základní dovedností pro správu systémů.

Tento článek se bude zabývat standardními oprávněními pro souborové systémy Linux, podrobněji se ponoříte do speciálních oprávnění a zakončíte vysvětlením výchozích oprávnění pomocí umask .

Porozumění výstupu příkazu ls

Než budeme moci mluvit o tom, jak upravit oprávnění, musíme vědět, jak je zobrazit. ls příkaz s argumentem dlouhého výpisu (-l ) nám poskytuje mnoho informací o souboru.

$ ls -lAh
total 20K
-rwxr-xr--+ 1 root root    0 Mar  4 19:39 file1
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file10
-rwxrwxr--+ 1 root root    0 Mar  4 19:39 file2
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file8
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file9
drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir

Abychom pochopili, co to znamená, rozdělme výstup týkající se oprávnění do jednotlivých sekcí. Bude snazší odkazovat na každou sekci jednotlivě.

Podívejte se na každou komponentu posledního řádku ve výstupu výše:

drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir
Část 1 Oddíl 2 Oddíl 3 Část 4 Oddíl 5 Oddíl 6 Oddíl 7
d rwx rwx rwx  . kořen kořen

Část 1 (vlevo) ukazuje, o jaký typ souboru se jedná.

d Adresář
- Běžný soubor
l Měkký odkaz

Informační stránka pro ls obsahuje úplný seznam různých typů souborů.

Každý soubor má tři režimy přístupu:

  • vlastník
  • skupinu
  • všechny ostatní

Oddíly 2, 3 a 4 se týkají oprávnění uživatele, skupiny a „ostatních uživatelů“. A každá sekce může obsahovat kombinaci r (přečíst), w (zápis) a x (spustitelným) oprávněním.

Každému z oprávnění je také přiřazena číselná hodnota, což je důležité, když mluvíme o osmičkovém vyjádření oprávnění.

Oprávnění Osmičková hodnota
Přečíst 4
Napište 2
Provést 1

Část 5 podrobně popisuje všechny alternativní přístupové metody, jako je SELinux nebo File Access Control List (FACL).

Metoda Postava
Žádná jiná metoda  -
SELinux  .
FACL  +
Jakákoli kombinace metod  +

Sekce 6 a 7 jsou jména vlastníka a skupiny.

Použití chown a chmod

Příkaz chown

chown (změnit vlastnictví) příkaz se používá ke změně vlastnictví uživatele a skupiny souboru.

Chcete-li změnit uživatelské i skupinové vlastnictví souboru foo rootovat , můžeme použít tyto příkazy:

$ chown root:root foo
$ chown root: foo

Spuštění příkazu s uživatelem následovaným dvojtečkou (: ) nastavuje vlastnictví uživatele i skupiny.

Chcete-li nastavit pouze uživatelské vlastnictví souboru foo do kořenového adresáře uživatel, zadejte:

$ chown root foo

Chcete-li změnit pouze skupinové vlastnictví souboru foo , před skupinu uveďte dvojtečku:

$ chown :root foo

Příkaz chmod

chmod (režim změny) řídí oprávnění k souboru pro vlastníka, skupinu a všechny ostatní uživatele, kteří nejsou vlastníkem ani součástí skupiny spojené se souborem.

chmod příkaz může nastavit oprávnění jak v osmičkovém (např. 755, 644 atd.), tak v symbolickém (např. u+rwx, g-rwx, o=rw) formátování.

Osmičková notace přiděluje 4 "body" ke čtení , 2 k zapsání a 1 pro spuštění . Pokud chceme uživateli přiřadit přečtení oprávnění, přiřadíme 4 prvnímu slotu, ale pokud chceme přidat zápis oprávnění, musíme přidat 2. Pokud chceme přidat provést , pak přidáme 1. Provádíme to pro každý typ oprávnění:vlastník, skupina a další.

Například pokud chceme přiřadit přečtení , pište a spustit vlastníkovi souboru, ale pouze číst a provést pro členy skupiny a všechny ostatní uživatele bychom použili 755 v osmičkovém formátování. To jsou všechny bity oprávnění pro vlastníka (4+2+1), ale pouze 4 a 1 pro skupinu a ostatní (4+1).

Rozdělení pro to je:4+2+1=7; 4+1=5; a 4+1=5.

Pokud bychom chtěli přiřadit čtení a pište vlastníkovi souboru, ale pouze číst členům skupiny a všem ostatním uživatelům můžeme použít chmod takto:

$ chmod 644 foo_file

V níže uvedených příkladech používáme symbolický zápis v různých skupinách. Všimněte si písmen u , g a o představují uživatele , skupina a jiné . Používáme u , g a o ve spojení s + , - nebo = přidat, odebrat nebo nastavit bity oprávnění.

Chcete-li přidat spustit bit do sady oprávnění k vlastnictví:

$ chmod u+x foo_file

Chcete-li odebrat přečíst , pište a spustit od členů skupiny:

$ chmod g-rwx foo_file

Chcete-li nastavit vlastnictví pro všechny ostatní uživatele na čtení a pište :

$ chmod o=rw

Speciální bity:Nastavení UID, GID a lepivých bitů

Kromě standardních oprávnění existuje několik speciálních bitů oprávnění, které mají některé užitečné výhody.

Nastavit ID uživatele (suid)

Když suid je nastaven na soubor, operace se provede jako vlastník souboru, nikoli uživatel spouštějící soubor. Dobrým příkladem je passwd příkaz. Potřebuje suid bit, který má být nastaven tak, aby změna hesla probíhala s oprávněním root.

$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

Příklad nastavení suid bit by byl:

$ chmod u+s /bin/foo_file_name

Nastavit ID skupiny (sgid)

sgid bit je podobný suid bit v tom smyslu, že operace se provádějí pod skupinovým vlastnictvím adresáře namísto uživatele spouštějícího příkaz.

Příklad použití sgid by bylo, pokud více uživatelů pracuje ze stejného adresáře a každý soubor vytvořený v adresáři musí mít stejná oprávnění skupiny. Níže uvedený příklad vytvoří adresář s názvem collab_dir , nastaví sgid bit a změní vlastnictví skupiny na webdev .

$ mkdir collab_dir
$ chmod g+s collab_dir
$ chown :webdev collab_dir

Nyní bude mít jakýkoli soubor vytvořený v adresáři skupinové vlastnictví webdev namísto uživatele, který soubor vytvořil.

$ cd collab_dir
$ touch file-sgid
$ ls -lah file-sgid
-rw-r--r--. 1 root webdev 0 Jun 12 06:04 file-sgid

"lepkavý" bit

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Lepkavý bit označuje, že soubor může smazat pouze vlastník souboru, i když by to jinak umožňovala oprávnění skupiny. Toto nastavení obvykle dává největší smysl ve společném adresáři nebo adresáři pro spolupráci, jako je /tmp . V níže uvedeném příkladu t v spustit sloupec všechny ostatní sada oprávnění označuje, že byl použit lepivý bit.

$ ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jun 12 06:07 /tmp/

Mějte na paměti, že to nebrání někomu v úpravě souboru; jen jim to brání ve smazání obsahu adresáře.

Lepivý bit nastavíme pomocí:

$ chmod o+t foo_dir

Sami zkuste nastavit lepivý bit na adresář a udělte mu plná skupinová oprávnění, aby v adresáři mohlo číst, zapisovat a spouštět více uživatelů, protože jsou ve stejné skupině.

Odtud vytvořte soubory jako každý uživatel a poté se je pokuste smazat jako druhý.

Pokud je vše správně nakonfigurováno, jeden uživatel by neměl mít možnost odstranit uživatele od druhého uživatele.

Všimněte si, že každý z těchto bitů lze také nastavit v osmičkovém formátu s SUID=4, SGID=2 a Sticky=1.

$ chmod 4744
$ chmod 2644
$ chmod 1755

Velká nebo malá písmena?

Pokud nastavujete speciální bity a vidíte velké S nebo T místo malých písmen (jak jsme viděli až do této chvíle) je to proto, že základní prováděcí bit není přítomen. Pro demonstraci následující příklad vytvoří soubor se sadou sticky bit. Poté můžeme přidat/odebrat prováděcí bit, abychom demonstrovali změnu velikosti písmen.

$ touch file cap-ST-demo
$ chmod 1755 cap-ST-demo
$ ls -l cap-ST-demo
-rwxr-xr-t. 1 root root 0 Jun 12 06:16 cap-ST-demo

$ chmod o-x cap-X-demo
$ ls -l cap-X-demo
-rwxr-xr-T. 1 root root 0 Jun 12 06:16 cap-ST-demo

Podmíněné nastavení bitu spuštění

Do tohoto okamžiku jsme nastavili spustit bit pomocí malých písmen x , který jej nastaví bez kladení otázek. Máme další možnost:použít velké X místo malých písmen nastaví spustit bit pouze v případě, že je již někde ve skupině oprávnění přítomen. Vysvětlení tohoto konceptu může být obtížné, ale ukázka níže to pomůže ilustrovat. Zde si všimněte, že po pokusu o přidání spustit bit do skupinových oprávnění, není použito.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+X cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file

V tomto podobném příkladu přidáme nejprve ke skupinovým oprávněním spouštěcí bit pomocí malých písmen x a poté použijte velká písmena X přidat oprávnění pro všechny ostatní uživatele. Tentokrát velká písmena X nastaví oprávnění.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ ls -l cap-X-file
-rw-r-xr--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ chmod o+X cap-X-file
ls -l cap-X-file
-rw-r-xr-x. 1 root root 0 Jun 12 06:31 cap-X-file

Porozumění umask

umask maskuje (nebo "blokuje") bity z výchozí sady oprávnění, aby bylo možné definovat oprávnění pro soubor nebo adresář. Například 2 v umasku výstup indikuje, že blokuje zápis bit ze souboru, alespoň ve výchozím nastavení.

Pomocí umask příkaz bez jakýchkoli argumentů nám umožňuje vidět aktuální umask nastavení. Jsou zde čtyři sloupce:první je vyhrazen pro speciální suid, sgid nebo sticky bit a zbývající tři představují vlastníka, skupinu a další oprávnění.

$ umask
0022

Abychom pochopili, co to znamená, můžeme spustit umask s -S (jak je uvedeno níže), abyste získali výsledek maskování bitů. Například kvůli 2 hodnota ve třetím sloupci, zápis bit je maskován ze skupiny a dalších sekcí; pouze číst a provést lze jim přiřadit.

$ umask -S
u=rwx,g=rx,o=rx

Chcete-li zjistit, jaká je výchozí sada oprávnění pro soubory a adresáře, nastavte náš umask na všechny nuly. To znamená, že při vytváření souboru nemaskujeme žádné bity.

$ umask 000
$ umask -S
u=rwx,g=rwx,o=rwx

$ touch file-umask-000
$ ls -l file-umask-000
-rw-rw-rw-. 1 root root 0 Jul 17 22:03 file-umask-000

Když nyní vytvoříme soubor, vidíme, že výchozí oprávnění jsou čtení (4) a pište (2) pro všechny sekce, což by se rovnalo 666 v osmičkovém vyjádření.

Totéž můžeme udělat pro adresář a jeho výchozí oprávnění jsou 777. Potřebujeme spustit bit na adresáře, abychom jimi mohli procházet.

$ mkdir dir-umask-000
$ ls -ld dir-umask-000
drwxrwxrwx. 2 root root 4096 Jul 17 22:03 dir-umask-000/

Závěr

Existuje mnoho dalších způsobů, jak může správce řídit přístup k souborům v systému. Tato oprávnění jsou pro Linux základní a na těchto základních aspektech můžeme stavět. Pokud vás vaše práce zavede do FACL nebo SELinuxu, uvidíte, že také staví na těchto prvních pravidlech přístupu k souborům.


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

  2. Linux Lab:SysAdmin 101

  3. Linux – změnit oprávnění složky?

  1. Obnovení hesla root v systému Linux

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

  3. Přidejte uživatele systému Linux s oprávněními root dokumentů

  1. Co je Umask v Linuxu

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

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