GNU/Linux >> Znalost Linux >  >> Linux

Proč může Rm odebrat soubory pouze pro čtení?

Pokud vytvořím soubor a poté změním jeho oprávnění na 444 (pouze pro čtení), jak to, že rm lze jej odstranit?

Pokud udělám toto:

echo test > test.txt
chmod 444 test.txt
rm test.txt

rm se zeptá, zda chci odstranit soubor chráněný proti zápisu test.txt . Očekával bych, že rm nelze takový soubor odstranit a že bych musel provést chmod +w test.txt za prvé. Pokud udělám rm -f test.txt pak rm odstraní soubor, aniž by se zeptal, i když je pouze pro čtení.

Může někdo objasnit? Používám Ubuntu 12.04/bash.

Přijatá odpověď:

Vše rm potřebuje oprávnění k zápisu + spouštění v nadřazeném adresáři. Oprávnění samotného souboru jsou irelevantní.

Zde je odkaz, který vysvětluje model oprávnění jasněji, než jsem kdy mohl:

Jakýkoli pokus o přístup k datům souboru vyžaduje oprávnění ke čtení. Jakýkoli
pokus o úpravu dat souboru vyžaduje oprávnění k zápisu. Jakýkoli
pokus o spuštění souboru (programu nebo skriptu) vyžaduje oprávnění ke spuštění

Protože se adresáře nepoužívají stejným způsobem jako běžné soubory, oprávnění
fungují mírně (ale jen mírně) odlišně. Pokus
o výpis souborů v adresáři vyžaduje oprávnění ke čtení pro adresář
, ale ne pro soubory v něm. Pokus o přidání souboru do
adresáře, smazání souboru z adresáře nebo přejmenování souboru, všechny
vyžadují oprávnění k zápisu do adresáře, ale (možná překvapivě)
ne pro soubory uvnitř. Oprávnění k provedení se nevztahuje na
adresáře (adresář nemůže být zároveň program). Ale tento
bit oprávnění je znovu použit pro adresáře pro jiné účely.

K adresáři je potřeba oprávnění ke spuštění, abyste do něj mohli cd
(to znamená, aby se nějaký adresář stal vaším aktuálním pracovním adresářem).

Pro přístup k informacím „inode“
souborů v adresáři je potřeba provést příkaz. Potřebujete to k prohledání adresáře pro čtení
inodů souborů v něm. Z tohoto důvodu se oprávnění ke spuštění v
adresáři místo toho často nazývá oprávnění k vyhledávání.


Linux
  1. Rekurzivní statistiky o typech souborů v adresáři?

  2. Vytvářejte a odebírejte odkládací soubory v Ubuntu

  3. Odeberte symbolický odkaz na adresář

  1. Odstraňte pouze soubory v adresáři v adresářích linux NOT

  2. linuxový příkaz k vyprázdnění všech souborů v adresáři

  3. Jak mohu rekurzivně kopírovat soubory podle přípony souboru a zachovat adresářovou strukturu?

  1. Proč je můj souborový systém připojen pouze pro čtení?

  2. Proč je kořenový adresář označen znakem /?

  3. Jak odstranit soubory ._ v adresáři? Ubuntu