Re: Safe /tmp cleanup

Valdis Kletnieks (Valdis.Kletnieks@VT.EDU)
Thu, 13 Nov 1997 12:43:28 -0500

--==_Exmh_1875402210P
Content-Type: text/plain; charset=us-ascii

On Thu, 13 Nov 1997 10:48:43 CST, you said:
> > find2perl /dir /ect -eval '-A > 1.5 and unlink' | perl

> > Perl is your friend. Use Perl.
> Wrong. Check out this snippet from find.pl (from perl 5.003):

I can't help it if you're using old, outdated, buggy software. 5.004_01 came
out in May 97, current is 5.004_04.

> # Get link count and check for directoriness.
(code elided)

This code has been overhauled for 5.004. In particular, it now passes along
a 'wanted' function that can do any additional checking you desire.

> It "checks for directoriness", and if it is a directory it chdir's into it.
> This does not do anything at all to prevent someone changing the name which
> used to be a directory into a link to somewhere else in the meantime. You

You can use the 'wanted' function to do this checking.

However, Randal's one-liner passed the 'wanted' function '-A > 1.5 and unlink'
which does, in fact, do *no* checking of the type needed. However, the lstat
information of the *original* directory is available to the 'wanted' function,
and it can re-lstat the *current*, do compares of dev/inode pairs, and reject
if it's been changed.

Bottom line: find2perl *can* do it securely. But not with Randal's original
one-line solution.

--
                                Valdis Kletnieks
                                Computer Systems Senior Engineer
                                Virginia Tech

--==_Exmh_1875402210P Content-Type: application/pgp-signature

-----BEGIN PGP MESSAGE----- Version: 2.6.2

iQCVAwUBNGs8PtQBOOoptg9JAQFIogQAozaxBX5kUEMeJ6Em49eEJHOuIdSS1Du0 727Vialiqa00t4O7jvl/hL+hllI2e0ylwed4zAOLN/f+0xX1Aqs1iqXS0//qKmS5 7lZM/FRTnlDYX96TCHg29gf6uelhhnP+wZKLjORYrcCnnDtcxZ1bhcp1QPevB4u3 Urtnr0jtneA= =VHXu -----END PGP MESSAGE-----

--==_Exmh_1875402210P--