Bug 66963

Summary: [patch] handbook - a note on /etc/crontab
Product: Documentation Reporter: platanthera <platanthera>
Component: Books & ArticlesAssignee: dannyboy <dannyboy>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description platanthera 2004-05-20 23:00:37 UTC
      6.6.1 Installing a Crontab
To install your freshly written crontab, just use the crontab utility. The most common usage is:
# crontab crontab

Apparently quite a number of users try to apply this approach to /etc/crontab. Therefore it should be explicitly warned not to do this. (I know that it's already in the FAQ)

Fix: patch for doc/en_US.ISO8859-1/books/handbook/config/chapter.sgml



@@ -549,6 +549,17 @@
        with an empty file.  When the file is saved, it will be
        automatically installed by the <command>crontab</command> command.
       </para>
+
+
+      <note>
+        <para>Changes in <filename>/etc/crontab</filename> are picked up by
+       <citerefentry><refentrytitle>cron</refentrytitle><manvolnum>8</manvolnum>
+       </citerefentry> automatically. Do NOT try to use <citerefentry>
+       <refentrytitle>crontab</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+       to update the system crontab, in the
+       <ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/admin.html#ROOT-NOT-FOUND-CRON-ERRORS">
+       FAQ</ulink> there's an explanation why this doesn't work.</para>
+      </note>

     </sect2>
   </sect1>--seN0Uos6KLdNJ17eMTXPd1U579itl28l2jMILXkB8Nfx365j
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

--- chapter.sgml.old    Tue May  4 22:51:58 2004
+++ chapter.sgml        Thu May 20 23:16:56 2004
How-To-Repeat:       read freebsd-users@ for some days
Comment 1 Bill Moran 2004-05-21 17:55:25 UTC
Here is an updated patch that adds some additional explanation/notes:

Rendered version availabe here: http://www.potentialtech.com/wmoran/configtuning-cron.html

-- 
Bill Moran
Potential Technologies
http://www.potentialtech.com

--- chapter-old.sgml	Tue May  4 16:51:58 2004
+++ chapter.sgml	Fri May 21 11:33:11 2004
@@ -441,8 +441,30 @@
        <filename>crontab</filename> files store information about specific
        functions which <command>cron</command> is supposed to perform at
        certain times.</para>
+
+    <para>The <command>cron</command> utility uses two different
+      types of configuration files, the system crontab and user crontabs. The
+      only difference between these two formats is the sixth field.  In the
+      system crontab, the sixth field is the name of a user for the command
+      to run as. This gives the system crontab the ability to run commands
+      as any user. In a user crontab, the sixth field is the command to run,
+      and all commands run as the user who created the crontab; this is an
+      important security feature.</para>
+
+    <note>
+      <para>The reason user crontabs exist is to allow individual users to
+        schedule tasks without the need for root priviledges. Commands in
+        a user's crontab run with the permissions of the user who owns the
+        crontab.</para>
+      <para>The root user can have a user crontab just like
+        any other user. This is a different crontab from
+        <filename>/etc/crontab</filename> (the system crontab). Because of the
+        system crontab, there's generally no reason to create a user crontab
+        for root.</para>
+    </note>

-    <para>Let us take a look at the <filename>/etc/crontab</filename> file:</para>
+    <para>Let us take a look at the <filename>/etc/crontab</filename> file
+      (the system crontab):</para>


      <programlisting># /etc/crontab - root's crontab for &os;
@@ -526,21 +548,35 @@
        <filename>/etc/crontab</filename> file.  This field should be
        omitted for individual user <filename>crontab</filename>
        files.</para>
-
+

      <sect2 id="configtuning-installcrontab">
        <title>Installing a Crontab</title>
-
-      <para>To install your freshly written
-	<filename>crontab</filename>, just use the
+
+      <important>
+      <para>You must not use the procedure described here to
+        edit/install the system crontab. Simply use your favorite
+        editor, the <command>cron</command> utility will notice that the file
+        has changed and immediately begin using the updated version.
+        See
+        <ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/admin.html#ROOT-NOT-FOUND-CRON-ERRORS">
+        this FAQ entry </ulink> for more information.</para>
+      </important>
+
+      <para>To install a freshly written user
+	<filename>crontab</filename>, first use your favorite editor to create
+    a file in the proper format, then use the
  	<command>crontab</command> utility.  The most common usage
  	is:</para>

-      <screen>&prompt.root; <userinput>crontab crontab</userinput></screen>
+      <screen>&prompt.user; <userinput>crontab crontab-file</userinput></screen>
+
+      <para>In this example, <filename>crontab-file</filename> is the filename
+    of a <filename>crontab</filename> that was previously created.</para>

        <para>There is also an option to list installed
  	<filename>crontab</filename> files, just pass the
-	<option>-l</option> to <command>crontab</command> and look
+	<option>-l</option> option to <command>crontab</command> and look
  	over the output.</para>

        <para>For users who wish to begin their own crontab file from scratch,
@@ -548,6 +584,11 @@
  	option is available.  This will invoke the selected editor
  	with an empty file.  When the file is saved, it will be
  	automatically installed by the <command>crontab</command> command.
+      </para>
+
+      <para>If you later want to remove your user <filename>crontab</filename>
+    completely, use <command>crontab</command> with the <option>-r</option>
+    option.
        </para>

      </sect2>
Comment 2 platanthera 2004-05-21 18:50:59 UTC
just a note on the wording.. I'd suggest to replace

Note: The reason user crontabs exist is to allow individual users to 
schedule tasks without the need for root priviledges. Commands in a 
user's crontab run with the permissions of the user who owns the 
crontab.
The root user can have a user crontab just like any other user. This is 
a different crontab from /etc/crontab (the system crontab). Because of 
the system crontab, there's generally no reason to create a user 
crontab for root.

by 

Note: User crontabs allow individual users to schedule tasks without the 
need for root priviledges. Commands in a user's crontab run with the 
permissions of the user who owns the crontab.
The root user can have a user crontab just like any other user. This one 
is different from /etc/crontab (the system crontab). Because of the 
system crontab, there's usually no need to create a user crontab for 
root.
Comment 3 Bill Moran 2004-05-21 19:47:14 UTC
I like that wording better as well.  Attached is a new diff, and I've updated
the rendered version (at the above URL).

--- chapter-old.sgml	Tue May  4 16:51:58 2004
+++ chapter.sgml	Fri May 21 14:27:03 2004
@@ -441,8 +441,29 @@
        <filename>crontab</filename> files store information about specific
        functions which <command>cron</command> is supposed to perform at
        certain times.</para>
+
+    <para>The <command>cron</command> utility uses two different
+      types of configuration files, the system crontab and user crontabs. The
+      only difference between these two formats is the sixth field.  In the
+      system crontab, the sixth field is the name of a user for the command
+      to run as. This gives the system crontab the ability to run commands
+      as any user. In a user crontab, the sixth field is the command to run,
+      and all commands run as the user who created the crontab; this is an
+      important security feature.</para>
+
+    <note>
+      <para>User crontabs allow individual users to schedule tasks without the
+        need for root priviledges. Commands in a user's crontab run with the
+        permissions of the user who owns the crontab.</para>
+      <para>The root user can have a user crontab just like
+        any other user. This one is different from
+        <filename>/etc/crontab</filename> (the system crontab). Because of the
+        system crontab, there's usually no need to create a user crontab
+        for root.</para>
+    </note>

-    <para>Let us take a look at the <filename>/etc/crontab</filename> file:</para>
+    <para>Let us take a look at the <filename>/etc/crontab</filename> file
+      (the system crontab):</para>


      <programlisting># /etc/crontab - root's crontab for &os;
@@ -526,21 +547,35 @@
        <filename>/etc/crontab</filename> file.  This field should be
        omitted for individual user <filename>crontab</filename>
        files.</para>
-
+

      <sect2 id="configtuning-installcrontab">
        <title>Installing a Crontab</title>
-
-      <para>To install your freshly written
-	<filename>crontab</filename>, just use the
+
+      <important>
+      <para>You must not use the procedure described here to
+        edit/install the system crontab. Simply use your favorite
+        editor, the <command>cron</command> utility will notice that the file
+        has changed and immediately begin using the updated version.
+        See
+        <ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/admin.html#ROOT-NOT-FOUND-CRON-ERRORS">
+        this FAQ entry </ulink> for more information.</para>
+      </important>
+
+      <para>To install a freshly written user
+	<filename>crontab</filename>, first use your favorite editor to create
+    a file in the proper format, then use the
  	<command>crontab</command> utility.  The most common usage
  	is:</para>

-      <screen>&prompt.root; <userinput>crontab crontab</userinput></screen>
+      <screen>&prompt.user; <userinput>crontab crontab-file</userinput></screen>
+
+      <para>In this example, <filename>crontab-file</filename> is the filename
+    of a <filename>crontab</filename> that was previously created.</para>

        <para>There is also an option to list installed
  	<filename>crontab</filename> files, just pass the
-	<option>-l</option> to <command>crontab</command> and look
+	<option>-l</option> option to <command>crontab</command> and look
  	over the output.</para>

        <para>For users who wish to begin their own crontab file from scratch,
@@ -548,6 +583,11 @@
  	option is available.  This will invoke the selected editor
  	with an empty file.  When the file is saved, it will be
  	automatically installed by the <command>crontab</command> command.
+      </para>
+
+      <para>If you later want to remove your user <filename>crontab</filename>
+    completely, use <command>crontab</command> with the <option>-r</option>
+    option.
        </para>

      </sect2>
Comment 4 dannyboy freebsd_committer freebsd_triage 2004-05-22 06:38:58 UTC
Responsible Changed
From-To: freebsd-doc->dannyboy

I'll get this.
Comment 5 dannyboy freebsd_committer freebsd_triage 2004-05-22 15:54:34 UTC
State Changed
From-To: open->closed

Committed, thanks.