[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: crontab and editors (was Re: Editor Priorities)

On 08-May-02, 16:12 (CDT), Richard Kettlewell <richardk@chiark.greenend.org.uk> wrote: 
> Steve Greenland <steveg@moregruel.net> writes:
> > Richard Kettlewell <richardk@chiark.greenend.org.uk> wrote: 
> >> Steve Greenland <steveg@moregruel.net> writes:
> >>> * Edits files in place, rather than moving/copying +20
> >>> 
> >>> See crontab(1) for why.
> >> 
> >> Why can't crontab be fixed?
> > 
> > Crontab isn't broken[1]. 
> Well, it certainly sounds like it's broken to me...

Crontab works like this roughly:

0. open /tmp/funnyname
1. copy existing /var/spool/cron/crontabs/whatever to /tmp/funnyname
2. start ($VISUAL|$EDITOR|/usr/bin/editor) on /tmp/funnyname, wait for child
   to exit.
3. if stat.modtime(/tmp/funnyname) hasn't changed, then goto 7.
4. rewind(/tmp/funnyname)
5. check that /tmp/funnyname parses
6. copy /tmp/funnyname /var/spool/cron/crontabs/whatever
7. rm /tmp/funnyname

(All without closing /tmp/funnyname between 1 and 7).

How is this broken - Other than in the presence of editors that do
backups incorrectly. :-)

> > [1] Hint: Files in /tmp. Symlinks. Root crontab. 
> ...and it sounds from this like the bug is the use of /tmp.  Why is it
> impossible to put the temporary crontab somewhere else?

Uh, that's what /tmp is for. But one still has to deal with security
issues. (Crontab used to respect TMPDIR, except that emacs explicitly
switches behaviour when the filename path begins with "/etc"). I suppose
one could dump it in the home directory...but I'm basically tired of
messing with the confusion that is the cron source code except for real


Steve Greenland

To UNSUBSCRIBE, email to debian-devel-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

Reply to: