GNU/Linux >> Znalost Linux >  >> Linux

Proč potřebuji bit 'spustit' v režimu souborů na souborových systémech Unix?

Protože *nix není natolik poškozený mozek, aby se soubor stal „binárním spustitelným“, pokud jej náhodou pojmenujete „.exe“ nebo „spustitelný skript“, pokud jej náhodou pojmenujete „.bat“.

V Linuxu na názvu souboru nezáleží.

A oprávnění, která souboru udělíte, dělají záležitost.

Což dává smysl. IMHO...


Spouštěcí bit je poněkud zmatený mezi oprávněním a identifikátorem typu objektu.

A ne, nemůžete "vždy zkopírovat" soubor do vašeho domovského adresáře:pouze pokud je pro vás čitelný.

Soubory mohou být pro vás spustitelné, ale ne čitelné.

Máte pravdu v tom, že pokud je soubor pro vás čitelný, ale není pro vás spustitelný, můžete jej zkopírovat a převrátit vykonávací bit a použít jej. Možná. Ale nemusí to fungovat. Spustitelný soubor může být citlivý na místo, kde je nainstalován. Nebo může soubor záviset na jeho kořenovém bitu setuid.

Nenavrhl bych systém povolení tímto způsobem počínaje čistým štítem; nedává to úplně smysl. Oprávnění ke spuštění by bylo oddělené od atributu typu spustitelného souboru a oprávnění ke spuštění by nebylo přetíženo oprávněním k vyhledávání (i kdyby bylo takto uloženo; API by je neodhalilo na úrovni bitové masky).


Překvapuje mě, že se nikdo nezmínil o binárních souborech, které běží se speciálními oprávněními. Wireshark zde přichází s případem použití v reálném světě:jednou z jeho hlavních funkcí je zachycení síťového provozu, což normálně umí pouze root. Dává smysl, že možná budete chtít povolit určitým uživatelům zachytit provoz pomocí Wireshark, aniž byste jim museli udělit úplný root přístup, takže Wireshark přichází s binárním souborem nazvaným dumpcap který má povolené potřebné funkce (CAP_NET_RAW a CAP_NET_ADMIN). Tato binární hodnota je 0754 (rwxr-xr-- ) a jeho přidružené GID je speciální skupina, kterou Wireshark instaluje. Tímto způsobem může každý uživatel ve skupině spustit binární soubor (obecně prostřednictvím Wireshark) k zachycení provozu a bude spuštěn s nezbytnými oprávněními k tomu, ale uživatel, který není v této skupině, nebude moci, protože by nemáte oprávnění k provedení. Stále ji mohli zkopírovat do svého domovského adresáře, ale jejich kopie by pak neměla nastavené potřebné schopnosti, takže by ve skutečnosti nemohla zachytit žádný provoz.


Linux
  1. Proč potřebujeme mktemp?

  2. Proč stdout potřebuje explicitní vyprázdnění při přesměrování do souboru?

  3. Proč mají operační systémy omezení velikosti souborů?

  1. top v dávkovém režimu, potřebuje CPU% pro každé jádro

  2. Proč jsou soubory .so spustitelné?

  3. Co je lepkavý bit v souborových systémech UNIX? Kdy se používá?

  1. Hašování hesel a proč to potřebujeme

  2. Proč používáme „./“ (lomítko) ke spuštění souboru v Linuxu/unixu?

  3. Proveďte příkaz, kde je nalezen soubor?