[Erp5-report] r44919 luke - /erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Mar 31 17:09:24 CEST 2011
Author: luke
Date: Thu Mar 31 17:09:24 2011
New Revision: 44919
URL: http://svn.erp5.org?rev=44919&view=rev
Log:
- dcron non root, non global system patch
Added:
erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch
Added: erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch
URL: http://svn.erp5.org/erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch?rev=44919&view=auto
==============================================================================
--- erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch (added)
+++ erp5/trunk/patches/dcron-4.4.noroot.no.globals.patch [utf8] Thu Mar 31 17:09:24 2011
@@ -0,0 +1,103 @@
+# Patch to have dcron running as ordinary user and installable without root
+# requirement
+diff -ru dcron-4.4.org/chuser.c dcron-4.4/chuser.c
+--- dcron-4.4.org/chuser.c 2010-01-18 16:27:31.000000000 +0100
++++ dcron-4.4/chuser.c 2011-03-31 16:39:52.000000000 +0200
+@@ -14,47 +14,6 @@
+ int
+ ChangeUser(const char *user, char *dochdir)
+ {
+- struct passwd *pas;
+-
+- /*
+- * Obtain password entry and change privilages
+- */
+-
+- if ((pas = getpwnam(user)) == 0) {
+- printlogf(LOG_ERR, "failed to get uid for %s\n", user);
+- return(-1);
+- }
+- setenv("USER", pas->pw_name, 1);
+- setenv("HOME", pas->pw_dir, 1);
+- setenv("SHELL", "/bin/sh", 1);
+-
+- /*
+- * Change running state to the user in question
+- */
+-
+- if (initgroups(user, pas->pw_gid) < 0) {
+- printlogf(LOG_ERR, "initgroups failed: %s %s\n", user, strerror(errno));
+- return(-1);
+- }
+- if (setregid(pas->pw_gid, pas->pw_gid) < 0) {
+- printlogf(LOG_ERR, "setregid failed: %s %d\n", user, pas->pw_gid);
+- return(-1);
+- }
+- if (setreuid(pas->pw_uid, pas->pw_uid) < 0) {
+- printlogf(LOG_ERR, "setreuid failed: %s %d\n", user, pas->pw_uid);
+- return(-1);
+- }
+- if (dochdir) {
+- /* try to change to $HOME */
+- if (chdir(pas->pw_dir) < 0) {
+- printlogf(LOG_ERR, "chdir failed: %s %s\n", user, pas->pw_dir);
+- /* dochdir is a backup directory, usually /tmp */
+- if (chdir(dochdir) < 0) {
+- printlogf(LOG_ERR, "chdir failed: %s %s\n", user, dochdir);
+- return(-1);
+- }
+- }
+- }
+- return(pas->pw_uid);
++ return getpwnam(user);
+ }
+
+diff -ru dcron-4.4.org/Makefile dcron-4.4/Makefile
+--- dcron-4.4.org/Makefile 2010-01-18 16:27:31.000000000 +0100
++++ dcron-4.4/Makefile 2011-03-31 16:01:08.000000000 +0200
+@@ -3,7 +3,6 @@
+
+ # these variables can be configured by e.g. `make SCRONTABS=/different/path`
+ PREFIX = /usr/local
+-CRONTAB_GROUP = wheel
+ SCRONTABS = /etc/cron.d
+ CRONTABS = /var/spool/cron/crontabs
+ CRONSTAMPS = /var/spool/cron/cronstamps
+@@ -20,10 +19,10 @@
+
+
+ SHELL = /bin/sh
+-INSTALL = install -o root
++INSTALL = install
+ INSTALL_PROGRAM = $(INSTALL) -D
+-INSTALL_DATA = $(INSTALL) -D -m0644 -g root
+-INSTALL_DIR = $(INSTALL) -d -m0755 -g root
++INSTALL_DATA = $(INSTALL) -D -m0644
++INSTALL_DIR = $(INSTALL) -d -m0755
+ CFLAGS ?= -O2
+ CFLAGS += -Wall -Wstrict-prototypes
+ SRCS = main.c subs.c database.c job.c concat.c chuser.c
+@@ -44,7 +43,6 @@
+ echo "SBINDIR = $(SBINDIR)" >> config
+ echo "BINDIR = $(BINDIR)" >> config
+ echo "MANDIR = $(MANDIR)" >> config
+- echo "CRONTAB_GROUP = $(CRONTAB_GROUP)" >> config
+ echo "SCRONTABS = $(SCRONTABS)" >> config
+ echo "CRONTABS = $(CRONTABS)" >> config
+ echo "CRONSTAMPS = $(CRONSTAMPS)" >> config
+@@ -62,13 +60,10 @@
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $< -o $@
+
+ install:
+- $(INSTALL_PROGRAM) -m0700 -g root crond $(DESTDIR)$(SBINDIR)/crond
+- $(INSTALL_PROGRAM) -m4750 -g $(CRONTAB_GROUP) crontab $(DESTDIR)$(BINDIR)/crontab
++ $(INSTALL_PROGRAM) -m0700 crond $(DESTDIR)$(SBINDIR)/crond
++ $(INSTALL_PROGRAM) -m4750 crontab $(DESTDIR)$(BINDIR)/crontab
+ $(INSTALL_DATA) crontab.1 $(DESTDIR)$(MANDIR)/man1/crontab.1
+ $(INSTALL_DATA) crond.8 $(DESTDIR)$(MANDIR)/man8/crond.8
+- $(INSTALL_DIR) $(DESTDIR)$(SCRONTABS)
+- $(INSTALL_DIR) $(DESTDIR)$(CRONTABS)
+- $(INSTALL_DIR) $(DESTDIR)$(CRONSTAMPS)
+
+ clean: force
+ rm -f *.o $(PROTOS)
More information about the Erp5-report
mailing list