GNU/Linux >> Znalost Linux >  >> Linux

Nelze odstranit soubor s bity režimu souboru a+rw

/tmp adresář je konvenčně označen omezeným mazáním příznak, který se zobrazí jako písmeno oprávnění t nebo T v ls výstup.

Omezené mazání znamená několik věcí. V obecném případě to znamená, že pouze vlastník souboru nebo vlastník /tmp může odstranit soubor/adresář v /tmp .

Soubor nemůžete smazat, protože nejste vlastníkem, což je root . Zkuste spustit rm s sudo na kterou jste pravděpodobně zapomněli.

sudo rm /tmp/test

Přesněji řečeno pro samotný Linux, příznak omezeného smazání (v adresáři, do kterého lze zapisovat po celém světě, jako je /tmp ) také povolí protected_symlinks , protected_hardlinks , protected_regular a protected_fifos omezení, která v takových adresářích brání uživatelům v následování symbolických odkazů, které nevlastní, zabraňují uživatelům vytvářet pevné odkazy na soubory, které nevlastní, brání uživatelům otevírat FIFO, které nevlastní, a brání uživatelům v otevírání existujících souborů, které nevlastní, když očekávali, že je vytvoří.

To vás překvapí chybami oprávnění při provádění různých dalších věcí jako root když uděláte použijte sudo .

Více o nich v otázce jako "Chování oprávnění k pevnému odkazu se liší mezi CentOS 6 a CentOS 7", "Symbolický odkaz nefunguje podle očekávání při změně uživatele" a "Oprávnění skupiny pro roota nefungují v /tmp".


Zdá se, že problém je v lepivém kousku /tmp .

$ ls -ld /tmp
drwxrwxrwt⃝   1 root  root  1044 Mar 13 12:09 /tmp

https://cs.wikipedia.org/wiki/Sticky_bit

Když je nastaven lepivý bit adresáře, souborový systém zachází se soubory v těchto adresářích zvláštním způsobem, takže pouze vlastník souboru, vlastník adresáře nebo uživatel root může soubor přejmenovat nebo odstranit. Bez nastaveného sticky bitu může každý uživatel s oprávněním k zápisu a spouštění pro adresář přejmenovat nebo odstranit obsažené soubory, bez ohledu na vlastníka souboru. Toto se obvykle nastavuje v adresáři /tmp, aby se zabránilo běžným uživatelům mazat nebo přesouvat soubory jiných uživatelů.


Linux
  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Jak mohu odstranit soubor nebo adresář s názvem \?

  3. Proč dávat věci jiné než /home do samostatného oddílu?

  1. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  2. Seřadit pomocí oddělovače polí

  3. Jak změnit výchozí /tmp na /home/user/tmp

  1. 10+ Linux VI příkazy s příklady

  2. Nahrajte soubory jako ASCII nebo binární pomocí FTP

  3. Rozdíl a správné použití pro /tmp a /var/tmp