[linux] Re: onverwijderbare files

Paul Slootman paul+nospam op wurtel.net
Vr Okt 21 19:01:01 CEST 2005


On Fri 21 Oct 2005, joop gerritse wrote:

> In ieder geval: als jij mortal user <>501 bent, kun je geen files opruimen die 
> eigendom zijn van user 501, of die nou bestaat of niet. Dat zou een mooie 
> boel worden als dat wel kon, niet?

Kan best hoor; als je maar mag schrijven in de directory waar die files
in staan. Het weggooien van files onder linux is nl. niet iets waarvoor
je schrijfrechten op die files nodig hebt, die schrijf je immers ook
niet; je schrijft in de directory (je haalt de verwijzing naar de inode
van die file weg). Dat het OS vervolgens files opruimt waarvan de link
count in de inode 0 is, is een mooie bijkomstigheid :)

Uitzondering is als de directory de "sticky bit" aan heeft staan, te
zien aan een 't' als laatste char in de perm vlaggetjes:

$ ls -ld /tmp
drwxrwxrwt   23 root     root         6456 Oct 21 19:00 /tmp

Dan mag alleen de eigenaar van de file 'm unlinken.


Daarom blijft de ruimte in gebruik die b.v. een log file toebehoort
wanneer je die file weggooit maar er nog steeds geschreven wordt naar
die file; de link count is niet nul, want die is nog open op dat moment.
Pas als het laatste process de file gesloten heeft, zal het OS de ruimte
vrijgeven.  Dus wanneer b.v. een apache log uit de hand loopt, en je
hebt geen tijd voor een logrotate ofzo, dan doe je "> access.log".
Daarmee maak je 'm leeg, en dan is de ruimte ook echt vrijgegeven.

Mocht je de file in alle onschuld toch weggegooid hebben, dan kun je 'm
nog leeggooien via > /proc/$PID/fd/$FD (opsporen door "lsof -n | grep
deleted").


Paul Slootman



More information about the Linux mailing list