Hello community,
here is the log from the commit of package cronie for openSUSE:12.1:Update:Test checked in at 2011-12-05 15:30:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1:Update:Test/cronie (Old)
and /work/SRC/openSUSE:12.1:Update:Test/.cronie.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cronie", Maintainer is ""
Changes:
--------
New Changes file:
--- /dev/null 2010-08-26 16:28:41.000000000 +0200
+++ /work/SRC/openSUSE:12.1:Update:Test/.cronie.new/cronie.changes 2011-12-05 15:30:21.000000000 +0100
@@ -0,0 +1,1003 @@
+-------------------------------------------------------------------
+Wed Nov 30 14:54:08 UTC 2011 - aj@suse.de
+
+- Add dependency on ypbind and nscd (bnc#732356)
+- Do not install generic INSTALL file.
+- Use set_permissions for newer distros.
+
+-------------------------------------------------------------------
+Wed Nov 30 09:47:40 UTC 2011 - coolo@suse.com
+
+- add automake as buildrequire to avoid implicit dependency
+
+-------------------------------------------------------------------
+Tue Nov 29 17:07:07 UTC 2011 - crrodriguez@opensuse.org
+
+- Cron started before network is up [bnc#733275]
+
+-------------------------------------------------------------------
+Fri Oct 7 12:11:17 UTC 2011 - fcrozat@suse.com
+
+- Ensure service_add_post is called in %post and not verify.
+
+-------------------------------------------------------------------
+Thu Sep 29 09:17:49 UTC 2011 - fcrozat@suse.com
+
+- Use systemd macros to register cron.service.
+
+-------------------------------------------------------------------
+Sun Sep 18 00:00:19 UTC 2011 - jengelh@medozas.de
+
+- Remove redundant tags/sections from specfile
+
+-------------------------------------------------------------------
+Mon Jul 11 10:28:40 UTC 2011 - vcizek@novell.com
+
+- changed run-parts to run-crons in anacron (bnc#689494)
+
+-------------------------------------------------------------------
+Mon Jun 6 08:51:11 UTC 2011 - vcizek@novell.com
+
+- mention possibility of disabling logging to syslog in the crontab
+ manual
+- to keep compatibility with 11.3, execute the command despite
+ an unprivileged user tries to disable logging (bnc#698549)
+
+-------------------------------------------------------------------
+Wed May 11 08:27:14 UTC 2011 - vcizek@novell.com
+
+- corrected job output via syslog (bnc#692871)
+
+-------------------------------------------------------------------
+Wed Apr 27 16:56:21 UTC 2011 - vcizek@novell.com
+
+- update to 1.4.7
+ many bugs fixed (including bnc#690166)
+
+-------------------------------------------------------------------
+Thu Feb 24 12:33:31 UTC 2011 - vcizek@novell.com
+
+- bnc#662433 again:
+ added quiet option to pam config, in order to avoid logging,
+ when /etc/cron.allow is missing
+
+-------------------------------------------------------------------
+Thu Jan 6 15:25:44 UTC 2011 - vcizek@novell.com
+
+- fix for bnc#662433 :
+ Accounts with disabled user login, but listed in /etc/cron.allow
+ were unable to run cron jobs
+
+-------------------------------------------------------------------
+Fri Dec 10 12:46:12 UTC 2010 - aj@suse.de
+
+- cron.service needs to be after mta.
+
+-------------------------------------------------------------------
+Tue Dec 7 21:16:31 UTC 2010 - coolo@novell.com
+
+- prereq init script syslog
+
+-------------------------------------------------------------------
+Tue Nov 9 15:38:33 UTC 2010 - cristian.rodriguez@opensuse.org
+
+- use full RELRO here.
+
+-------------------------------------------------------------------
+Mon Nov 8 13:15:59 UTC 2010 - aj@suse.de
+
+- Fix rpm group of cronie-anacron
+
+-------------------------------------------------------------------
+Mon Nov 8 12:52:17 UTC 2010 - aj@suse.de
+
+- Fix package list.
+
+-------------------------------------------------------------------
+Sun Oct 31 12:37:02 UTC 2010 - jengelh@medozas.de
+
+- Use %_smp_mflags
+
+-------------------------------------------------------------------
+Wed Oct 27 09:04:54 UTC 2010 - aj@suse.de
+
+- Add cron.service for systemd.
+
+-------------------------------------------------------------------
+Wed Oct 27 08:31:19 UTC 2010 - mseben@gmail.com
+
+- Update to cronie 1.4.6
+ * man/anacron.8, man/anacrontab.5, man/cron.8, man/crontab.1,
+ man/crontab.5: Rewrite of man pages & correction
+ * man/bitstring.3: Remove useless man page
+ * Check clustering before un/watch function
+ * Remove cluster support from inotify_database
+ * The crontab command uses "-c" and "-n" instead of "-h"
+
+-------------------------------------------------------------------
+Mon Oct 25 11:08:38 UTC 2010 - coolo@novell.com
+
+- use cronie_version not cron's version for anacron
+
+-------------------------------------------------------------------
+Thu Oct 21 19:32:39 UTC 2010 - cristian.rodriguez@opensuse.org
+
+- Update to cronie 1.4.5_git201010210619
+ * Fix broken ifdef HAS_FCHOWN
+ * Cronie supports "clustering" now.
+
+-------------------------------------------------------------------
+Wed Oct 13 17:42:15 UTC 2010 - mseben@gmail.com
+
+- added scriptlets and subpackage cron for propper update
+
+-------------------------------------------------------------------
+Thu Aug 26 01:34:34 UTC 2010 - cristian.rodriguez@opensuse.org
+
+- Update to cronie 1.4.5
+- drop upstreamed patches in particular minuslog and pam_conv.
+- cronie can work without sendmail now, if absent syslog is used.
+
+-------------------------------------------------------------------
+Wed Apr 7 18:50:23 UTC 2010 - mseben@novell.com
+
+- added crond_pid.diff to finaly fix cron.pid issue which breaks
+ init script
+
+-------------------------------------------------------------------
+Thu Mar 25 14:28:30 UTC 2010 - mseben@novell.com
+
+- updated to version 1.4.4
+ * src/crontab.c: CVE-2010-0424 -- crontab -e crontab file timestamp
+ race condition
+ * configure.ac: Dynamic shared libraries -laudit There is need to
+ add -laudit into gcc options because now it's no found automatically.
+ * man/anacrontab.5: Make man page more readable based on #564206.
+ * crond.sysconfig, cronie.init: CRON_VALIDATE_MAILRCPTS was removed,
+ because it was not used anyway.
+ * src/do_command.c, src/funcs.h, src/security.c: With NFS homes
+ can't be job executed, because root can't access this directory.
+ * man/cron.8, src/do_command.c: Disable mailing output.
+ * man/cron.8, src/cron.c, src/do_command.c, src/globals.h: Output
+ could be redirectered to syslog.
+ * src/security.c: Cron doesn't use environment values from
+ /etc/security/pam_env.conf. This was fixed by moving pam_setcred
+ into first part of authentication of pam.
+ * cronie.init: Initscript: if unprivileged user stop deamon, it
+ should return 4.
+ * cronie.init: Initscript: if unprivileged user restart deamon, it
+ should return 4.
+ * src/security.c: This function will be probably removed from
+ libselinux, so it is added into source code here.
+ * pam/crond: One line was missing in pam authentication. rhbz#533189
+ * Makefile.am, configure.ac: Autotools - Makefile includes
+ dailyjobs, configure has new version.
+
+-------------------------------------------------------------------
+Fri Feb 19 13:58:34 UTC 2010 - mseben@novell.com
+
+- added race-mtime_new.patch : to fix crontab -e crontab file
+ timestamp race condition (bnc#580800) (CVE-2010-0424)
+
+-------------------------------------------------------------------
+Wed Feb 3 22:03:53 UTC 2010 - mseben@novell.com
+
+- added nheader_lines.diff : ignore top three lines of comments in
+ crontab file when user use crontab -e
+- added $RPM_OPT_FLAGS to build stage
+
+-------------------------------------------------------------------
+Sat Dec 19 18:13:04 CET 2009 - jengelh@medozas.de
+
+- enable parallel build
+
+-------------------------------------------------------------------
+Thu Dec 17 07:28:54 UTC 2009 - mseben@novell.com
+
+- added subpackage cronie-anacron
++++ 806 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:12.1:Update:Test/.cronie.new/cronie.changes
New:
----
_link
cron.init
cron.service
cron.xml
cron_to_cronie.README
cronie-1.4.7-disable_logging.patch
cronie-1.4.7-syslog_output.patch
cronie-1.4.7.tar.gz
cronie-anacron-1.4.7-run-crons.patch
cronie-crond_pid.diff
cronie-nheader_lines.diff
cronie-pam_config.diff
cronie-rpmlintrc
cronie.changes
cronie.spec
deny.sample
run-crons
sample.root
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cronie.spec ++++++
#
# spec file for package cronie
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# 3 : we don't need to do something with /etc/sysconfig/cron for now
%define cron_configs \{/etc/init.d/cron,/etc/pam.d/crond,/etc/crontab,/etc/cron.deny,/etc/omc/srvinfo.d/cron.xml\}
Name: cronie
BuildRequires: audit-devel
BuildRequires: automake
BuildRequires: libselinux-devel
BuildRequires: pam-devel
BuildRequires: systemd
Url: https://fedorahosted.org/cronie/
License: BSD-3-Clause and GPL-2.0 and MIT
Group: System/Daemons
Recommends: smtp_daemon
Recommends: postfix
PreReq: permissions %fillup_prereq %insserv_prereq cron sysvinit(syslog)
%{?systemd_requires}
Version: 1.4.7
Release: 0
%{expand: %%define cronie_version %version}
Summary: Cron Daemon
Source0: %name-%version.tar.gz
Source1: cron.init
Source2: run-crons
Source3: sample.root
Source4: deny.sample
Source5: cron.xml
Source6: cronie-rpmlintrc
Source7: cron_to_cronie.README
Source8: cron.service
# PATCH-FEATURE-OPENSUSE cronie-pam_config.diff added pam config file from old cron
Patch3: %name-pam_config.diff
# openSUSE set NHEADER_LINES to 3 - old openSUSE cron put three lines of comments
# in top of crontab file, so we want to hide this junk comments if user edit
# crontab file with crontab -e command, patch grabbed from old openSUSE cron
Patch4: %name-nheader_lines.diff
# we use cron.pid instead of crond.pid
Patch5: %name-crond_pid.diff
# PATCH-FIX-UPSTREAM cronie-1.4.7-syslog_output.patch bnc#692871
Patch6: cronie-1.4.7-syslog_output.patch
# PATCH-FIX-UPSTREAM mention logging disabling for a command in man
Patch7: cronie-1.4.7-disable_logging.patch
# PATCH-FIX-UPSTREAM use run-crons instead of run-parts for anacron (bnc#689494)
Patch8: cronie-anacron-1.4.7-run-crons.patch
Conflicts: cron <= 4.1
# When finish update protection of sles11 we could uncomment line bellow and drop all
# ugly hacks with subpackage cron needed for proper update proces
# Obsoletes: cron <=4.x
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
cron automatically starts programs at specific times. Add new entries
with "crontab -e". (See "man 5 crontab" and "man 1 crontab" for
documentation.)
Under /etc, find the directories cron.hourly, cron.daily, cron.weekly,
and cron.monthly. Scripts and programs that are located there are
started automatically.
%package -n cron
Version: 4.2
Release: 0
Summary: Auxiliary package
Requires: %{name} = %{cronie_version}-%{release}
%description -n cron
Auxiliary package, needed for proper update from vixie-cron 4.1 to cronie 1.4.4
%package anacron
Summary: Utility for running regular jobs
Group: System/Base
Requires: %{name} = %{cronie_version}
%description anacron
Anacron becames part of cronie. Anacron is used only for running regular jobs.
The default settings execute regular jobs by anacron, however this could be
overloaded in settings.
%prep
%setup -q
%patch3 -p1
%patch4
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
cp %{S:7} ./cron_to_cronie.README
%build
autoreconf -fiv
# fill macro CRON_VERSION it is used in top three lines of crontab file,should be reworked
export CFLAGS="$RPM_OPT_FLAGS -DCRON_VERSION=\\\"%{version}\\\""
export LDFLAGS="-Wl,-z,relro,-z,now,-z,defs"
%configure --with-audit --enable-anacron --with-pam --with-selinux --with-inotify --enable-pie SPOOL_DIR="/var/spool/cron/tabs"
%{__make} %{?_smp_mflags}
%install
%makeinstall
%{__mkdir_p} -v %{buildroot}%{_localstatedir}/spool/cron/{tabs,lastrun}
%{__mkdir_p} -v %{buildroot}%{_sysconfdir}/cron.{d,hourly,daily,weekly,monthly}
%{__install} -v -m 600 %{SOURCE3} %{buildroot}/etc/crontab
%{__install} -v -m 600 %{SOURCE4} %{buildroot}/etc/cron.deny
%{__install} -v -d %{buildroot}/usr/lib/cron
%{__install} -v %{SOURCE2} %{buildroot}/usr/lib/cron
%{__install} -v -d %{buildroot}%{_sysconfdir}/init.d/
%{__install} -v -m744 %{SOURCE1} %{buildroot}%{_sysconfdir}/init.d/cron
%{__ln_s} -f ../../etc/init.d/cron %{buildroot}/usr/sbin/rccron
%{__install} -v -d %{buildroot}/%{_unitdir}
%{__install} -v -m 644 %{SOURCE8} %{buildroot}/%{_unitdir}
%{__install} -m 644 contrib/anacrontab $RPM_BUILD_ROOT%{_sysconfdir}/anacrontab
%{__install} -c -m755 contrib/0anacron $RPM_BUILD_ROOT%{_sysconfdir}/cron.hourly/0anacron
%{__mkdir_p} $RPM_BUILD_ROOT/var/spool/anacron
%{__mv} %{buildroot}%{_sbindir}/crond %{buildroot}%{_sbindir}/cron
touch $RPM_BUILD_ROOT/var/spool/anacron/cron.daily
touch $RPM_BUILD_ROOT/var/spool/anacron/cron.weekly
touch $RPM_BUILD_ROOT/var/spool/anacron/cron.monthly
# service xml
%{__install} -v -d %{buildroot}%{_sysconfdir}/omc/srvinfo.d/
%{__install} -v -m644 %{S:5} %{buildroot}%{_sysconfdir}/omc/srvinfo.d/
%pre -n cron
# check if we are doing "ugly" update from old 4.1 vixie-cron
check_cron_mail_feature=`/usr/sbin/cron --help 2>&1 | /usr/bin/grep mail`
# vixie-cron 4.1 doesn't contain mail fature
if [ -e /usr/sbin/cron -a "${check_cron_mail_feature}" == "" ]; then
# save configs for cronie post-install phase
touch /var/run/update_from_old_cron
echo $1
for conf in %{cron_configs}
do
%__mv "$conf" "$conf.bk" ||:
done
fi
%pre
if [ -e /var/run/update_from_old_cron ]; then
# restore configs
for conf in %{cron_configs}
do
%__mv "$conf.bk" "$conf" ||:
done
fi
%service_add_pre cron.service
%post
# when we are doing rename then we pretend update with set 2
if [ -e /var/run/update_from_old_cron ]; then
set 2
%restart_on_update cron
# in %%postun restart_on_update call try-restart but we don't have init script in this phase when
# we are doing "ugly" update, but don't panic, it produces only warning to stderr
echo "Please ignore message about missing init script(from postun) - when occurs, we will install init script later with cronie package"
%__mv /etc/init.d/cron /etc/init.d/cron.bk ||:
%__ln_s /bin/true /etc/init.d/cron
fi
%{fillup_and_insserv -y cron}
%if 0%{?suse_version} >= 1140
%set_permissions /etc/crontab /usr/bin/crontab
%else
%run_permissions
%endif
%service_add_post cron.service
%verifyscript
%verify_permissions -e /etc/crontab -e /usr/bin/crontab
%preun
%stop_on_removal cron
%service_del_preun cron.service
%postun
%restart_on_update cron
%insserv_cleanup
%service_del_postun cron.service
%posttrans
if [ -e /var/run/update_from_old_cron ]; then
%{__rm} /var/run/update_from_old_cron ||:
%__mv /etc/init.d/cron.bk /etc/init.d/cron ||:
fi
%post anacron
[ -e /var/spool/anacron/cron.daily ] || touch /var/spool/anacron/cron.daily
[ -e /var/spool/anacron/cron.weekly ] || touch /var/spool/anacron/cron.weekly
[ -e /var/spool/anacron/cron.monthly ] || touch /var/spool/anacron/cron.monthly
%files
%defattr(-,root,root)
%doc AUTHORS COPYING README ChangeLog
%dir %attr(700,root,root) /var/spool/cron
%dir %attr(700,root,root) /var/spool/cron/tabs
%dir /var/spool/cron/lastrun
%config /etc/init.d/cron
%config /etc/pam.d/crond
%verify(not mode) %config(noreplace) /etc/crontab
%config(noreplace) /etc/cron.deny
%{_mandir}/man1/crontab.1.gz
%{_mandir}/man5/crontab.5.gz
%{_mandir}/man8/cron.8.gz
%{_mandir}/man8/crond.8.gz
%verify(not mode) %attr (4750,root,trusted) /usr/bin/crontab
%attr (755,root,root) %{_sbindir}/cron
%{_sbindir}/rccron
/usr/lib/cron
%config %{_sysconfdir}/omc/srvinfo.d/cron.xml
%dir %{_sysconfdir}/omc/srvinfo.d/
%dir %{_sysconfdir}/omc/
%{_unitdir}/cron.service
%files anacron
%defattr(-,root,root,-)
%{_sbindir}/anacron
%attr(0755,root,root) %{_sysconfdir}/cron.hourly/0anacron
%config(noreplace) %{_sysconfdir}/anacrontab
%dir /var/spool/anacron
%ghost %verify(not md5 size mtime) /var/spool/anacron/cron.daily
%ghost %verify(not md5 size mtime) /var/spool/anacron/cron.weekly
%ghost %verify(not md5 size mtime) /var/spool/anacron/cron.monthly
%{_mandir}/man5/anacrontab.*
%{_mandir}/man8/anacron.*
%files -n cron
%defattr(-,root,root,-)
%doc cron_to_cronie.README
%changelog
++++++ _link ++++++
<link project="openSUSE:12.1" package="cronie" baserev="b34b6e65adfb5e9d0d0f5a9215009474">
<patches>
<branch/>
</patches>
</link>
++++++ cron.init ++++++
#! /bin/sh
# Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany.
#
# Author: Werner Fink , 1996-2001
#
# /etc/init.d/cron
#
# and symbolic its link
#
# /usr/sbin/rccron
#
# System startup script for the cron daemon
#
### BEGIN INIT INFO
# Provides: cron
# Required-Start: $remote_fs $syslog $time
# Should-Start: $network smtp
# Required-Stop: $remote_fs $syslog
# Should-Stop: $network smtp
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Short-Description: Cron job service
# Description: Cron job service
### END INIT INFO
CRON_BIN=/usr/sbin/cron
test -x $CRON_BIN || exit 5
PIDFILE=/var/run/cron.pid
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num><num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
allow_deny_move_info() {
echo "WARNING: /var/spool/cron/allow and /var/spool/cron/deny have moved"
echo "to /etc/cron.allow and /etc/cron.deny."
echo "Please merge or move these files to get cron access rules restored."
}
case "$1" in
start)
for al_de in {allow,deny}{,.rpmsave,.rpmorig} ; do
if [ -f /var/spool/cron/$al_de ] ; then
allow_deny_move_info
break
fi
done
echo -n "Starting CRON daemon"
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc return 0, even if service is
# already running to match LSB spec.
startproc -p $PIDFILE $CRON_BIN
#startproc -f $CRON_BIN
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down CRON daemon"
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
killproc -TERM -p $PIDFILE $CRON_BIN
# Remember status and be verbose
rc_status -v
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reload service Cron"
## if it supports it:
## cron monitors /etc/crontab anyway
checkproc $CRON_BIN
rc_status -v
## Otherwise:
#$0 stop && $0 start
#rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
## Otherwise if it does not support reload:
rc_status -v
;;
status)
echo -n "Checking for Cron: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
checkproc $CRON_BIN
rc_status -v
;;
probe)
## Optional: Probe for the necessity of a reload,
## give out the argument which is required for a reload.
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
exit 1
;;
esac
rc_exit
++++++ cron.service ++++++
[Unit]
Description=Command Scheduler
After=syslog.target mail-transfer-agent.target ypbind.service nscd.service network.target
[Service]
ExecStart=/usr/sbin/cron -n
[Install]
WantedBy=multi-user.target
++++++ cron_to_cronie.README ++++++
package cron 4.2 is only auxiliary package needed for proper renaming package cron to cronie
usefull links :
http://en.opensuse.org/Cron_replace
http://en.opensuse.org/Cron_rename
++++++ cronie-1.4.7-disable_logging.patch ++++++
Index: cronie-1.4.7/man/crontab.5
===================================================================
--- cronie-1.4.7.orig/man/crontab.5
+++ cronie-1.4.7/man/crontab.5
@@ -203,6 +203,9 @@ fields. Use the first three letters of
day or month (case does not matter). Ranges or
lists of names are not allowed.
.PP
+If the uid of the owner is 0 (root), he can put a "-" as first character of a crontab entry.
+This will prevent cron from writing a syslog message about this command getting executed.
+.PP
The "sixth" field (the rest of the line) specifies the command to be
run.
The entire command portion of the line, up to a newline or a "%"
Index: cronie-1.4.7/src/entry.c
===================================================================
--- cronie-1.4.7.orig/src/entry.c
+++ cronie-1.4.7/src/entry.c
@@ -105,13 +105,18 @@ entry *load_entry(FILE * file, void (*er
if (ch == '-') {
/* if we are editing system crontab or user uid is 0 (root)
* we are allowed to disable logging
+ * Otherwise log the attempt, but still execute the command.
*/
if (pw == NULL || pw->pw_uid == 0)
e->flags |= DONT_LOG;
else {
- log_it("CRON", getpid(), "ERROR", "Only privileged user can disable logging", 0);
- ecode = e_option;
- goto eof;
+ log_it("CRON", getpid(), "ERROR",
+ "Only privileged user can disable logging. "
+ "In future versions, user lines starting with a dash "
+ "will be treated as invalid and won't get executed.", 0);
+ /* throw an error when editing a crontab */
+ if (error_func)
+ (*error_func) (ecodes[(int) e_minute]);
}
ch = get_char(file);
if (ch == EOF)
@@ -371,9 +376,9 @@ entry *load_entry(FILE * file, void (*er
Debug(DPARS, ("load_entry()...returning successfully\n"))
- /* success, fini, return pointer to the entry we just created...
- */
- return (e);
+ /* success, fini, return pointer to the entry we just created...
+ */
+ return (e);
eof:
if (e->envp)
++++++ cronie-1.4.7-syslog_output.patch ++++++
Index: cronie-1.4.7/src/do_command.c
===================================================================
--- cronie-1.4.7.orig/src/do_command.c
+++ cronie-1.4.7/src/do_command.c
@@ -480,7 +480,6 @@ static int child_process(entry * e, user
bytes++;
if (mail)
putc(ch, mail);
- }
#if defined(SYSLOG)
if (SyslogOutput) {
logbuf[bufidx++] = ch;
@@ -494,6 +493,7 @@ static int child_process(entry * e, user
}
}
#endif
+ }
/* only close pipe if we opened it -- i.e., we're
* mailing...
++++++ cronie-anacron-1.4.7-run-crons.patch ++++++
Index: cronie-1.4.7/contrib/anacrontab
===================================================================
--- cronie-1.4.7.orig/contrib/anacrontab
+++ cronie-1.4.7/contrib/anacrontab
@@ -11,6 +11,6 @@ RANDOM_DELAY=45
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
-1 5 cron.daily nice run-parts /etc/cron.daily
-7 25 cron.weekly nice run-parts /etc/cron.weekly
-@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
+1 5 cron.daily nice /usr/lib/cron/run-crons /etc/cron.daily
+7 25 cron.weekly nice /usr/lib/cron/run-crons /etc/cron.weekly
+@monthly 45 cron.monthly nice /usr/lib/cron/run-crons /etc/cron.monthly
Index: cronie-1.4.7/man/anacrontab.5
===================================================================
--- cronie-1.4.7.orig/man/anacrontab.5
+++ cronie-1.4.7/man/anacrontab.5
@@ -79,9 +79,9 @@ RANDOM_DELAY=30
# Anacron jobs will start between 6am and 8am.
START_HOURS_RANGE=6-8
# delay will be 5 minutes + RANDOM_DELAY for cron.daily
-1 5 cron.daily nice run-parts /etc/cron.daily
-7 0 cron.weekly nice run-parts /etc/cron.weekly
-@monthly 0 cron.monthly nice run-parts /etc/cron.monthly
+1 5 cron.daily nice /usr/lib/cron/run-crons /etc/cron.daily
+7 0 cron.weekly nice /usr/lib/cron/run-crons /etc/cron.weekly
+@monthly 0 cron.monthly nice /usr/lib/cron/run-crons /etc/cron.monthly
.fi
.SH "SEE ALSO"
.BR anacron (8),
++++++ cronie-crond_pid.diff ++++++
Index: cronie-1.4.4/src/pathnames.h
===================================================================
--- cronie-1.4.4.orig/src/pathnames.h
+++ cronie-1.4.4/src/pathnames.h
@@ -41,7 +41,7 @@
#else
# define PIDDIR SYSCONFDIR "/"
#endif
-#define PIDFILE "crond.pid"
+#define PIDFILE "cron.pid"
#define _PATH_CRON_PID PIDDIR PIDFILE
#define REBOOT_LOCK PIDDIR "cron.reboot"
++++++ cronie-nheader_lines.diff ++++++
Index: src/crontab.c
===================================================================
--- src/crontab.c.orig
+++ src/crontab.c
@@ -38,7 +38,7 @@
# include
#endif
-#define NHEADER_LINES 0
+#define NHEADER_LINES 3
enum opt_t {opt_unknown, opt_list, opt_delete, opt_edit, opt_replace, opt_hostset, opt_hostget};
@@ -429,7 +429,7 @@ static char *host_specific_filename(char
static void edit_cmd(void) {
char n[MAX_FNAME], q[MAX_TEMPSTR], *editor;
FILE *f;
- int ch = '\0', t;
+ int ch = '\0', t, x;
struct stat statbuf;
struct utimbuf utimebuf;
WAIT_T waiter;
@@ -481,13 +481,25 @@ static void edit_cmd(void) {
}
Set_LineNum(1)
- /*
- * NHEADER_LINES processing removed for clarity
- * (NHEADER_LINES == 0 in all Red Hat crontabs)
- */
- /* copy the rest of the crontab (if any) to the temp file.
- */
- if (EOF != ch)
+
+ /* ignore the top few comments since we probably put them there.
+ */
+ x = 0;
+ while (EOF != (ch = get_char(f))) {
+ if ('#' != ch) {
+ putc(ch, NewCrontab);
+ break;
+ }
+ while (EOF != (ch = get_char(f)))
+ if (ch == '\n')
+ break;
+ if (++x >= NHEADER_LINES)
+ break;
+ }
+
+ /* copy the rest of the crontab (if any) to the temp file.
+ */
+ if (EOF != ch)
while (EOF != (ch = get_char(f)))
putc(ch, NewCrontab);
@@ -695,6 +707,7 @@ static int replace_cmd(void) {
int error = 0;
entry *e;
uid_t file_owner;
+ time_t now = time(NULL);
char **envp;
char *safename;
@@ -724,10 +737,10 @@ static int replace_cmd(void) {
*
* VERY IMPORTANT: make sure NHEADER_LINES agrees with this code.
*/
- /*fprintf(tmp, "# DO NOT EDIT THIS FILE - edit the master and reinstall.\n");
- *fprintf(tmp, "# (%s installed on %-24.24s)\n", Filename, ctime(&now));
- *fprintf(tmp, "# (Cron version %s)\n", CRON_VERSION);
- */
+ fprintf(tmp, "# DO NOT EDIT THIS FILE - edit the master and reinstall.\n");
+ fprintf(tmp, "# (%s installed on %-24.24s)\n", Filename, ctime(&now));
+ fprintf(tmp, "# (Cronie version %s)\n", CRON_VERSION);
+
#ifdef WITH_SELINUX
if (selinux_context)
fprintf(tmp, "SELINUX_ROLE_TYPE=%s\n", selinux_context);
++++++ cronie-pam_config.diff ++++++
Index: cronie-1.4.4/pam/crond
===================================================================
--- cronie-1.4.4.orig/pam/crond
+++ cronie-1.4.4/pam/crond
@@ -3,8 +3,9 @@
#
#
# No PAM authentication called, auth modules not needed
-account required pam_access.so
-account include password-auth
-session required pam_loginuid.so
-session include password-auth
-auth include password-auth
+auth sufficient pam_rootok.so
+account sufficient pam_listfile.so item=user sense=allow file=/etc/cron.allow onerr=succeed quiet
+auth include common-auth
+account include common-account
+password include common-password
+session required pam_loginuid.so
+session include common-session
++++++ cronie-rpmlintrc ++++++
# This line is mandatory to access the configuration functions
from Config import *
addFilter("cronie.* incoherent-init-script-name")++++++ deny.sample ++++++
guest
++++++ run-crons ++++++
#!/bin/bash
#
# /usr/lib/cron/run-crons
#
# Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany. All rights reserved.
#
# this script looks into /etc/cron.{hourly,daily,weekly,monthly} for
# scripts to be executed. The info about last run is stored in
# /var/spool/cron/lastrun
#
# concept similar to debian and redhat
#
# Changes:
# 1998 - Burchard Steinbild , 1998
# initial version
# before 2001 - va@org.chemie.uni-frankfurt.de
# send an email with name of date-script instead of cron entry
# "Subject: cronjob@www - daily - FAILURE"
# (better one script for each date-sub-script)
# requires changes to /etc/crontab
# append > /dev/null 2>&1 to the line calling run-cons
# 2001-09-11
# updated to Suse 7.2 merged
# 2001-09-12
# changed FAILURE detection, until now all scripts with output
# had "failed", now only scripts with error status != 0
# have failed.
# 2001-09-13 - ro@suse.de
# merged with 7.3: call logger with exit value for scripts
# respect MAILTO as cron does
# use mktemp -d for all tmpfiles
# add variable to disable mail if all jobs returned 0
#
#
# Don't run jobs on laptops, that are AC-offline
#
if test -x /usr/bin/on_ac_power ; then
on_ac_power -q
if [ "$?" = "1" ]; then
exit 0
fi
fi
if [ -f /etc/sysconfig/cron ]; then
. /etc/sysconfig/cron
fi
BASENAME=`/usr/bin/basename $0`
LOGGER="/bin/logger -t $BASENAME[$$]"
export LC_TIME=POSIX
TMPDIR=`mktemp -d /tmp/run-crons.XXXXXX`
trap "rm -rf $TMPDIR" 0 1 2 3 13 15
# We will force to run cron.daily after 14 days, even
# if you set MAX_NOT_RUN in /etc/sysconfig/cron
# value is in minutes
MAX_NOT_RUN_FORCE="20160"
# Priority change for sub scripts.
# range: highest -20 ... 19 lowest prioriy
# default processes start in level 10
CRON_SCRIPT_NICE_VALUE=15
SPOOL=/var/spool/cron/lastrun
# CRON Result EMail is sent to
if test -z "$MAILTO" ; then
SEND_TO="root"
else
SEND_TO="$MAILTO"
fi
mkdir -p $SPOOL
#set verbose
## stage 1, search directories/scripts to run
RUN=""
for CRONDIR in /etc/cron.{hourly,daily,weekly,monthly} ; do
test -d $CRONDIR || continue
BASE=${CRONDIR##*/}
TIME_EXT=${BASE##cron.}
test -e $SPOOL/$BASE && {
case $BASE in
cron.hourly) TIME="-cmin +60 -or -cmin 60" ;;
cron.daily)
# if DAILY_TIME set, run only at a fixed time of day
if [ "$DAILY_TIME" != "" ] ; then
DAILY_TIME_NEW="`echo $DAILY_TIME | sed s,:,, | sed s,^0\*,, `"
test -z "$DAILY_TIME_NEW" && DAILY_TIME_NEW=0
if [ "$DAILY_TIME_NEW" -gt "2359" ] ; then
echo "wrong time format in /etc/sysconfig/cron DAILY_TIME, value is $DAILY_TIME" | logger
fi
NOW_H=`date +%H%M| sed s,^0\*,,`
test -z "$NOW_H" && NOW_H=0
if [ $DAILY_TIME_NEW -gt $(($NOW_H-15)) ] && [ $DAILY_TIME_NEW -le $NOW_H ]; then
TIME=""
else
# take care of MAX_NOT_RUN, default is 7 days
if [ "$MAX_NOT_RUN" != "0" ] ; then
TIME="-cmin +$((1440*$MAX_NOT_RUN)) -or -cmin $((1440*$MAX_NOT_RUN))"
else
TIME="-cmin +$MAX_NOT_RUN_FORCE -or -cmin $MAX_NOT_RUN_FORCE"
fi
fi
# run as usual
else
TIME="-cmin +1440 -or -cmin 1440"
fi ;;
cron.weekly) TIME="-cmin +10080 -or -cmin 10080" ;;
cron.monthly)
DAYOFMONTH=`date '+%d'`
DAYSLASTMONTH=`date -d "-$DAYOFMONTH days" '+%d'`
if [ $DAYOFMONTH -gt $DAYSLASTMONTH ] ; then
LASTMONTHSTR="-$DAYOFMONTH days"
else
LASTMONTHSTR="last month"
fi
NOW=`date +%s`
LASTMONTH=`date -d "$LASTMONTHSTR" +%s`
DIFF=`expr '(' $NOW - $LASTMONTH ')' / 86400`
TIME="-ctime +$DIFF"
;;
esac
# remove all lock files for scripts that are due to run
eval find $SPOOL/$BASE $TIME | \
xargs --no-run-if-empty rm
}
if test ! -e $SPOOL/$BASE ; then
# accept this dir, if it isn't empty
LIST=`find $CRONDIR ! -type d`
if [ ! -z "$LIST" ] ; then
RUN="${RUN} ${TIME_EXT}"
fi
fi
done
## STATUS communication variable between
# function run_scripts ()
# and loop-over-all-scripts
# set in run_scripts to FAILURE if this script failed!
# else it is empty
# because it is never reset to empty after the initialization
# it implements an OR like logic over all scripts
##
STATUS=""
# helper, run all scripts in one cron directory
function run_scripts (){
local CRONDIR=$1
local TIME_EXT=$2
local TEMP_MSG=$TMPDIR/run-crons.${TIME_EXT}.$$
rm -r $TMPDIR/run-crons.${TIME_EXT}.* >/dev/null 2>&1
# keep going when something fails
set +e
for SCRIPT in $CRONDIR/* ; do
test -d $SCRIPT && continue
case "$SCRIPT" in
.svn) continue ;;
*.rpm*) continue ;;
*.swap) continue ;;
*.bak) continue ;;
*.orig) continue ;;
\#*) continue ;;
*~) continue ;;
esac
/sbin/checkproc $SCRIPT && continue
if test -x $SCRIPT ; then
BASESCRIPT=`/usr/bin/basename $SCRIPT`
nice -n ${CRON_SCRIPT_NICE_VALUE} $SCRIPT >$TEMP_MSG 2>&1
local ERRNO=$?
if [ 0 -eq $ERRNO ] ; then
if [ "$SYSLOG_ON_NO_ERROR" = "yes" ]; then
echo "$BASESCRIPT: OK" | $LOGGER -p info
fi
else
echo "$BASESCRIPT returned $ERRNO" | $LOGGER -p warn
echo "SCRIPT: $BASESCRIPT exited with RETURNCODE = $ERRNO."
STATUS="FAILURE"
fi
# write some wrapper text around the original output
if [ -s "$TEMP_MSG" ] ; then
echo "SCRIPT: output (stdout && stderr) follows"
echo ""
cat $TEMP_MSG
echo -e "SCRIPT: $BASESCRIPT\n------- END OF OUTPUT"
echo ""
echo ""
fi
rm -f $TEMP_MSG > /dev/null 2>&1
else
echo "WARNING: $SCRIPT is not executable, script is ignored !"
fi
done
}
# stage 2:
# run all scripts and collect output into one mail
# for each TIME_EXT with a meaningfull subject.
#
if [ ! -z "${RUN}" ] ; then
for EXT in ${RUN} ; do
CRONDIR="/etc/cron."${EXT}
test -d $CRONDIR || continue
BASE=`/usr/bin/basename $CRONDIR`
TIME_EXT=${BASE##cron.}
STATUS=""
if test ! -e $SPOOL/$BASE ; then
CONTROL_MAIL=$TMPDIR/run-crons_mail.$$
JOB_OUTPUT=$TMPDIR/run-crons_output.$$
echo "running ${TIME_EXT} cronjob scripts" >> ${CONTROL_MAIL}
echo "" >> ${CONTROL_MAIL}
touch $SPOOL/$BASE
run_scripts ${CRONDIR} ${TIME_EXT} >> ${JOB_OUTPUT} 2>&1
TITLE="cronjob@$HOSTNAME - ${TIME_EXT}"
if [ -n "${STATUS}" ] ; then
TITLE="${TITLE} - ${STATUS}"
else
TITLE="${TITLE} - OK"
fi
if [ -n "${STATUS}" -o "$SEND_MAIL_ON_NO_ERROR" = "yes" ] ; then
cat ${CONTROL_MAIL} ${JOB_OUTPUT} | mail ${SEND_TO} -s "${TITLE}"
elif [ -s ${JOB_OUTPUT} -a "$SEND_OUTPUT_ON_NO_ERROR" = "yes" ] ; then
cat ${CONTROL_MAIL} ${JOB_OUTPUT} | mail ${SEND_TO} -s "${TITLE}"
fi
rm -f ${CONTROL_MAIL} ${JOB_OUTPUT}
fi
done
fi
#
# now make sure, we have no lastrun files dated to future
#
touch $SPOOL
NOW=`date -u +%s`
for i in `find $SPOOL -type f`
do
FILEDATE=`date -u -r $i +%s`
# allow for up to one hour in the future because of summer/wintertime
if [ $((FILEDATE - NOW)) -gt 3600 ]
then
rm $i
fi
done
++++++ sample.root ++++++
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org