Každý soubor, který je v souborovém systému kompatibilním s POSIX (Ext4, Btrfs, XFS, JFS atd.), má přiřazeny „bity režimu“.
Aby byl soubor spustitelný v Linuxu, musí být povolen bit spustitelného režimu.
Pro nastavení bitu spustitelného režimu se příkaz chmod používá takto:
chmod u+x <file>
S tím můžete spustit uvedený soubor z terminálu:
./file
To bylo rychlé shrnutí. Podívejme se na věci trochu podrobněji.
Udělejte ze souboru spustitelný soubor v systému Linux
Existuje několik způsobů, jak vytvořit soubor spustitelný v Linuxu. Nejběžnější metody zahrnují použití chmod
příkaz, různými způsoby.
Chcete-li zkontrolovat, zda můžete spustit soubor, použijte -l
příznak pomocí ls
příkaz.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
V prvním sloupci -rw-r--r--
znamená, že vlastník může číst a zapisovat, uživatelé ze skupiny mohou pouze číst a všichni ostatní mohou soubor pouze číst.
Všimněte si, že chybí x
ze symbolů povolení. To znamená, že lhb.txt
není spustitelný.
Vřele doporučuji přečíst si o oprávněních k souborům v Linuxu a oprášit si základy, abyste těmto příkazům lépe porozuměli.
Metoda 1:Vytvořte soubor spustitelný pro všechny
První a nejpřímější metoda je vytvořit soubor spustitelným pomocí následujícího příkazu:
chmod +x <file>
x
příznak je nastavit nebo zrušit nastavení oprávnění ke spuštění souboru. A pomocí +
znak před x
znamená, že jej chceme nastavit jako spustitelný soubor.
Tím se soubor stane spustitelným pro vlastníka, skupinu a všechny ostatní. Kdokoli v systému jej bude moci také spustit.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
Jak nyní vidíte, každý, vlastník, skupina a další mají spustitelný soubor x
bitová sada. To znamená, že tento soubor nyní může spustit každý.
Metoda 2:Nastavení spustitelného souboru pouze pro určitého uživatele nebo skupinu
Pokud nechcete, aby každý mohl spustit soubor, měli byste před přidáním/odebráním oprávnění souboru zadat třídy.
Dostupné třídy jsou:
u
:oprávnění pro vlastníka/uživateleg
:oprávnění pro skupinuo
:oprávnění pro ostatnía
:oprávnění pro všechny
Když zadáte třídu, syntaxe je většinou podobná té, kterou jste viděli v první metodě.
chmod <class>+x <file>
To znamená, že pokud chci, aby byl soubor spustitelný tak, aby jej mohl spustit pouze vlastník souboru a nikdo jiný, měl bych použít následující příkaz:
chmod u+x <file>
Zde je příklad:
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod u+x lhb.txt
$ ls -l lhb.txt
-rwxr--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Podobně, aby byl spustitelný pro každého ve skupině vlastnící tento soubor, měl bych použít následující příkaz:
chmod g+x <file>
Zde je příklad:
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod g+x lhb.txt
$ ls -l lhb.txt
-rw-r-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Když zadáte a
třídy, skoro jako byste žádnou neuvedli. Pojďme se podívat.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 644 lhb.txt #reset permissions
$ chmod a+x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
Tyto příkazy mohou vypadat odlišně, ale mají stejný výsledek.
Metoda 3:Použití osmičkových čísel
Pokud budete postupovat podle první metody, povolíte příznak spustitelného souboru pouze pomocí +x
, takže jej může spustit kdokoli.
Někdy však možná nebudete chtít, aby každý spouštěl soubor, možná by měl potřebovat určitá oprávnění. V takovém případě můžete zadat úplnou sadu oprávnění.
To se obvykle provádí buď poskytnutím osmičkové hodnoty nebo symbolické hodnoty pro povolení souborových oprávnění.
To vám umožní mít podrobnější kontrolu nad nastavením příznaků. Níže je uvedena syntaxe pro použití osmičkové hodnoty s chmod
příkaz:
chmod <octal> <file>
Pokud nejste dobří s čísly, můžete použít online kalkulačku chmod, která vám pomůže vygenerovat správné osmičkové hodnoty, a vyhnout se tak použití nesprávné hodnoty a zkreslení oprávnění k souboru.
Řekněme, že chci, aby byl soubor spustitelný pouze pro vlastníka a skupinu, nejprve potřebuji znát jeho aktuální oprávnění a přidat k němu spustitelné bity pomocí [chmod-calculator].
Podívejme se, jak to udělat.
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 754 lhb.txt
$ ls -l lhb.txt
-rwxr-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
Jak vidíte, soubor může spustit pouze vlastník a skupina.
Závěr
Tento článek popisuje vytvoření spustitelného souboru v systému Linux. Zaměřil se hlavně na různé způsoby použití chmod
příkaz. Pokud se o tom chcete dozvědět více, máme několik příkladů, jak použít chmod
příkaz.