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.