/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ů.