Re: syslogd in foreground
On Fri, Jun 12, 2015 at 10:30:18AM -0600, Todd C. Miller wrote: I need a syslogd running in foreground for a project. FreeBSD also uses the option -F for that. I don't have any objection to that. A few comments inline. Theo convinced me that this feature does not make sense for OpenBSD. Why move the close(lockfd) here? I wanted both places were we close the lockpipe in a consistent order. Now I think we should compare the fd with 2 in both places to have the same level of paranoia as with nullfd a few lines below. ok for this part? Since daemonize is not a word, how about something like: Run in the foreground instead of disassociating from the controlling terminal and running as a background daemon. Thanks for your input. bluhm Index: usr.sbin/syslogd/privsep.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/privsep.c,v retrieving revision 1.51 diff -u -p -r1.51 privsep.c --- usr.sbin/syslogd/privsep.c 19 Jan 2015 16:40:49 - 1.51 +++ usr.sbin/syslogd/privsep.c 12 Jun 2015 18:41:07 - @@ -151,10 +151,11 @@ priv_init(char *conf, int numeric, int l } if (!Debug) { - close(lockfd); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); + if (lockfd 2) + close(lockfd); } if (nullfd 2) close(nullfd); Index: usr.sbin/syslogd/syslogd.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.162 diff -u -p -r1.162 syslogd.c --- usr.sbin/syslogd/syslogd.c 12 Jun 2015 00:54:28 - 1.162 +++ usr.sbin/syslogd/syslogd.c 12 Jun 2015 18:40:30 - @@ -632,7 +632,8 @@ main(int argc, char *argv[]) dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); - close(lockpipe[1]); + if (lockpipe[1] 2) + close(lockpipe[1]); } if (nullfd 2) close(nullfd);
Re: syslogd in foreground
On Fri, 12 Jun 2015 20:43:33 +0200, Alexander Bluhm wrote: I wanted both places were we close the lockpipe in a consistent order. Now I think we should compare the fd with 2 in both places to have the same level of paranoia as with nullfd a few lines below. It is safer to close the lock fd first for the following reasons: 1) No need to check whether it might be in the range 0-2. 2) You free up a free fd slot in case resource limits are low. - todd
Re: syslogd in foreground
Todd C. Miller writes: @@ -85,6 +85,8 @@ and do not disassociate from the control Specify the pathname of an alternate configuration file; the default is .Pa /etc/syslog.conf . +.It Fl F +Do not daemonize and stay in foreground. Since daemonize is not a word, how about something like: Run in the foreground instead of disassociating from the controlling terminal and running as a background daemon. True, daemonize is not a word, but it is used very frequently in our documentation, and the meaning is pretty clear. $ grep daemonize /usr/share/man/man8/* | wc -l 27 -- Anthony J. Bentley
Re: syslogd in foreground
On Fri, Jun 12, 2015 at 12:53:34PM -0600, Todd C. Miller wrote: I wanted both places were we close the lockpipe in a consistent order. Now I think we should compare the fd with 2 in both places to have the same level of paranoia as with nullfd a few lines below. It is safer to close the lock fd first for the following reasons: 1) No need to check whether it might be in the range 0-2. 2) You free up a free fd slot in case resource limits are low. You are right. Then this is the correct diff. ok? bluhm Index: usr.sbin/syslogd/syslogd.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.162 diff -u -p -r1.162 syslogd.c --- usr.sbin/syslogd/syslogd.c 12 Jun 2015 00:54:28 - 1.162 +++ usr.sbin/syslogd/syslogd.c 12 Jun 2015 18:59:17 - @@ -629,10 +629,10 @@ main(int argc, char *argv[]) reply_text = ctl_reply + CTL_HDR_LEN; if (!Debug) { + close(lockpipe[1]); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); - close(lockpipe[1]); } if (nullfd 2) close(nullfd);
Re: syslogd in foreground
On Fri, 12 Jun 2015 21:02:47 +0200, Alexander Bluhm wrote: You are right. Then this is the correct diff. ok? OK millert@ - todd
Re: syslogd in foreground
On Fri, 12 Jun 2015 01:07:57 +0200, Alexander Bluhm wrote: I need a syslogd running in foreground for a project. FreeBSD also uses the option -F for that. I don't have any objection to that. A few comments inline. - todd Index: usr.sbin/syslogd/privsep.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/privsep.c,v retrieving revision 1.51 diff -u -p -r1.51 privsep.c --- usr.sbin/syslogd/privsep.c19 Jan 2015 16:40:49 - 1.51 +++ usr.sbin/syslogd/privsep.c11 Jun 2015 22:58:31 - @@ -151,10 +151,10 @@ priv_init(char *conf, int numeric, int l } if (!Debug) { - close(lockfd); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); + close(lockfd); Why move the close(lockfd) here? } if (nullfd 2) close(nullfd); Index: usr.sbin/syslogd/syslogd.8 === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.8,v retrieving revision 1.33 diff -u -p -r1.33 syslogd.8 --- usr.sbin/syslogd/syslogd.830 Jan 2015 14:09:49 - 1.33 +++ usr.sbin/syslogd/syslogd.811 Jun 2015 22:55:14 - @@ -39,7 +39,7 @@ .Sh SYNOPSIS .Nm syslogd .Bk -words -.Op Fl 46dhnuV +.Op Fl 46dFhnuV .Op Fl a Ar path .Op Fl C Ar CAfile .Op Fl f Ar config_file @@ -85,6 +85,8 @@ and do not disassociate from the control Specify the pathname of an alternate configuration file; the default is .Pa /etc/syslog.conf . +.It Fl F +Do not daemonize and stay in foreground. Since daemonize is not a word, how about something like: Run in the foreground instead of disassociating from the controlling terminal and running as a background daemon. .It Fl h Include the hostname when forwarding messages to a remote host. .It Fl m Ar mark_interval Index: usr.sbin/syslogd/syslogd.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.161 diff -u -p -r1.161 syslogd.c --- usr.sbin/syslogd/syslogd.c30 Mar 2015 09:21:42 - 1.161 +++ usr.sbin/syslogd/syslogd.c11 Jun 2015 22:59:10 - @@ -205,6 +205,7 @@ structfiled consfile; int nunix = 1; /* Number of Unix domain sockets requested */ char *path_unix[MAXUNIX] = { _PATH_LOG }; /* Paths to Unix domain sockets */ int Debug; /* debug flag */ +int Foreground; /* run in foreground, instead of daemonizing */ int Startup = 1;/* startup flag */ char LocalHostName[HOST_NAME_MAX+1]; /* our hostname */ char *LocalDomain; /* our local domain name */ @@ -328,7 +329,7 @@ main(int argc, char *argv[]) int ch, i; int lockpipe[2] = { -1, -1}, pair[2], nullfd, fd; - while ((ch = getopt(argc, argv, 46C:dhnuf:m:p:a:s:V)) != -1) + while ((ch = getopt(argc, argv, 46C:dhnuf:Fm:p:a:s:V)) != -1) switch (ch) { case '4': /* disable IPv6 */ IPv4Only = 1; @@ -347,6 +348,9 @@ main(int argc, char *argv[]) case 'f': /* configuration file */ ConfFile = optarg; break; + case 'F': /* foreground */ + Foreground = 1; + break; case 'h': /* RFC 3164 hostnames */ IncludeHostname = 1; break; @@ -557,7 +561,7 @@ main(int argc, char *argv[]) tzset(); - if (!Debug) { + if (!Debug !Foreground) { char c; pipe(lockpipe); @@ -969,7 +973,7 @@ usage(void) { (void)fprintf(stderr, - usage: syslogd [-46dhnuV] [-a path] [-C CAfile] [-f config_file]\n + usage: syslogd [-46dFhnuV] [-a path] [-C CAfile] [-f config_file]\ n [-m mark_interval] [-p log_socket] [-s reporting_so cket]\n); exit(1); }
Re: syslogd in foreground
Alexander Bluhm(alexander.bl...@gmx.net) on 2015.06.12 01:07:57 +0200: Hi, I need a syslogd running in foreground for a project. FreeBSD also uses the option -F for that. Do we want this feature in OpenBSD? i dont see why not, and -d does obviously too much. -F is fine, nobody else has another flag ok? ok. maybe the manpage should use the same wording as for -d: do not disassociate from the controlling terminal? bluhm Index: usr.sbin/syslogd/privsep.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/privsep.c,v retrieving revision 1.51 diff -u -p -r1.51 privsep.c --- usr.sbin/syslogd/privsep.c19 Jan 2015 16:40:49 - 1.51 +++ usr.sbin/syslogd/privsep.c11 Jun 2015 22:58:31 - @@ -151,10 +151,10 @@ priv_init(char *conf, int numeric, int l } if (!Debug) { - close(lockfd); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); + close(lockfd); } if (nullfd 2) close(nullfd); Index: usr.sbin/syslogd/syslogd.8 === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.8,v retrieving revision 1.33 diff -u -p -r1.33 syslogd.8 --- usr.sbin/syslogd/syslogd.830 Jan 2015 14:09:49 - 1.33 +++ usr.sbin/syslogd/syslogd.811 Jun 2015 22:55:14 - @@ -39,7 +39,7 @@ .Sh SYNOPSIS .Nm syslogd .Bk -words -.Op Fl 46dhnuV +.Op Fl 46dFhnuV .Op Fl a Ar path .Op Fl C Ar CAfile .Op Fl f Ar config_file @@ -85,6 +85,8 @@ and do not disassociate from the control Specify the pathname of an alternate configuration file; the default is .Pa /etc/syslog.conf . +.It Fl F +Do not daemonize and stay in foreground. .It Fl h Include the hostname when forwarding messages to a remote host. .It Fl m Ar mark_interval Index: usr.sbin/syslogd/syslogd.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.161 diff -u -p -r1.161 syslogd.c --- usr.sbin/syslogd/syslogd.c30 Mar 2015 09:21:42 - 1.161 +++ usr.sbin/syslogd/syslogd.c11 Jun 2015 22:59:10 - @@ -205,6 +205,7 @@ structfiled consfile; int nunix = 1; /* Number of Unix domain sockets requested */ char *path_unix[MAXUNIX] = { _PATH_LOG }; /* Paths to Unix domain sockets */ int Debug; /* debug flag */ +int Foreground; /* run in foreground, instead of daemonizing */ int Startup = 1;/* startup flag */ char LocalHostName[HOST_NAME_MAX+1]; /* our hostname */ char *LocalDomain; /* our local domain name */ @@ -328,7 +329,7 @@ main(int argc, char *argv[]) int ch, i; int lockpipe[2] = { -1, -1}, pair[2], nullfd, fd; - while ((ch = getopt(argc, argv, 46C:dhnuf:m:p:a:s:V)) != -1) + while ((ch = getopt(argc, argv, 46C:dhnuf:Fm:p:a:s:V)) != -1) switch (ch) { case '4': /* disable IPv6 */ IPv4Only = 1; @@ -347,6 +348,9 @@ main(int argc, char *argv[]) case 'f': /* configuration file */ ConfFile = optarg; break; + case 'F': /* foreground */ + Foreground = 1; + break; case 'h': /* RFC 3164 hostnames */ IncludeHostname = 1; break; @@ -557,7 +561,7 @@ main(int argc, char *argv[]) tzset(); - if (!Debug) { + if (!Debug !Foreground) { char c; pipe(lockpipe); @@ -969,7 +973,7 @@ usage(void) { (void)fprintf(stderr, - usage: syslogd [-46dhnuV] [-a path] [-C CAfile] [-f config_file]\n + usage: syslogd [-46dFhnuV] [-a path] [-C CAfile] [-f config_file]\n [-m mark_interval] [-p log_socket] [-s reporting_socket]\n); exit(1); } --
syslogd in foreground
Hi, I need a syslogd running in foreground for a project. FreeBSD also uses the option -F for that. Do we want this feature in OpenBSD? ok? bluhm Index: usr.sbin/syslogd/privsep.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/privsep.c,v retrieving revision 1.51 diff -u -p -r1.51 privsep.c --- usr.sbin/syslogd/privsep.c 19 Jan 2015 16:40:49 - 1.51 +++ usr.sbin/syslogd/privsep.c 11 Jun 2015 22:58:31 - @@ -151,10 +151,10 @@ priv_init(char *conf, int numeric, int l } if (!Debug) { - close(lockfd); dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); + close(lockfd); } if (nullfd 2) close(nullfd); Index: usr.sbin/syslogd/syslogd.8 === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.8,v retrieving revision 1.33 diff -u -p -r1.33 syslogd.8 --- usr.sbin/syslogd/syslogd.8 30 Jan 2015 14:09:49 - 1.33 +++ usr.sbin/syslogd/syslogd.8 11 Jun 2015 22:55:14 - @@ -39,7 +39,7 @@ .Sh SYNOPSIS .Nm syslogd .Bk -words -.Op Fl 46dhnuV +.Op Fl 46dFhnuV .Op Fl a Ar path .Op Fl C Ar CAfile .Op Fl f Ar config_file @@ -85,6 +85,8 @@ and do not disassociate from the control Specify the pathname of an alternate configuration file; the default is .Pa /etc/syslog.conf . +.It Fl F +Do not daemonize and stay in foreground. .It Fl h Include the hostname when forwarding messages to a remote host. .It Fl m Ar mark_interval Index: usr.sbin/syslogd/syslogd.c === RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v retrieving revision 1.161 diff -u -p -r1.161 syslogd.c --- usr.sbin/syslogd/syslogd.c 30 Mar 2015 09:21:42 - 1.161 +++ usr.sbin/syslogd/syslogd.c 11 Jun 2015 22:59:10 - @@ -205,6 +205,7 @@ struct filed consfile; intnunix = 1; /* Number of Unix domain sockets requested */ char *path_unix[MAXUNIX] = { _PATH_LOG }; /* Paths to Unix domain sockets */ intDebug; /* debug flag */ +intForeground; /* run in foreground, instead of daemonizing */ intStartup = 1;/* startup flag */ char LocalHostName[HOST_NAME_MAX+1]; /* our hostname */ char *LocalDomain; /* our local domain name */ @@ -328,7 +329,7 @@ main(int argc, char *argv[]) int ch, i; int lockpipe[2] = { -1, -1}, pair[2], nullfd, fd; - while ((ch = getopt(argc, argv, 46C:dhnuf:m:p:a:s:V)) != -1) + while ((ch = getopt(argc, argv, 46C:dhnuf:Fm:p:a:s:V)) != -1) switch (ch) { case '4': /* disable IPv6 */ IPv4Only = 1; @@ -347,6 +348,9 @@ main(int argc, char *argv[]) case 'f': /* configuration file */ ConfFile = optarg; break; + case 'F': /* foreground */ + Foreground = 1; + break; case 'h': /* RFC 3164 hostnames */ IncludeHostname = 1; break; @@ -557,7 +561,7 @@ main(int argc, char *argv[]) tzset(); - if (!Debug) { + if (!Debug !Foreground) { char c; pipe(lockpipe); @@ -969,7 +973,7 @@ usage(void) { (void)fprintf(stderr, - usage: syslogd [-46dhnuV] [-a path] [-C CAfile] [-f config_file]\n + usage: syslogd [-46dFhnuV] [-a path] [-C CAfile] [-f config_file]\n [-m mark_interval] [-p log_socket] [-s reporting_socket]\n); exit(1); }