GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Chmod – Jak změnit oprávnění k souborům v Linuxu

Jedním z prvních příkazů, které jsem se v Linuxu naučil, byl touch příkaz, který vytvoří soubor pomocí příkazového řádku.

Pokud se někdy pokusíte vytvořit například textový soubor, vše, co musíte udělat, je zadat touch filename.txt , stiskněte Enter a soubor se vám vytvoří v adresáři, ve kterém se nacházíte. Poté do něj můžete zapisovat, co chcete, pomocí editoru souborů podle vašeho výběru.

Nicméně, pokud jde o vytváření skriptů, věci se mohou trochu zkomplikovat. proč tomu tak je?

Pokusím se vám to ukázat na jiném příkladu. Předpokládejme, že chcete vytvořit skript pomocí dotyku. Zadejte touch example.sh , stiskněte Enter a máte to. Ještě jednou do něj můžete zapisovat pomocí editoru souborů.

Když je vše připraveno, zbývá to jen otestovat. Zadejte ./sample.sh a stiskněte Enter, abyste viděli svůj skript v akci a…ale co mi tato zpráva říká?

Proč potřebujeme oprávnění?

Jsem admin! Jak to, že nemám oprávnění ke spuštění skriptu, který jsem sám napsal před několika sekundami?

Ve skutečnosti to má svůj důvod – a upřímně řečeno, většina uživatelů by za to měla být vděčná, protože neschopnost spouštět skripty, aniž by věděli, co děláte, vám často brání vystavit váš systém riziku.

Nejprve si krátce promluvme o oprávněních. Poté přejdeme k objevování, jak je změnit.

Abychom o vašem souboru získali další informace, použijeme příkaz, který vypíše soubory v adresáři:ls .

Po zadání ls a stisknutím klávesy Enter se v příkazovém řádku zobrazí toto:

Co dělá, je seznam všech viditelných souborů v adresáři, ve kterém se právě nacházíte. Přidáním parametru -l k tomu vám poskytne více informací o souborech v adresáři. Toto je výsledek, když zadáme ls -l a stiskněte Enter:

Vidíme stejné soubory, ale se spoustou informací před nimi. Pro začátek tu máme sekvenci deseti pomlček a písmen, která se na první pohled mohou zdát nesmyslná. Toto je ve skutečnosti mapování oprávnění, která má váš soubor.

První znak může být pomlčka (- , pro běžný soubor), d (pro adresář) nebo l (pro měkký odkaz). Pro jednoduchost se zaměřím na jednoduché soubory, ačkoli oprávnění jsou platná pro všechny tyto druhy souborů/složek.

Po prvním znaku lze dalších 9 rozdělit do skupin po třech. První trojice zobrazuje oprávnění pro aktuálního uživatele. Další ukazuje oprávnění pro tuto skupinu. Poslední tři jsou oprávnění pro všechny uživatele, kteří nespadají do této kategorie.

Pro naše vysvětlení se zaměřme na první tři oprávnění, protože nebudeme měnit skupiny ani nic podobného.

První trojice říká rw- .

Čas pochopit, co to je. Se souborem můžete normálně dělat tři věci:číst jej, zapisovat do něj a spouštět jej. To je v podstatě to, co ta písmena znamenají.

První r znamená oprávnění ke čtení. Pak máme w za svolení k psaní. Nakonec pomlčka, což znamená, že cokoli by tam mělo být, není. Co by tam mělo být, je x , což znamená eXecutable.

Takže když mluvíme o aktuálním uživateli (já), oprávnění, která mám pro tento soubor, jsou oprávnění ke čtení a zápisu. Nemohu však spustit sample.sh soubor. Proto se mi při pokusu o spuštění souboru zobrazila zpráva „povolení odepřeno“.

Jak tedy mohu spustit tento soubor? To je místo chmod do hry vstupuje příkaz.

Co dělá chmod?

Dobře, od začátku článku zmiňuji „oprávnění“. Pojďme toto vysvětlení trochu rozšířit, abychom řekli, že jde o „oprávnění pro přístup k souboru v určitém režimu . To znamená, že r označuje oprávnění k přístupu k souboru v režimu čtení, w označuje oprávnění k přístupu k souboru v režimu zápisu a x označuje oprávnění k přístupu k souboru ve spustitelném režimu.

Proč ti to říkám? Kvůli příkazu je celý tento článek. chmod znamená „režim změny“. Jinými slovy, když použijete tento příkaz, změníte režim souboru na režim, který chcete použít.

Jak používat operátory s cmod

Je nutné použít operátora pomocí příkazu chmod. Slouží k určení druhu změny, kterou chcete v oprávněních provést.

Například + je operátor, který používáte k přidání oprávnění k těm, které již soubor má. - odebere oprávnění ze seznamu. Existuje také = operátor, který resetuje oprávnění, abyste je mohli znovu definovat.

V našem případě zadáním chmod -w sample.sh , o co žádám příkaz, je odstranit oprávnění k zápisu. Co bych tedy musel udělat, abych přidal oprávnění ke spustitelnému souboru, je napsat chmod +x sample.sh .

Pokud se nyní pokusím spustit soubor, vše, co vložím do skriptu, se nyní spustí.

Pomocí ls -l , to je to, co bych teď měl.

Kdo získá povolení?

Ještě něco, co stojí za zmínku, je, kdo toto povolení získává. Uvidíte, že 'x' dostanou všichni uživatelé, vlastník souboru, skupina a další. Pokud to není to, co hledáte, možná by bylo dobré oprávnění ke spustitelnému souboru znovu odebrat pomocí chmod -x sample.sh .

Abychom povolili oprávnění pouze pro vlastníka souboru (v tomto případě pro mě), měli bychom přidat 'u' před '+x', takto:

chmod u+x sample.sh

Zadáním ls -l , to je to, co máte:

Pokud byste chtěli udělit oprávnění vlastníkovi i jeho skupině, příkaz by byl chmod ug+x sample.sh .

Skvělý! Myslím, že to pokrývá to, co bych vám chtěl ukázat. Existují další věci, které by vás mohly zajímat, například jak používat chmod s osmičkovými nebo binárními hodnotami k reprezentaci oprávnění. Ale toto jsou režimy, které používáme k dosažení stejných výsledků, a já věřím, že písmena jsou snazší způsob, jak těchto výsledků dosáhnout.

V případě, že chcete více informací o příkazu, jedna věc, kterou můžete udělat, je napsat chmod --help , který vám poskytne instruktáž o tom, co příkaz umí. Ještě podrobnějšího popisu dosáhnete zadáním man chmod .

Doufám, že vám byl tento článek užitečný. Další články o příkazech Linuxu najdete na freecodecamp.org/news.

Šťastné kódování! 😃


Linux
  1. Jak uložit výstup příkazu do souboru v Linuxu

  2. Jak změnit oprávnění a vlastníky pomocí příkazového řádku

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

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

  2. Jak používat příkaz chmod (Change Mode) v Linuxu

  3. 5 příkladů dotykových příkazů Linuxu (jak změnit časové razítko souboru)

  1. Linux File Command:Jak určit typ souboru v Linuxu

  2. Jak změnit heslo v Linuxu (příkaz passwd)

  3. Jak změnit oprávnění pro určitý vzor souboru/příponu?