crontab entry environment variables [PSARC/2007/503 FastTrack timeo

Don Cragun don.cragun at sun.com
Mon Sep 10 17:55:03 PDT 2007


>Date: Mon, 10 Sep 2007 10:23:52 +0100
>From: Darren J Moffat <Darren.Moffat at sun.com>
>
>Don Cragun wrote:
>> Darren,
>> 	The concern is that it is not unusual for 3rd party applications
>> to install crontab entries to perform periodic maintenance on log files,
>> databases, etc. during off-peak hours.  If someone installs one of these
>> applications that uses a shared crontab file (e.g., root) after putting
>> an entry in that shared crontab file that shifts the timezone, this
>> stuff may start running during peak hours.  I believe the man pages and
>> release notes should warn people who install software.  The warning
>> needs to specify that that crontab files may need to be manually
>> editted if software installation adds crontab tntries to any shared
>> crontab files if crontab timezone shifting is enabled.
>
>Am I correct in my reading of this that you do not object to the feature 
>as proposed but instead are just recommending clear documentation in the 
>man pages ?   Exactly what isn't clear about the proposed man pages ? 
>Do you feel you need to see final wording for this case to complete and 
>be marked as approved ?

Darren,
I do not object to the feature in concept as long as the man pages are
clear.  When I submitted my first comment there were no man pages in
the materials directory (in fact there was no materials directory).

The man pages currently in the materials directory have a few problems
including, but not necessarily limited to, the following:
 1.  There is nothing in cron.1m nor in crontab.1 warning users that
     they should not use the HOME, SHELL, or TZ variables in crontab
     files that contain entries installed by more than one user or
     application.

 2.  The cron.1m man page says this extension is enabled by setting
     ALLOW_EXTENSIONS=YES in /etc/default/cron.  The crontab.1 man page
     says this extension is enabled by setting:
		ALLOW_EXTENSIONS="1  \"YES\""
     in /etc/default/cron.  I assume the latter is a typo, but that
     entire paragraph in crontab.1 seems to be missing some words and
     is referencing only one of many standards that specify the
     behavior of the crontab utility.  Am I correct in assuming that
     the intent would be more accurately expressed by changing the
     current text:
      ``If        the variable  ALLOW_EXTENSIONS  is  set  to  1  "YES"  in
	/etc/default/cron allowed  to have a crontab file that does
	not conform to the        UNIX standard.''
     to something like:
      ``If ALLOW_EXTENSIONS=YES is present in /etc/default/cron each
	user's crontab file is allowed to contain lines setting any of
	the variables HOME, PATH, SHELL, and TZ in addition to the
	comments, standard crontab entries, and command input described
	on the rest of this page.''
     The other reference on the crontab.1 man page to "the UNIX
     standard" also needs to be changed.  The behavior of crontab is
     specified in XPG3, XPG4, POSIX.2-1992, POSIX.1-2001, SVID3, the
     System V ABI, and the SCD as well as SUS, SUSv2, and SUSv3.  I
     would suggest changing:
      ``The rest of the lines in the crontab file are comments,
	crontab entries, and command input as described in the rest of
	this man page.''

 3.  If I have read the man pages correctly, HOME and PATH can be set
     in /etc/default/cron only, SHELL can be set in crontab files only,
     and TZ can only be set in /etc/default/init and in crontab files
     only.  Why can't HOME and PATH be set in crontab files?  If one of
     these variables is set in more than one location, it isn't really
     clear which one wins.  I assume that the intent is that for any
     variable specified to be settable in a more than one of the
     following:
	A. crontab file
	B. /etc/default/cron
	C. /etc/default/init
     then a setting in the first one in the list specified to allow
     settings for that variable determines the value.

 4.  The section in the crontab.1 man page titled "Setting
     cron Jobs Across Timezones" is not clear as to whether setting TZ
     in a crontab file overrides setting TZ in /etc/default/init nor
     whether

 5.  The crontab.1 man page says that the shell is invoked with an arg0
     of sh no matter what shell is specified by SHELL.  Is this really
     what is intended?

 6.  The current crontab.1 man page (and the crontab.1 man page after
     your updates) say that PATH in the environment of crontab is only
     used to find the location of the default vi.  Shouldn't this
     instead say that PATH in crontab's environment (not PATH from
     /etc/default/cron) is used to find the editor used to edit the
     crontab file no matter whether the editor name is the default,
     the editor specified by $VISUAL (for /usr/bin/crontab), or the
     editor specified by $EDITOR (for /usr/bin/crontab and
     /usr/xpg?/bin/crontab).


>
>Also do you believe that a configuration knob for this functionality is 
>necessary to standards reasons ?  I believe the project team and other 
>arc members (myself included) would rather not have configuration of 
>this at all and just have it always enabled.

As long as both the cron and crontab man pages warn that none of these
extensions should be used in any shared crontab files (a crontab file
in which more than one user or application makes entries), I see no
need for a configuration knob.  I think it would also be appropriate to
add a release note warning people about this issue and referring them
to the updated man pages.

 - Don

>
>-- 
>Darren J Moffat



More information about the opensolaris-arc mailing list