Tento článek popisuje, jak změnit oprávnění na cloudovém serveru Linux® pomocí chmod
příkaz.
Co je příkaz chmod?
Jednoduše řečeno chmod
znamená režim změny a používá se k nastavení oprávnění k souborům nebo adresářům v Linuxu. Uživatelé root používají chmod
určit, kteří uživatelé, skupiny a další mohou přistupovat k souborům nebo adresářům.
Obvykle používáte chmod
příkaz v následujících formátech:
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
Použití voleb s chmod
příkaz je volitelný. Nejčastěji se používá druhý příklad. Bez možnosti chmod
upravuje oprávnění souboru nebo adresáře určeného v příkazu.
Oprávnění
V systému Linux můžete pomocí oprávnění odkazovat na vlastníka souboru nebo adresáře (uživatele), skupinu, která soubor nebo adresář vlastní (skupina), nebo kohokoli jiného, kdo k souboru nebo adresáři přistupuje (ostatní).
Uveďte tato oprávnění pomocí následujícího zápisu:
- alfanumerické znaky (r, w, x)
- osmičková čísla (0-7)
Máte například soubor s názvem example.txt a chcete nastavit následující oprávnění:
- Uživatel může soubor číst, zapisovat a spouštět.
- Členové skupiny mohou soubor číst a spouštět, nikoli však zapisovat.
- Všichni ostatní mohou soubor pouze číst.
Následující možnost příkazu nastavuje požadovaná oprávnění pro example.txt :
$ chmod u=rwx,g=rx,o=r example.txt
Tato možnost používá alfanumerické znaky k označení uživatelů, kteří mají k souboru přístup, a také oprávnění, která chcete těmto určeným uživatelům nastavit.
- Písmeno „u“ =uživatel
- Písmeno „g“ =skupina
- Písmeno „o“ =jiné
- Písmeno „r“ =číst
- Písmeno „w“ =psát
- Písmeno „x“ =vykonat
Následující příklad ukazuje, jak Linux zobrazuje oprávnění udělená v předchozím příkladu:
-rwxr-xr--
První tři písmena (rwx) jsou oprávnění uživatele. Druhé tři (r-x) představují oprávnění skupiny a poslední tři (r–) představují oprávnění ostatních.
Dále máme pro náš example.txt osmičkovou možnost cvičení:
$ chmod 754 example.txt
V tomto příkladu představují čísla 7, 5 a 4 oprávnění uživatele, skupiny a dalších. První číslo určuje oprávnění uživatele, druhé číslo určuje oprávnění skupiny a třetí číslo přiděluje oprávnění ostatním.
Tato čísla nejsou vybrána náhodně. Sčítání čísel 4, 2, 1 a 0 určuje oprávnění. Čísla mají následující přiřazení:
- 4 znamená „číst“
- 2 znamená „psát“
- 1 znamená „provést“
- 0 znamená „žádný“
Proto v našem předchozím příkladu je 7 určena z kombinace čtení (4), zápisu (2) a provádění (1):4 + 2 + 1 =7. 5 je převzato ze sečtení čtení (4), žádné (0) a spouštět (1):4 + 0 + 1 =5. A konečně, 4 je kombinací čtení (4), žádné (0) a žádné (0):4 + 0 + 0 =4 .
Možnosti
Obvykle nemusíte používat možnosti v chmod
příkaz, ale v případě, že to uděláte, můžete použít následující možnosti s chmod
:
-c
,--changes
:Poskytuje podrobný výstup pro provedené změny-f
,--silent
,--quiet
:Ztiší většinu chybových zpráv-v
,--verbose
:Vytiskne podrobnou zprávu pro každou zpracovanou akci--no-preserve-root
:Ignoruje deferenci, která je normálně standardně dána adresáři / (kořenovému)--preserve-root
:Nepracuje rekurzivně v / (kořenovém) adresáři--reference=RFILE
:Nastaví oprávnění tak, aby odpovídala oprávněním RFILE, přičemž ignoruje jakýkoli konkrétní MODE-R
,--recursive
:Změny provedené v souborech nebo adresářích jsou aplikovány rekurzivně--help
:Zobrazí zprávu nápovědy a poté se ukončí--version
:Zobrazí informace o verzi a poté se ukončí
Doplňky
Kromě již zmíněných oprávnění, chmod
příkaz může nastavit tři další speciální oprávnění v Linuxu.
- SUID (Nastavit ID uživatele)
- SGID (Nastavit ID skupiny)
- Sticky Bit
SUID
s
v rwx
uživatele sada oprávnění, nahrazující x
, představuje toto oprávnění, jak ukazuje následující příklad:
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
První tři písmena v rwsr-xr-x
představují uživatelská oprávnění. Všimněte si, že místo x
je tam s
ve třech slotech oprávnění uživatele. Místo zobrazení x
pro spuštění existuje s
na místě provedení. Proč?
Poznámka: Toto oprávnění představuje 4 před obvyklou osmičkovou sadou oprávnění. Takže místo 755
, oprávnění je zapsáno jako 4755
.
Tuto volbu byste měli používat s opatrností, protože toto konkrétní oprávnění umožňuje uživateli spustit binární program, jako by byl vlastníkem tohoto programu, i když jím není. Nejznámějším příkladem je passwd
příkaz.
V případě passwd
, uživatel je schopen spustit program, i když binární program vlastní root. Nicméně, protože passwd
je standardně nastaveno jako SUID, vždy se spustí jako uživatel root.
Pokud má běžný uživatel oprávnění SUID u jiných binárních programů, může spouštět příkazy jako root, aniž by měl root
oprávnění. Umožňuje abnormální eskalaci oprávnění, která obvykle vyžadují sudo
oprávnění k přístupu.
Oprávnění SUID mohou ovlivnit opatření zabudované do operačního systému Linux ve formě pouze binárních souborů. Nemá vliv na skripty.
SGID
s
v rwx
skupiny sada oprávnění, nahrazující x
v t r-x
segment, představuje oprávnění SGID, jak ukazuje následující příklad:
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
Toto s
je ve druhé skupině tří oprávnění, která, jak jsme zjistili, jsou oprávnění skupiny dříve, když byla napsána v alfanumerickém stylu. V osmičkovém vykreslení 2
před dalšími třemi osmičkovými čísly oprávnění označuje toto oprávnění. Místo 755
, napište to jako 2755
.
Stejně jako SUID, oprávnění SGID fungují pouze na binárních souborech. Nefungují na skriptech. Pokud jde o to, co SGID dělá, umožňuje nepřivilegovaným členům skupiny spustit binární soubor, jako by byli uživatelem root.
Obvykle můžete toto oprávnění použít u adresářů, kam členové skupiny potřebují mít přístup v rámci adresáře sdíleného skupinou. Všechny soubory vytvořené v tomto adresáři mají stejného vlastníka skupiny, bez ohledu na to, který člen skupiny soubor vytvořil.
Přilnavý bit
A t
v rwx
ostatních sada oprávnění, nahrazující x
, představuje toto oprávnění, jak ukazuje následující příklad:
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
Všimněte si t
v poslední sadě tří písmen. Osmičkový ekvivalent t
je 1
před třemi oktály povolení. Místo 777
, napište to jako 1777
.
Co dělá tento lepivý kousek? Toto oprávnění obvykle používáte pro tmp a jeho funkcí je zabránit uživatelům ve smazání souborů vlastněných jinými uživateli. Obvykle, pokud má skupina přístup k zápisu do adresáře, může kterýkoli uživatel v této skupině odstranit jakýkoli soubor v tomto adresáři. Povolení sticky bit to zastaví. Smazat soubor může pouze jeho tvůrce.
Nejlepším postupem je nastavit oprávnění sticky bit pro jakýkoli adresář, jehož ostatní oprávnění je oktalová 7 (čtení, zápis, spouštění). V našem 754
například chcete použít oprávnění k lepivému bitu, pokud jsou osmičkové body 757
kde 7 je třetí osmička (představuje oprávnění ostatních).
Cheat sheet pro soubory a adresáře
Následuje stručný cheat vysvětlující každou část výstupu příkladu:
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
:-
na začátku vám říká, že se jedná o soubor.d
na začátku označuje adresář.rwx
:První tři písmena představují oprávnění vlastníka souboru a znamenají, že vlastník může číst, zapisovat a spouštět soubor example.txt.rw-
:Druhá tři písmena představují oprávnění skupiny a znamenají, že členové skupiny mohou soubor číst a zapisovat do něj, ale nemohou jej spustit.r--
:Třetí tři písmena představují oprávnění ostatních a znamenají, že kdokoli, kdo není vlastníkem nebo ve skupině, která soubor vlastní, může soubor pouze číst. Nemohou do souboru zapisovat ani jej spustit.rack
:Vlastník souboru.space
:Vlastník skupiny.123G
:Velikost souboru v gigabajtech.M
by označovalo megabajty aK
by označovalo kilobajty.Feb 03 15:36
:Označuje datum a čas, kdy byl soubor naposledy upraven.example.txt
:Název souboru. Pokud toto uvedete jako „/example“, jedná se o název adresáře.