basebuilder_pel7x64builder0
6 years ago
16 changed files with 1220 additions and 0 deletions
@ -0,0 +1,90 @@
@@ -0,0 +1,90 @@
|
||||
diff -up cronie-1.4.11/anacron/runjob.c.mailto cronie-1.4.11/anacron/runjob.c |
||||
--- cronie-1.4.11/anacron/runjob.c.mailto 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/anacron/runjob.c 2017-03-07 14:00:06.968348389 +0100 |
||||
@@ -88,10 +88,18 @@ static char * |
||||
username(void) |
||||
{ |
||||
struct passwd *ps; |
||||
+ static char *user; |
||||
+ |
||||
+ if (user) |
||||
+ return user; |
||||
|
||||
ps = getpwuid(geteuid()); |
||||
- if (ps == NULL) die_e("getpwuid() error"); |
||||
- return ps->pw_name; |
||||
+ if (ps == NULL || ps->pw_name == NULL) die_e("getpwuid() error"); |
||||
+ |
||||
+ user = strdup(ps->pw_name); |
||||
+ if (user == NULL) die_e("memory allocation error"); |
||||
+ |
||||
+ return user; |
||||
} |
||||
|
||||
static void |
||||
@@ -167,6 +175,12 @@ launch_mailer(job_rec *jr) |
||||
pid_t pid; |
||||
struct stat buf; |
||||
|
||||
+ if (jr->mailto == NULL) |
||||
+ { |
||||
+ explain("Empty MAILTO set, not mailing output"); |
||||
+ return; |
||||
+ } |
||||
+ |
||||
/* Check that we have a way of sending mail. */ |
||||
if(stat(SENDMAIL, &buf)) |
||||
{ |
||||
@@ -245,14 +259,12 @@ launch_job(job_rec *jr) |
||||
} |
||||
|
||||
setup_env(jr); |
||||
- |
||||
+ |
||||
/* Get the destination email address if set, or current user otherwise */ |
||||
mailto = getenv("MAILTO"); |
||||
|
||||
- if (mailto) |
||||
- jr->mailto = mailto; |
||||
- else |
||||
- jr->mailto = username (); |
||||
+ if (mailto == NULL) |
||||
+ mailto = username(); |
||||
|
||||
/* create temporary file for stdout and stderr of the job */ |
||||
temp_file(jr); fd = jr->output_fd; |
||||
@@ -262,11 +274,7 @@ launch_job(job_rec *jr) |
||||
xwrite(fd, username()); |
||||
xwrite(fd, ">\n"); |
||||
xwrite(fd, "To: "); |
||||
- if (mailto) { |
||||
- xwrite(fd, mailto); |
||||
- } else { |
||||
- xwrite(fd, username()); |
||||
- } |
||||
+ xwrite(fd, mailto); |
||||
xwrite(fd, "\n"); |
||||
xwrite(fd, "Content-Type: text/plain; charset=\""); |
||||
xwrite(fd, nl_langinfo(CODESET)); |
||||
@@ -277,6 +285,12 @@ launch_job(job_rec *jr) |
||||
xwrite(fd, hostname); |
||||
xwrite(fd, "\n\n"); |
||||
|
||||
+ if (*mailto == '\0') |
||||
+ jr->mailto = NULL; |
||||
+ else |
||||
+ /* ugly but works without strdup() */ |
||||
+ jr->mailto = mailto; |
||||
+ |
||||
jr->mail_header_size = file_size(fd); |
||||
|
||||
pid = xfork(); |
||||
@@ -305,7 +319,7 @@ tend_job(job_rec *jr, int status) |
||||
if (file_size(jr->output_fd) > jr->mail_header_size) mail_output = 1; |
||||
else mail_output = 0; |
||||
|
||||
- m = mail_output ? " (mailing output)" : ""; |
||||
+ m = mail_output ? " (produced output)" : ""; |
||||
if (WIFEXITED(status) && WEXITSTATUS(status) == 0) |
||||
explain("Job `%s' terminated%s", jr->ident, m); |
||||
else if (WIFEXITED(status)) |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up cronie-1.4.11/src/crontab.c.root cronie-1.4.11/src/crontab.c |
||||
--- cronie-1.4.11/src/crontab.c.root 2017-03-07 13:52:23.000000000 +0100 |
||||
+++ cronie-1.4.11/src/crontab.c 2017-03-07 13:53:40.491278915 +0100 |
||||
@@ -170,7 +170,7 @@ int main(int argc, char *argv[]) { |
||||
} |
||||
|
||||
#if defined(WITH_PAM) |
||||
- if (cron_start_pam(pw) != PAM_SUCCESS) { |
||||
+ if (getuid() != 0 && cron_start_pam(pw) != PAM_SUCCESS) { |
||||
fprintf(stderr, |
||||
"You (%s) are not allowed to access to (%s) because of pam configuration.\n", |
||||
User, ProgramName); |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up cronie-1.4.11/src/env.c.empty-var cronie-1.4.11/src/env.c |
||||
--- cronie-1.4.11/src/env.c.empty-var 2017-03-07 15:17:14.604948015 +0100 |
||||
+++ cronie-1.4.11/src/env.c 2017-09-15 15:38:24.275112187 +0200 |
||||
@@ -255,7 +255,7 @@ int load_env(char *envstr, FILE * f) { |
||||
abort(); |
||||
} |
||||
} |
||||
- if (state != FINI && !(state == VALUE && !quotechar)) { |
||||
+ if (state != FINI && state != EQ2 && !(state == VALUE && !quotechar)) { |
||||
Debug(DPARS, ("load_env, not an env var, state = %d\n", state)); |
||||
fseek(f, filepos, 0); |
||||
Set_LineNum(fileline); |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
diff -up cronie-1.4.11/src/misc.c.ddd cronie-1.4.11/src/misc.c |
||||
--- cronie-1.4.11/src/misc.c.ddd 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/misc.c 2013-08-30 13:51:22.227040980 +0200 |
||||
@@ -75,7 +75,9 @@ static int LogFD = ERR; |
||||
static int syslog_open = FALSE; |
||||
#endif |
||||
|
||||
-#if defined(HAVE_FCNTL) && defined(F_SETLK) |
||||
+#if defined(HAVE_FLOCK) |
||||
+# define trylock_file(fd) flock((fd), LOCK_EX|LOCK_NB) |
||||
+#elif defined(HAVE_FCNTL) && defined(F_SETLK) |
||||
static int trylock_file(int fd) { |
||||
struct flock fl; |
||||
|
||||
@@ -89,8 +91,6 @@ static int trylock_file(int fd) { |
||||
} |
||||
#elif defined(HAVE_LOCKF) |
||||
# define trylock_file(fd) lockf((fd), F_TLOCK, 0) |
||||
-#elif defined(HAVE_FLOCK) |
||||
-# define trylock_file(fd) flock((fd), LOCK_EX|LOCK_NB) |
||||
#endif |
||||
|
||||
/* |
||||
@@ -346,6 +346,14 @@ void acquire_daemonlock(int closeflag) { |
||||
(void) fcntl(fd, F_SETFD, 1); |
||||
} |
||||
|
||||
+#if !defined(HAVE_FLOCK) |
||||
+ else { |
||||
+ /* Racy but better than nothing, just hope the parent exits */ |
||||
+ sleep(0); |
||||
+ trylock_file(fd); |
||||
+ } |
||||
+#endif |
||||
+ |
||||
sprintf(buf, "%ld\n", (long) pid); |
||||
(void) lseek(fd, (off_t) 0, SEEK_SET); |
||||
len = strlen(buf); |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
diff -up cronie-1.4.11/man/cron.8.old cronie-1.4.11/man/cron.8 |
||||
--- cronie-1.4.11/man/cron.8.old 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/man/cron.8 2013-10-04 16:34:31.248401373 +0200 |
||||
@@ -22,7 +22,7 @@ |
||||
.\" |
||||
.\" $Id: cron.8,v 1.8 2004/01/23 19:03:32 vixie Exp $ |
||||
.\" |
||||
-.TH CRON "8" "2013-01-02" "cronie" "System Administration" |
||||
+.TH CRON "8" "2013-09-26" "cronie" "System Administration" |
||||
.SH NAME |
||||
crond \- daemon to execute scheduled commands |
||||
.SH SYNOPSIS |
||||
@@ -160,7 +160,11 @@ will disable the sending of mail. |
||||
.TP |
||||
.B "\-n" |
||||
Tells the daemon to run in the foreground. This can be useful when |
||||
-starting it out of init. |
||||
+starting it out of init. With this option is needed to change pam setting. |
||||
+.I /etc/pam.d/crond |
||||
+must not enable |
||||
+.I pam_loginuid.so |
||||
+module. |
||||
.TP |
||||
.B "\-p" |
||||
Allows |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
diff -up cronie-1.4.11/man/crontab.1.man-file cronie-1.4.11/man/crontab.1 |
||||
--- cronie-1.4.11/man/crontab.1.man-file 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/man/crontab.1 2017-03-07 13:56:19.650013901 +0100 |
||||
@@ -44,8 +44,9 @@ crontab \- maintains crontab files for i |
||||
.BR -c |
||||
.SH DESCRIPTION |
||||
.I Crontab |
||||
-is the program used to install, remove or list the tables used to serve |
||||
-the |
||||
+is the program used to install a crontab table |
||||
+.IR file , |
||||
+remove or list the existing tables used to serve the |
||||
.BR cron (8) |
||||
daemon. Each user can have their own crontab, and though these are files |
||||
in |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
diff -up cronie-1.4.11/src/security.c.no-pam cronie-1.4.11/src/security.c |
||||
--- cronie-1.4.11/src/security.c.no-pam 2017-03-07 15:17:14.610948157 +0100 |
||||
+++ cronie-1.4.11/src/security.c 2017-09-15 09:36:26.709112459 +0200 |
||||
@@ -86,6 +86,7 @@ static int cron_open_pam_session(struct |
||||
if (pam_session_opened != 0) \ |
||||
pam_close_session(pamh, PAM_SILENT); \ |
||||
pam_end(pamh, retcode); \ |
||||
+ pamh = NULL; \ |
||||
} \ |
||||
return(retcode); } |
||||
#endif |
||||
@@ -221,7 +222,10 @@ void cron_close_pam(void) { |
||||
pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT); |
||||
pam_close_session(pamh, PAM_SILENT); |
||||
} |
||||
- pam_end(pamh, PAM_SUCCESS); |
||||
+ if (pamh != NULL) { |
||||
+ pam_end(pamh, PAM_SUCCESS); |
||||
+ pamh = NULL; |
||||
+ } |
||||
#endif |
||||
} |
||||
|
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
diff -up cronie-1.4.11/src/security.c.ppp cronie-1.4.11/src/security.c |
||||
--- cronie-1.4.11/src/security.c.ppp 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/security.c 2013-08-30 14:00:15.263788467 +0200 |
||||
@@ -129,15 +129,13 @@ int cron_set_job_security_context(entry |
||||
} |
||||
#endif |
||||
|
||||
- *jobenv = build_env(e->envp); |
||||
- |
||||
#ifdef WITH_SELINUX |
||||
/* we must get the crontab context BEFORE changing user, else |
||||
* we'll not be permitted to read the cron spool directory :-) |
||||
*/ |
||||
security_context_t ucontext = 0; |
||||
|
||||
- if (cron_get_job_range(u, &ucontext, *jobenv) < OK) { |
||||
+ if (cron_get_job_range(u, &ucontext, e->envp) < OK) { |
||||
log_it(e->pwd->pw_name, getpid(), "ERROR", |
||||
"failed to get SELinux context", 0); |
||||
return -1; |
||||
@@ -165,6 +163,8 @@ int cron_set_job_security_context(entry |
||||
return -1; |
||||
} |
||||
|
||||
+ *jobenv = build_env(e->envp); |
||||
+ |
||||
time_t job_run_time = time(0L); |
||||
|
||||
if ((minutely_time > 0) && ((job_run_time / 60) != (minutely_time / 60))) { |
||||
@@ -615,11 +615,18 @@ int crontab_security_access(void) { |
||||
*/ |
||||
static char **build_env(char **cronenv) { |
||||
#ifdef WITH_PAM |
||||
- char **jobenv; |
||||
- char **pamenv = pam_getenvlist(pamh); |
||||
+ char **jobenv = pam_getenvlist(pamh); |
||||
char *cronvar; |
||||
int count = 0; |
||||
- jobenv = env_copy(pamenv); |
||||
+ |
||||
+ if (jobenv == NULL) { |
||||
+ jobenv = env_init(); |
||||
+ if (jobenv == NULL) { |
||||
+ log_it("CRON", getpid(), |
||||
+ "ERROR", "Initialization of cron environment variables failed", 0); |
||||
+ return NULL; |
||||
+ } |
||||
+ } |
||||
|
||||
/* Now add the cron environment variables. Since env_set() |
||||
* overwrites existing variables, this will let cron's |
@ -0,0 +1,243 @@
@@ -0,0 +1,243 @@
|
||||
diff -up cronie-1.4.11/src/cron.c.refresh-users cronie-1.4.11/src/cron.c |
||||
--- cronie-1.4.11/src/cron.c.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/cron.c 2015-04-21 14:43:11.205438697 +0200 |
||||
@@ -525,7 +525,6 @@ static void find_jobs(int vtime, cron_db |
||||
int minute, hour, dom, month, dow; |
||||
user *u; |
||||
entry *e; |
||||
- const char *uname; |
||||
|
||||
/* The support for the job-specific timezones is not perfect. There will |
||||
* be jobs missed or run twice during the DST change in the job timezone. |
||||
@@ -562,16 +561,11 @@ static void find_jobs(int vtime, cron_db |
||||
*/ |
||||
for (u = db->head; u != NULL; u = u->next) { |
||||
for (e = u->crontab; e != NULL; e = e->next) { |
||||
- Debug(DSCH | DEXT, ("user [%s:%ld:%ld:...] cmd=\"%s\"\n", |
||||
- e->pwd->pw_name, (long) e->pwd->pw_uid, |
||||
- (long) e->pwd->pw_gid, e->cmd)); |
||||
- uname = e->pwd->pw_name; |
||||
- /* check if user exists in time of job is being run f.e. ldap */ |
||||
- if (getpwnam(uname) != NULL) { |
||||
time_t virtualSecond = (vtime - e->delay) * SECONDS_PER_MINUTE; |
||||
time_t virtualGMTSecond = virtualSecond - vGMToff; |
||||
job_tz = env_get("CRON_TZ", e->envp); |
||||
maketime(job_tz, orig_tz); |
||||
+ |
||||
/* here we test whether time is NOW */ |
||||
if (bit_test(e->minute, minute) && |
||||
bit_test(e->hour, hour) && |
||||
@@ -591,10 +585,9 @@ static void find_jobs(int vtime, cron_db |
||||
!(e->flags & (MIN_STAR | HR_STAR))) || |
||||
(doWild && (e->flags & (MIN_STAR | HR_STAR)))) |
||||
job_add(e, u); /*will add job, if it isn't in queue already for NOW. */ |
||||
- } |
||||
- } |
||||
- } |
||||
- } |
||||
+ } |
||||
+ } |
||||
+ } |
||||
if (orig_tz != NULL) |
||||
setenv("TZ", orig_tz, 1); |
||||
else |
||||
diff -up cronie-1.4.11/src/database.c.refresh-users cronie-1.4.11/src/database.c |
||||
--- cronie-1.4.11/src/database.c.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/database.c 2015-04-21 15:20:03.768846359 +0200 |
||||
@@ -152,10 +152,41 @@ check_orphans(cron_db *db) { |
||||
} |
||||
} |
||||
|
||||
+static int |
||||
+find_orphan(const char *uname, const char *fname, const char *tabname) { |
||||
+ orphan *o; |
||||
+ |
||||
+ for (o = orphans; o != NULL; o = o->next) { |
||||
+ if (uname && o->uname) { |
||||
+ if (strcmp(uname, o->uname) != 0) |
||||
+ continue; |
||||
+ } else if (uname != o->uname) |
||||
+ continue; |
||||
+ |
||||
+ if (fname && o->fname) { |
||||
+ if (strcmp(fname, o->fname) != 0) |
||||
+ continue; |
||||
+ } else if (fname != o->fname) |
||||
+ continue; |
||||
+ |
||||
+ if (tabname && o->tabname) { |
||||
+ if (strcmp(tabname, o->tabname) != 0) |
||||
+ continue; |
||||
+ } else if (tabname != o->tabname) |
||||
+ continue; |
||||
+ return 1; |
||||
+ } |
||||
+ |
||||
+ return 0; |
||||
+} |
||||
+ |
||||
static void |
||||
add_orphan(const char *uname, const char *fname, const char *tabname) { |
||||
orphan *o; |
||||
|
||||
+ if (find_orphan(uname, fname, tabname)) |
||||
+ return; |
||||
+ |
||||
o = calloc(1, sizeof(*o)); |
||||
if (o == NULL) |
||||
return; |
||||
diff -up cronie-1.4.11/src/entry.c.refresh-users cronie-1.4.11/src/entry.c |
||||
--- cronie-1.4.11/src/entry.c.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/entry.c 2015-04-21 14:40:13.473310662 +0200 |
||||
@@ -99,6 +99,7 @@ entry *load_entry(FILE * file, void (*er |
||||
char envstr[MAX_ENVSTR]; |
||||
char **tenvp; |
||||
char *p; |
||||
+ struct passwd temppw; |
||||
|
||||
Debug(DPARS, ("load_entry()...about to eat comments\n")); |
||||
|
||||
@@ -286,11 +287,15 @@ entry *load_entry(FILE * file, void (*er |
||||
|
||||
pw = getpwnam(username); |
||||
if (pw == NULL) { |
||||
- ecode = e_username; |
||||
- goto eof; |
||||
- } |
||||
- Debug(DPARS, ("load_entry()...uid %ld, gid %ld\n", |
||||
+ Debug(DPARS, ("load_entry()...unknown user entry\n")); |
||||
+ memset(&temppw, 0, sizeof (temppw)); |
||||
+ temppw.pw_name = username; |
||||
+ temppw.pw_passwd = ""; |
||||
+ pw = &temppw; |
||||
+ } else { |
||||
+ Debug(DPARS, ("load_entry()...uid %ld, gid %ld\n", |
||||
(long) pw->pw_uid, (long) pw->pw_gid)); |
||||
+ } |
||||
} |
||||
|
||||
if ((e->pwd = pw_dup(pw)) == NULL) { |
||||
@@ -331,17 +336,11 @@ entry *load_entry(FILE * file, void (*er |
||||
else |
||||
log_it("CRON", getpid(), "ERROR", "can't set SHELL", 0); |
||||
} |
||||
- if (!env_get("HOME", e->envp)) { |
||||
- if (glue_strings(envstr, sizeof envstr, "HOME", pw->pw_dir, '=')) { |
||||
- if ((tenvp = env_set(e->envp, envstr)) == NULL) { |
||||
- ecode = e_memory; |
||||
- goto eof; |
||||
- } |
||||
- e->envp = tenvp; |
||||
- } |
||||
- else |
||||
- log_it("CRON", getpid(), "ERROR", "can't set HOME", 0); |
||||
+ if ((tenvp = env_update_home(e->envp, pw->pw_dir)) == NULL) { |
||||
+ ecode = e_memory; |
||||
+ goto eof; |
||||
} |
||||
+ e->envp = tenvp; |
||||
#ifndef LOGIN_CAP |
||||
/* If login.conf is in used we will get the default PATH later. */ |
||||
if (ChangePath && !env_get("PATH", e->envp)) { |
||||
diff -up cronie-1.4.11/src/env.c.refresh-users cronie-1.4.11/src/env.c |
||||
--- cronie-1.4.11/src/env.c.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/env.c 2015-04-21 14:40:13.473310662 +0200 |
||||
@@ -25,6 +25,7 @@ |
||||
#include <errno.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
+#include <sys/types.h> |
||||
#include <unistd.h> |
||||
|
||||
#include "globals.h" |
||||
@@ -291,3 +292,19 @@ char *env_get(const char *name, char **e |
||||
} |
||||
return (NULL); |
||||
} |
||||
+ |
||||
+char **env_update_home(char **envp, const char *dir) { |
||||
+ char envstr[MAX_ENVSTR]; |
||||
+ |
||||
+ if (dir == NULL || *dir == '\0' || env_get("HOME", envp)) { |
||||
+ return envp; |
||||
+ } |
||||
+ |
||||
+ if (glue_strings(envstr, sizeof envstr, "HOME", dir, '=')) { |
||||
+ envp = env_set(envp, envstr); |
||||
+ } |
||||
+ else |
||||
+ log_it("CRON", getpid(), "ERROR", "can't set HOME", 0); |
||||
+ |
||||
+ return envp; |
||||
+} |
||||
diff -up cronie-1.4.11/src/funcs.h.refresh-users cronie-1.4.11/src/funcs.h |
||||
--- cronie-1.4.11/src/funcs.h.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/funcs.h 2015-04-21 14:40:13.473310662 +0200 |
||||
@@ -82,7 +82,8 @@ char *env_get(const char *, char **), |
||||
*first_word(const char *, const char *), |
||||
**env_init(void), |
||||
**env_copy(char **), |
||||
- **env_set(char **, const char *); |
||||
+ **env_set(char **, const char *), |
||||
+ **env_update_home(char **, const char *); |
||||
|
||||
user *load_user(int, struct passwd *, const char *, const char *, const char *), |
||||
*find_user(cron_db *, const char *, const char *); |
||||
diff -up cronie-1.4.11/src/job.c.refresh-users cronie-1.4.11/src/job.c |
||||
--- cronie-1.4.11/src/job.c.refresh-users 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/src/job.c 2015-04-21 14:40:13.474310685 +0200 |
||||
@@ -22,6 +22,11 @@ |
||||
#include "config.h" |
||||
|
||||
#include <stdlib.h> |
||||
+#include <pwd.h> |
||||
+#include <errno.h> |
||||
+#include <sys/types.h> |
||||
+#include <unistd.h> |
||||
+#include <string.h> |
||||
|
||||
#include "funcs.h" |
||||
#include "globals.h" |
||||
@@ -36,12 +41,42 @@ static job *jhead = NULL, *jtail = NULL; |
||||
|
||||
void job_add(entry * e, user * u) { |
||||
job *j; |
||||
+ struct passwd *newpwd; |
||||
+ struct passwd *temppwd; |
||||
+ const char *uname; |
||||
|
||||
/* if already on queue, keep going */ |
||||
for (j = jhead; j != NULL; j = j->next) |
||||
if (j->e == e && j->u == u) |
||||
return; |
||||
|
||||
+ uname = e->pwd->pw_name; |
||||
+ /* check if user exists in time of job is being run f.e. ldap */ |
||||
+ if ((temppwd = getpwnam(uname)) != NULL) { |
||||
+ char **tenvp; |
||||
+ |
||||
+ Debug(DSCH | DEXT, ("user [%s:%ld:%ld:...] cmd=\"%s\"\n", |
||||
+ e->pwd->pw_name, (long) temppwd->pw_uid, |
||||
+ (long) temppwd->pw_gid, e->cmd)); |
||||
+ if ((newpwd = pw_dup(temppwd)) == NULL) { |
||||
+ log_it(uname, getpid(), "ERROR", "memory allocation failed", errno); |
||||
+ return; |
||||
+ } |
||||
+ free(e->pwd); |
||||
+ e->pwd = newpwd; |
||||
+ |
||||
+ if ((tenvp = env_update_home(e->envp, e->pwd->pw_dir)) == NULL) { |
||||
+ log_it(uname, getpid(), "ERROR", "memory allocation failed", errno); |
||||
+ return; |
||||
+ } |
||||
+ e->envp = tenvp; |
||||
+ } else { |
||||
+ log_it(uname, getpid(), "ERROR", "getpwnam() failed",errno); |
||||
+ Debug(DSCH | DEXT, ("%s:%d pid=%d time=%ld getpwnam(%s) failed errno=%d error=%s\n", |
||||
+ __FILE__,__LINE__,getpid(),time(NULL),uname,errno,strerror(errno))); |
||||
+ return; |
||||
+ } |
||||
+ |
||||
/* build a job queue element */ |
||||
if ((j = (job *) malloc(sizeof (job))) == NULL) |
||||
return; |
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
diff -up cronie-1.4.11/src/security.c.selinux-user cronie-1.4.11/src/security.c |
||||
--- cronie-1.4.11/src/security.c.selinux-user 2017-03-07 13:52:23.076462218 +0100 |
||||
+++ cronie-1.4.11/src/security.c 2017-03-07 14:47:32.957371610 +0100 |
||||
@@ -41,8 +41,6 @@ |
||||
#ifdef WITH_SELINUX |
||||
# include <selinux/selinux.h> |
||||
# include <selinux/context.h> |
||||
-# include <selinux/flask.h> |
||||
-# include <selinux/av_permissions.h> |
||||
# include <selinux/get_context_list.h> |
||||
#endif |
||||
|
||||
@@ -476,7 +474,9 @@ get_security_context(const char *name, i |
||||
security_context_t scontext = NULL; |
||||
security_context_t file_context = NULL; |
||||
security_context_t rawcontext=NULL; |
||||
- int retval = 0; |
||||
+ context_t current_context = NULL; |
||||
+ int retval; |
||||
+ char *current_context_str = NULL; |
||||
char *seuser = NULL; |
||||
char *level = NULL; |
||||
|
||||
@@ -490,10 +490,29 @@ get_security_context(const char *name, i |
||||
log_it(name, getpid(), "getseuserbyname FAILED", name, 0); |
||||
return (security_getenforce() > 0); |
||||
} |
||||
+ |
||||
+ retval = get_default_context_with_level(seuser, level, NULL, &scontext); |
||||
+ } |
||||
+ else { |
||||
+ if (getcon(¤t_context_str) < 0) { |
||||
+ log_it(name, getpid(), "getcon FAILED", "", 0); |
||||
+ return (security_getenforce() > 0); |
||||
+ } |
||||
+ |
||||
+ current_context = context_new(current_context_str); |
||||
+ if (current_context == NULL) { |
||||
+ log_it(name, getpid(), "context_new FAILED", current_context_str, 0); |
||||
+ freecon(current_context_str); |
||||
+ return (security_getenforce() > 0); |
||||
+ } |
||||
+ |
||||
+ const char *current_user = context_user_get(current_context); |
||||
+ retval = get_default_context_with_level(current_user, level, NULL, &scontext); |
||||
+ |
||||
+ freecon(current_context_str); |
||||
+ context_free(current_context); |
||||
} |
||||
|
||||
- retval = get_default_context_with_level(name == NULL ? "system_u" : seuser, |
||||
- level, NULL, &scontext); |
||||
if (selinux_trans_to_raw_context(scontext, &rawcontext) == 0) { |
||||
freecon(scontext); |
||||
scontext = rawcontext; |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
diff -up cronie-1.4.11/src/cron.c.shutdown-msg cronie-1.4.11/src/cron.c |
||||
--- cronie-1.4.11/src/cron.c.shutdown-msg 2015-04-21 15:29:14.218651528 +0200 |
||||
+++ cronie-1.4.11/src/cron.c 2015-04-21 15:29:30.212023639 +0200 |
||||
@@ -486,6 +486,8 @@ int main(int argc, char *argv[]) { |
||||
log_it("CRON", pid, "INFO", "Inotify close failed", errno); |
||||
#endif |
||||
|
||||
+ log_it("CRON", pid, "INFO", "Shutting down", 0); |
||||
+ |
||||
(void) unlink(_PATH_CRON_PID); |
||||
|
||||
return 0; |
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
diff -up cronie-1.4.11/src/crontab.c.temp-name cronie-1.4.11/src/crontab.c |
||||
--- cronie-1.4.11/src/crontab.c.temp-name 2016-02-23 15:32:33.754463457 +0100 |
||||
+++ cronie-1.4.11/src/crontab.c 2016-02-23 15:33:17.401466818 +0100 |
||||
@@ -104,7 +104,7 @@ edit_cmd(void), |
||||
poke_daemon(void), |
||||
check_error(const char *), parse_args(int c, char *v[]), die(int) ATTRIBUTE_NORETURN; |
||||
static int replace_cmd(void), hostset_cmd(void), hostget_cmd(void); |
||||
-static char *host_specific_filename(const char *filename, int prefix); |
||||
+static char *host_specific_filename(const char *prefix, const char *suffix); |
||||
static const char *tmp_path(void); |
||||
|
||||
static void usage(const char *msg) ATTRIBUTE_NORETURN; |
||||
@@ -445,26 +445,27 @@ static const char *tmp_path(void) { |
||||
return tmpdir ? tmpdir : "/tmp"; |
||||
} |
||||
|
||||
-static char *host_specific_filename(const char *filename, int prefix) |
||||
+static char *host_specific_filename(const char *prefix, const char *suffix) |
||||
{ |
||||
/* |
||||
* For cluster-wide use, where there is otherwise risk of the same |
||||
- * name being generated on more than one host at once, prefix with |
||||
- * "hostname." or suffix with ".hostname" as requested, and return |
||||
- * static buffer or NULL on failure. |
||||
+ * name being generated on more than one host at once, insert hostname |
||||
+ * separated with dots, and return static buffer or NULL on failure. |
||||
*/ |
||||
|
||||
static char safename[MAX_FNAME]; |
||||
- char hostname[MAXHOSTNAMELEN]; |
||||
+ char hostname[MAX_FNAME]; |
||||
|
||||
if (gethostname(hostname, sizeof hostname) != 0) |
||||
return NULL; |
||||
|
||||
if (prefix) { |
||||
- if (!glue_strings(safename, sizeof safename, hostname, filename, '.')) |
||||
+ if (!glue_strings(safename, sizeof safename, prefix, hostname, '.')) |
||||
return NULL; |
||||
- } else { |
||||
- if (!glue_strings(safename, sizeof safename, filename, hostname, '.')) |
||||
+ strcpy(hostname, safename); |
||||
+ } |
||||
+ if (suffix) { |
||||
+ if (!glue_strings(safename, sizeof safename, hostname, suffix, '.')) |
||||
return NULL; |
||||
} |
||||
|
||||
@@ -745,7 +746,7 @@ static int replace_cmd(void) { |
||||
char *safename; |
||||
|
||||
|
||||
- safename = host_specific_filename("tmp.XXXXXXXXXX", 1); |
||||
+ safename = host_specific_filename("#tmp", "XXXXXXXXXX"); |
||||
if (!safename || !glue_strings(TempFilename, sizeof TempFilename, SPOOL_DIR, |
||||
safename, '/')) { |
||||
TempFilename[0] = '\0'; |
||||
@@ -911,7 +912,7 @@ static int hostset_cmd(void) { |
||||
if (!HostSpecified) |
||||
gethostname(Host, sizeof Host); |
||||
|
||||
- safename = host_specific_filename("tmp.XXXXXXXXXX", 1); |
||||
+ safename = host_specific_filename("#tmp", "XXXXXXXXXX"); |
||||
if (!safename || !glue_strings(TempFilename, sizeof TempFilename, SPOOL_DIR, |
||||
safename, '/')) { |
||||
TempFilename[0] = '\0'; |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
diff -up cronie-1.4.11/anacron/readtab.c.bla cronie-1.4.11/anacron/readtab.c |
||||
--- cronie-1.4.11/anacron/readtab.c.bla 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/anacron/readtab.c 2014-01-27 17:47:41.362138084 +0100 |
||||
@@ -271,7 +271,8 @@ parse_tab_line(char *line) |
||||
if (strncmp(env_var, "START_HOURS_RANGE", 17) == 0) |
||||
{ |
||||
r = match_rx("^([[:digit:]]+)-([[:digit:]]+)$", value, 2, &from, &to); |
||||
- if ((r == -1) || (from == NULL) || (to == NULL)) goto reg_invalid; |
||||
+ if (r == -1) goto reg_err; |
||||
+ if (r == 0) goto reg_invalid; |
||||
range_start = atoi(from); |
||||
range_stop = atoi(to); |
||||
if (range_stop < range_start) { |
||||
@@ -282,6 +283,8 @@ parse_tab_line(char *line) |
||||
} |
||||
if (strncmp(env_var, "RANDOM_DELAY", 12) == 0) { |
||||
r = match_rx("^([[:digit:]]+)$", value, 0); |
||||
+ if (r == -1) goto reg_err; |
||||
+ if (r == 0) goto reg_invalid; |
||||
if (r != -1) { |
||||
int i = random(); |
||||
double x = 0; |
||||
@@ -289,7 +292,6 @@ parse_tab_line(char *line) |
||||
random_number = (int)x; |
||||
Debug(("Randomized delay set: %d", random_number)); |
||||
} |
||||
- else goto reg_invalid; |
||||
} |
||||
if (strncmp(env_var, "PREFERRED_HOUR", 14) == 0) { |
||||
r = match_rx("^([[:digit:]]+)$", value, 1, &pref_hour); |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
diff -up cronie-1.4.11/contrib/cronie.systemd.sss cronie-1.4.11/contrib/cronie.systemd |
||||
--- cronie-1.4.11/contrib/cronie.systemd.sss 2013-07-18 14:27:08.000000000 +0200 |
||||
+++ cronie-1.4.11/contrib/cronie.systemd 2013-08-30 13:37:33.848391897 +0200 |
||||
@@ -5,6 +5,7 @@ After=syslog.target auditd.service syste |
||||
[Service] |
||||
EnvironmentFile=/etc/sysconfig/crond |
||||
ExecStart=/usr/sbin/crond -n $CRONDARGS |
||||
+KillMode=process |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
diff -up cronie-1.4.11/contrib/cronie.systemd.old cronie-1.4.11/contrib/cronie.systemd |
||||
--- cronie-1.4.11/contrib/cronie.systemd.old 2014-01-27 14:31:47.696467385 +0100 |
||||
+++ cronie-1.4.11/contrib/cronie.systemd 2014-07-04 15:18:16.000000000 +0200 |
||||
@@ -1,10 +1,11 @@ |
||||
[Unit] |
||||
Description=Command Scheduler |
||||
-After=syslog.target auditd.service systemd-user-sessions.service time-sync.target |
||||
+After=auditd.service systemd-user-sessions.service time-sync.target |
||||
|
||||
[Service] |
||||
EnvironmentFile=/etc/sysconfig/crond |
||||
ExecStart=/usr/sbin/crond -n $CRONDARGS |
||||
+ExecReload=/bin/kill -HUP $MAINPID |
||||
KillMode=process |
||||
|
||||
[Install] |
@ -0,0 +1,521 @@
@@ -0,0 +1,521 @@
|
||||
%bcond_without selinux |
||||
%bcond_without pam |
||||
%bcond_without audit |
||||
%bcond_without inotify |
||||
|
||||
Summary: Cron daemon for executing programs at set times |
||||
Name: cronie |
||||
Version: 1.4.11 |
||||
Release: 19%{?dist} |
||||
License: MIT and BSD and ISC and GPLv2+ |
||||
Group: System Environment/Base |
||||
URL: https://github.com/cronie-crond/cronie |
||||
Source0: https://github.com/cronie-crond/cronie/releases/download/cronie-%{version}/cronie-%{version}.tar.gz |
||||
|
||||
Patch0: cronie-systemd.patch |
||||
Patch1: cronie-1.4.11-fcntl_locking.patch |
||||
Patch2: cronie-1.4.11-pamenv.patch |
||||
Patch3: cronie-1.4.11-man-debug.patch |
||||
Patch4: cronie-check-config-param.patch |
||||
Patch5: cronie-unitfile.patch |
||||
Patch6: cronie-1.4.11-refresh-users.patch |
||||
Patch7: cronie-1.4.11-shutdown-msg.patch |
||||
Patch8: cronie-1.4.11-temp-name.patch |
||||
Patch9: cronie-1.4.11-anacron-mailto.patch |
||||
Patch10: cronie-1.4.11-crontab-root.patch |
||||
Patch11: cronie-1.4.11-man-file.patch |
||||
Patch12: cronie-1.4.11-selinux-user.patch |
||||
Patch13: cronie-1.4.11-no-pam.patch |
||||
Patch14: cronie-1.4.11-empty-var.patch |
||||
|
||||
Requires: dailyjobs |
||||
|
||||
%if %{with selinux} |
||||
Requires: libselinux >= 2.0.64 |
||||
Buildrequires: libselinux-devel >= 2.0.64 |
||||
%endif |
||||
%if %{with pam} |
||||
Requires: pam >= 1.0.1 |
||||
Buildrequires: pam-devel >= 1.0.1 |
||||
%endif |
||||
%if %{with audit} |
||||
Buildrequires: audit-libs-devel >= 1.4.1 |
||||
%endif |
||||
|
||||
BuildRequires: systemd |
||||
Obsoletes: %{name}-sysvinit |
||||
|
||||
Requires(post): coreutils sed |
||||
Requires(post): systemd |
||||
Requires(preun): systemd |
||||
Requires(postun): systemd |
||||
Requires(post): systemd |
||||
|
||||
%description |
||||
Cronie contains the standard UNIX daemon crond that runs specified programs at |
||||
scheduled times and related tools. It is a fork of the original vixie-cron and |
||||
has security and configuration enhancements like the ability to use pam and |
||||
SELinux. |
||||
|
||||
%package anacron |
||||
Summary: Utility for running regular jobs |
||||
Requires: crontabs |
||||
Group: System Environment/Base |
||||
Provides: dailyjobs |
||||
Provides: anacron = 2.4 |
||||
Obsoletes: anacron <= 2.3 |
||||
Requires(post): coreutils |
||||
Requires: %{name} = %{version}-%{release} |
||||
|
||||
%description anacron |
||||
Anacron is part of cronie that is used for running jobs with regular |
||||
periodicity which do not have exact time of day of execution. |
||||
|
||||
The default settings of anacron execute the daily, weekly, and monthly |
||||
jobs, but anacron allows setting arbitrary periodicity of jobs. |
||||
|
||||
Using anacron allows running the periodic jobs even if the system is often |
||||
powered off and it also allows randomizing the time of the job execution |
||||
for better utilization of resources shared among multiple systems. |
||||
|
||||
%package noanacron |
||||
Summary: Utility for running simple regular jobs in old cron style |
||||
Group: System Environment/Base |
||||
Provides: dailyjobs |
||||
Requires: crontabs |
||||
Requires: %{name} = %{version}-%{release} |
||||
|
||||
%description noanacron |
||||
Old style of running {hourly,daily,weekly,monthly}.jobs without anacron. No |
||||
extra features. |
||||
|
||||
%prep |
||||
%setup -q |
||||
%patch0 -p1 -b .systemd |
||||
%patch1 -p1 -b .locking |
||||
%patch2 -p1 -b .pamenv |
||||
%patch3 -p1 -b .man-debug |
||||
%patch4 -p1 -b .check-config |
||||
%patch5 -p1 -b .unitfile |
||||
%patch6 -p1 -b .refresh-users |
||||
%patch7 -p1 -b .shutdown-msg |
||||
%patch8 -p1 -b .temp-name |
||||
%patch9 -p1 -b .mailto |
||||
%patch10 -p1 -b .root |
||||
%patch11 -p1 -b .man-file |
||||
%patch12 -p1 -b .selinux-user |
||||
%patch13 -p1 -b .no-pam |
||||
%patch14 -p1 -b .empty-var |
||||
|
||||
%build |
||||
%configure \ |
||||
%if %{with pam} |
||||
--with-pam \ |
||||
%endif |
||||
%if %{with selinux} |
||||
--with-selinux \ |
||||
%endif |
||||
%if %{with audit} |
||||
--with-audit \ |
||||
%endif |
||||
%if %{with inotify} |
||||
--with-inotify \ |
||||
%endif |
||||
--enable-anacron \ |
||||
--enable-pie \ |
||||
--enable-relro |
||||
|
||||
make %{?_smp_mflags} |
||||
|
||||
%install |
||||
make install DESTDIR=$RPM_BUILD_ROOT DESTMAN=$RPM_BUILD_ROOT%{_mandir} |
||||
mkdir -pm700 $RPM_BUILD_ROOT%{_localstatedir}/spool/cron |
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ |
||||
mkdir -pm755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/ |
||||
%if ! %{with pam} |
||||
rm -f $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/crond |
||||
%endif |
||||
install -m 600 crond.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/crond |
||||
touch $RPM_BUILD_ROOT%{_sysconfdir}/cron.deny |
||||
install -m 600 contrib/anacrontab $RPM_BUILD_ROOT%{_sysconfdir}/anacrontab |
||||
install -c -m755 contrib/0hourly $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/0hourly |
||||
mkdir -pm 700 $RPM_BUILD_ROOT%{_sysconfdir}/cron.hourly |
||||
install -c -m755 contrib/0anacron $RPM_BUILD_ROOT%{_sysconfdir}/cron.hourly/0anacron |
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/anacron |
||||
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 |
||||
|
||||
# noanacron package |
||||
install -m 644 contrib/dailyjobs $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/dailyjobs |
||||
|
||||
# install systemd initscript |
||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system/ |
||||
install -m 644 contrib/cronie.systemd $RPM_BUILD_ROOT/usr/lib/systemd/system/crond.service |
||||
|
||||
%post |
||||
# run after an installation |
||||
%systemd_post crond.service |
||||
|
||||
%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 |
||||
|
||||
%preun |
||||
# run before a package is removed |
||||
%systemd_preun crond.service |
||||
|
||||
%postun |
||||
# run after a package is removed |
||||
%systemd_postun_with_restart crond.service |
||||
|
||||
%triggerun -- cronie-anacron < 1.4.1 |
||||
# empty /etc/crontab in case there are only old regular jobs |
||||
cp -a /etc/crontab /etc/crontab.rpmsave |
||||
sed -e '/^01 \* \* \* \* root run-parts \/etc\/cron\.hourly/d'\ |
||||
-e '/^02 4 \* \* \* root run-parts \/etc\/cron\.daily/d'\ |
||||
-e '/^22 4 \* \* 0 root run-parts \/etc\/cron\.weekly/d'\ |
||||
-e '/^42 4 1 \* \* root run-parts \/etc\/cron\.monthly/d' /etc/crontab.rpmsave > /etc/crontab |
||||
exit 0 |
||||
|
||||
%triggerun -- cronie < 1.4.7-2 |
||||
# Save the current service runlevel info |
||||
# User must manually run systemd-sysv-convert --apply crond |
||||
# to migrate them to systemd targets |
||||
/usr/bin/systemd-sysv-convert --save crond |
||||
|
||||
# The package is allowed to autostart: |
||||
/bin/systemctl enable crond.service >/dev/null 2>&1 |
||||
|
||||
/sbin/chkconfig --del crond >/dev/null 2>&1 || : |
||||
/bin/systemctl try-restart crond.service >/dev/null 2>&1 || : |
||||
/bin/systemctl daemon-reload >/dev/null 2>&1 || : |
||||
|
||||
%triggerin -- pam, glibc, libselinux |
||||
# changes in pam, glibc or libselinux can make crond crash |
||||
# when it calls pam |
||||
/bin/systemctl try-restart crond.service >/dev/null 2>&1 || : |
||||
|
||||
%files |
||||
%doc AUTHORS COPYING INSTALL README ChangeLog |
||||
%attr(755,root,root) %{_sbindir}/crond |
||||
%attr(4755,root,root) %{_bindir}/crontab |
||||
%{_mandir}/man8/crond.* |
||||
%{_mandir}/man8/cron.* |
||||
%{_mandir}/man5/crontab.* |
||||
%{_mandir}/man1/crontab.* |
||||
%dir %{_localstatedir}/spool/cron |
||||
%dir %{_sysconfdir}/cron.d |
||||
%if %{with pam} |
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/crond |
||||
%endif |
||||
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/crond |
||||
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/cron.deny |
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cron.d/0hourly |
||||
%attr(0644,root,root) /usr/lib/systemd/system/crond.service |
||||
|
||||
%files anacron |
||||
%{_sbindir}/anacron |
||||
%attr(0755,root,root) %{_sysconfdir}/cron.hourly/0anacron |
||||
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/anacrontab |
||||
%dir /var/spool/anacron |
||||
%ghost %attr(0600,root,root) %verify(not md5 size mtime) /var/spool/anacron/cron.daily |
||||
%ghost %attr(0600,root,root) %verify(not md5 size mtime) /var/spool/anacron/cron.weekly |
||||
%ghost %attr(0600,root,root) %verify(not md5 size mtime) /var/spool/anacron/cron.monthly |
||||
%{_mandir}/man5/anacrontab.* |
||||
%{_mandir}/man8/anacron.* |
||||
|
||||
%files noanacron |
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cron.d/dailyjobs |
||||
|
||||
%changelog |
||||
* Mon Oct 16 2017 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-19 |
||||
- fix URL and source URL of the package (#1501726) |
||||
|
||||
* Fri Sep 15 2017 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-18 |
||||
- fix regression - spurious PAM log message from crontab (#1479064) |
||||
- allow empty variables in crontabs (#1439217) |
||||
|
||||
* Wed Mar 29 2017 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-17 |
||||
- make anacron not to contradict itself in syslog |
||||
(job output does not have to be necessarily mailed) |
||||
|
||||
* Tue Mar 7 2017 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-16 |
||||
- disable mail from anacron with empty MAILTO |
||||
- crontab: do not block access with PAM when running as root |
||||
- improve the crontab man page |
||||
- do not hardcode system_u selinux user but use the user from |
||||
the current context |
||||
|
||||
* Tue Feb 23 2016 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-15 |
||||
- crontab: use temporary filename properly ignored by crond |
||||
|
||||
* Tue Apr 21 2015 Tomáš Mráz <tmraz@redhat.com> - 1.4.11-14 |
||||
- mark the 0hourly and dailyjobs crontabs as config |
||||
- properly handle users for whose getpwnam() returns NULL temporarily |
||||
- log when crond is shutting down |
||||
|
||||
* Mon Jul 7 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-13 |
||||
- reload in unit file was still missing |
||||
- Related: rhbz#1114815 |
||||
|
||||
* Fri Jul 4 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-12 |
||||
- reload in unit file was missing |
||||
- Resolves: rhbz#1114815 |
||||
|
||||
* Mon Jan 27 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-11 |
||||
- now it's work even on ppc64, all checks working correctly |
||||
- Related: rhbz#1031384 |
||||
|
||||
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.4.11-10 |
||||
- Mass rebuild 2014-01-24 |
||||
|
||||
* Wed Jan 22 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-9 |
||||
- fix coverity warnings about dead code. Incorrect checking of values. |
||||
- Related: rhbz#1031384 |
||||
|
||||
* Mon Jan 20 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-8 |
||||
- anacron do not execute jobs run from command line |
||||
- Related: rhbz#1031384 |
||||
|
||||
* Wed Jan 08 2014 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-7 |
||||
- anacron segfaults with certain config data |
||||
- Resolves: rhbz#1031384 |
||||
|
||||
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.4.11-6 |
||||
- Mass rebuild 2013-12-27 |
||||
|
||||
* Tue Oct 15 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-5 |
||||
- Cronie doesn't work when is executed as stand alone without systemd (for |
||||
debuging issues) |
||||
- Fix another permission, hopefully all now. |
||||
- Resolves: rhbz#1012420, rhbz#1015567 |
||||
|
||||
* Fri Sep 13 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-4 |
||||
- fix permission on configuration files, same as rhbz#706979 |
||||
|
||||
* Fri Aug 30 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-3 |
||||
- 919290 systemd script use "KillMode=process" |
||||
- Fcntl locking has different semantics than flock. Prefer flock. |
||||
- 49225e172d156531ca142518d2638350752e373a |
||||
- Pull PAM environment variables also from session modules. |
||||
- c8e7d1b43c86a85441cb09cf7e08090f3ec1f384 |
||||
|
||||
* Mon Jul 22 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-2 |
||||
- scriptlets are not created correctly if systemd is not in BR 986698 |
||||
- remove sub-package sysvinit, which is not needed anymore |
||||
- update license, anacron is under GPLv2+ |
||||
|
||||
* Thu Jul 18 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.11-1 |
||||
- new release 1.4.11 (contains previous bug fixes from 1.4.10-5) |
||||
|
||||
* Tue Jun 11 2013 Tomáš Mráz <tmraz@redhat.com> - 1.4.10-5 |
||||
- add support for RANDOM_DELAY - delaying job startups |
||||
- pass some environment variables to processes (LANG, etc.) (#969761) |
||||
- do not use putenv() with string literals (#971516) |
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.10-4 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||
|
||||
* Wed Jan 2 2013 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.10-3 |
||||
- change configuration files to 644 |
||||
- change 6755 to 4755 for crontab binary |
||||
|
||||
* Tue Nov 27 2012 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.10-1 |
||||
- New release 1.4.10 |
||||
|
||||
* Thu Nov 22 2012 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.9-1 |
||||
- New release 1.4.9 |
||||
|
||||
* Wed Sep 05 2012 Václav Pavlín <vpavlin@redhat.com> - 1.4.8-13 |
||||
- Scriptlets replaced with new systemd macros (#850070) |
||||
|
||||
* Fri Jul 27 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.8-12 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||
|
||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.8-11 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild |
||||
|
||||
* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.8-10 |
||||
- Rebuilt for glibc bug#747377 |
||||
|
||||
* Tue Oct 25 2011 Tomáš Mráz <tmraz@redhat.com> - 1.4.8-9 |
||||
- make crond run a little bit later in the boot process (#747759) |
||||
|
||||
* Mon Oct 17 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.8-8 |
||||
- change triggerun to fix 735802 during upgrade |
||||
|
||||
* Wed Jul 27 2011 Karsten Hopp <karsten@redhat.com> 1.4.8-7 |
||||
- rebuild again, ppc still had the broken rpm in the buildroots |
||||
|
||||
* Thu Jul 21 2011 Rex Dieter <rdieter@fedoraproject.org> 1.4.8-6 |
||||
- rebuild (broken rpm in buildroot) |
||||
|
||||
* Thu Jul 21 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.8-5 |
||||
- fix permission of init.d/crond |
||||
|
||||
* Thu Jun 30 2011 Tomáš Mráz <tmraz@redhat.com> - 1.4.8-4 |
||||
- drop the without systemd build condition |
||||
- add the chkconfig readding trigger to the sysvinit subpackage |
||||
|
||||
* Wed Jun 29 2011 Tomáš Mráz <tmraz@redhat.com> - 1.4.8-3 |
||||
- start crond after auditd |
||||
|
||||
* Wed Jun 29 2011 Tomáš Mráz <tmraz@redhat.com> - 1.4.8-2 |
||||
- fix inotify support to not leak fds (#717505) |
||||
|
||||
* Tue Jun 28 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.8-1 |
||||
- update to 1.4.8 |
||||
- create sub-package sysvinit for initscript |
||||
|
||||
* Mon May 9 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.7-3 |
||||
- missing requirement on systemd-sysv for scriptlets |
||||
|
||||
* Thu May 05 2011 Tomáš Mráz <tmraz@redhat.com> - 1.4.7-2 |
||||
- use only systemd units with systemd |
||||
- add trigger for restart on glibc, libselinux or pam upgrades (#699189) |
||||
|
||||
* Tue Mar 15 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.7-1 |
||||
- new release 1.4.7 |
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.6-9 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||
|
||||
* Mon Jan 17 2011 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-8 |
||||
- enable crond even with systemctl |
||||
|
||||
* Thu Dec 16 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-7 |
||||
- 663193 rewritten selinux support |
||||
|
||||
* Wed Dec 15 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-6 |
||||
- apply selinux patch from dwalsh |
||||
|
||||
* Fri Dec 10 2010 Tomas Mraz <tmraz@redhat.com> - 1.4.6-5 |
||||
- do not lock jobs that fall out of allowed range - 661966 |
||||
|
||||
* Thu Dec 02 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-4 |
||||
- fix post (thanks plautrba for review) |
||||
|
||||
* Tue Nov 30 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-3 |
||||
- systemd init script 617320 |
||||
|
||||
* Tue Nov 30 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-2 |
||||
- fix typos in man pages |
||||
|
||||
* Fri Oct 22 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.6-1 |
||||
- update to 1.4.6 |
||||
|
||||
* Fri Aug 13 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.5-4 |
||||
- 623908 fix fd leak in anacron, which caused denail of prelink |
||||
and others |
||||
|
||||
* Mon Aug 9 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.5-2 |
||||
- remove sendmail from requirements. If it's not installed, it will |
||||
log into (r)syslog. |
||||
|
||||
* Mon Aug 2 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.5-1 |
||||
- update to new release |
||||
|
||||
* Fri Feb 19 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.4-1 |
||||
- update to new release |
||||
|
||||
* Mon Feb 15 2010 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.3-3 |
||||
- 564894 FTBFS DSOLinking |
||||
|
||||
* Thu Nov 5 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.3-2 |
||||
- 533189 pam needs add a line and selinux needs defined one function |
||||
|
||||
* Fri Oct 30 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.3-1 |
||||
- 531963 and 532482 creating noanacron package |
||||
|
||||
* Mon Oct 19 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.2-2 |
||||
- 529632 service crond stop returns appropriate value |
||||
|
||||
* Mon Oct 12 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.2-1 |
||||
- new release |
||||
|
||||
* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 1.4.1-3 |
||||
- rebuilt with new audit |
||||
|
||||
* Fri Aug 14 2009 Tomas Mraz <tmraz@redhat.com> - 1.4.1-2 |
||||
- create the anacron timestamps in correct post script |
||||
|
||||
* Fri Aug 14 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4.1-1 |
||||
- update to 1.4.1 |
||||
- create and own /var/spool/anacron/cron.{daily,weekly,monthly} to |
||||
remove false warning about non existent files |
||||
- Resolves: 517398 |
||||
|
||||
* Wed Aug 5 2009 Tomas Mraz <tmraz@redhat.com> - 1.4-4 |
||||
- 515762 move anacron provides and obsoletes to the anacron subpackage |
||||
|
||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-3 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||
|
||||
* Mon Jul 20 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.4-2 |
||||
- merge cronie and anacron in new release of cronie |
||||
- obsolete/provide anacron in spec |
||||
|
||||
* Thu Jun 18 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.3-2 |
||||
- 506560 check return value of access |
||||
|
||||
* Mon Apr 27 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.3-1 |
||||
- new release |
||||
|
||||
* Fri Apr 24 2009 Marcela Mašláňová <mmaslano@redhat.com> - 1.2-8 |
||||
- 496973 close file descriptors after exec |
||||
|
||||
* Mon Mar 9 2009 Tomas Mraz <tmraz@redhat.com> - 1.2-7 |
||||
- rebuild |
||||
|
||||
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-6 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild |
||||
|
||||
* Tue Dec 23 2008 Marcela Mašláňová <mmaslano@redhat.com> - 1.2-5 |
||||
- 477100 NO_FOLLOW was removed, reload after change in symlinked |
||||
crontab is needed, man updated. |
||||
|
||||
* Fri Oct 24 2008 Marcela Mašláňová <mmaslano@redhat.com> - 1.2-4 |
||||
- update init script |
||||
|
||||
* Thu Sep 25 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.2-3 |
||||
- add sendmail file into requirement, cause it's needed some MTA |
||||
|
||||
* Thu Sep 18 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.2-2 |
||||
- 462252 /etc/sysconfig/crond does not need to be executable |
||||
|
||||
* Thu Jun 26 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.2-1 |
||||
- update to 1.2 |
||||
|
||||
* Tue Jun 17 2008 Tomas Mraz <tmraz@redhat.com> - 1.1-3 |
||||
- fix setting keycreate context |
||||
- unify logging a bit |
||||
- cleanup some warnings and fix a typo in TZ code |
||||
- 450993 improve and fix inotify support |
||||
|
||||
* Wed Jun 4 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.1-2 |
||||
- 49864 upgrade/update problem. Syntax error in spec. |
||||
|
||||
* Wed May 28 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.1-1 |
||||
- release 1.1 |
||||
|
||||
* Tue May 20 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-6 |
||||
- 446360 check for lock didn't call chkconfig |
||||
|
||||
* Tue Feb 12 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-5 |
||||
- upgrade from less than cronie-1.0-4 didn't add chkconfig |
||||
|
||||
* Wed Feb 6 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-4 |
||||
- 431366 after reboot wasn't cron in chkconfig |
||||
|
||||
* Tue Feb 5 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-3 |
||||
- 431366 trigger part => after update from vixie-cron on cronie will |
||||
be daemon running. |
||||
|
||||
* Wed Jan 30 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-2 |
||||
- change the provides on higher version than obsoletes |
||||
|
||||
* Tue Jan 8 2008 Marcela Maslanova <mmaslano@redhat.com> - 1.0-1 |
||||
- packaging cronie |
||||
- thank's for help with packaging to my reviewers |
Loading…
Reference in new issue