daemon processes and inetd superserver

8
1 Daemon Processes and inetd Superserver • Ways to start a daemon • syslogd daemon syslog function daemon_init function • inetd daemon daemon_inetd function

Upload: arabela-eddery

Post on 30-Dec-2015

47 views

Category:

Documents


1 download

DESCRIPTION

Daemon Processes and inetd Superserver. Ways to start a daemon syslogd daemon syslog function daemon_init function inetd daemon daemon_inetd function. Ways to Start a Daemon. Daemon: background process with no controlling terminal Ways to start a daemon: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Daemon Processes and inetd Superserver

1

Daemon Processes and inetd Superserver

• Ways to start a daemon

• syslogd daemon

• syslog function

• daemon_init function

• inetd daemon

• daemon_inetd function

Page 2: Daemon Processes and inetd Superserver

2

Ways to Start a Daemon

• Daemon: background process with no controlling terminal

• Ways to start a daemon:– system initialization script in /etc or /etc/rc (superuser

daemons: inetd, httpd, smtpd, syslogd, cron, etc.)– started by inetd superserver: telnet, ftp, etc.– executed on a regular basis by cron daemon– executed once, specified by at command, by cron– (re)started from user terminals

Page 3: Daemon Processes and inetd Superserver

3

syslog Daemon

• Upon startup, syslogd performs:– read configuration file /etc/syslog.conf which

specifies what to do with each log message (append to a log file or send to syslogd on another host)

– create a Unix domain socket bound to /var/run/log– create a UDP socket bound to port 514– open /dev/klog for kernel to input

• syslogd then – calls select for I/O multiplexing on the above 3 file

descriptors– reads log message and does action in conf

Page 4: Daemon Processes and inetd Superserver

4

syslog Function

#include <syslog.h>void syslog (int priority, const char *message, … );priority: level (0 ~ 7) and facility (type of process sending this message)(Upon the first call, syslog creates a Unix domain datagram socket and calls connect to /var/ run/log of syslogd.)

void openlog (const char *ident, int options, int facility);(can be called before the first call to syslog)void closelog (void);

Page 5: Daemon Processes and inetd Superserver

5

daemon_init Function• Sequence to daemonize a process in daemon_init

– fork and terminate the parent– setsid: child becomes process group leader with no

controlling terminal– ignore SIGHUP and fork again, terminate the first

child and leave the second child running (no longer a session leader)

– set error functions, change working directory, clear file mode creation mask, close open descriptors

– use syslogd for errors

Page 6: Daemon Processes and inetd Superserver

6

#include “unp.h”#include <syslog.h>#define MAXFD 64extern int daemon_proc; /* defined in error.c */void daemon_init (const char *pname, int facility){

int I;pid_t pid;if ( (pid = Fork ( ) ) ! = 0 ) exit (0); /* parent terminates */setsid ( ); /* becomes session leader */Signal (SIGHUP, SIG_IGN);if ( (pid = Fork ( ) ) ! = 0 ) exit (0); /*1st child terminates */daemon_proc = 1; /* for our err_xxx ( ) functions */chdir (“/”); /* change working directory */umask (0); /* clear our file mode mask */for ( i = 0; i < MAXFD; i++)

close (i);openlog (pname, LOG_PID, facility);

}

daemon_init Function

Page 7: Daemon Processes and inetd Superserver

7

inetd Daemondaemonize itself

read /etc/inetd.conf

socket ( )

bind ( )

listen ( ) (if TCP socket)

select ( ) for readability

accept ( ) (if TCP socket)

fork ( )

close connectedsocket (if TCP)

close all descriptorsother than socket

dup socket todescriptors 0, 1, 2;

close socket

setgid ( )setuid ( )

(if uer not roor)

exec ( ) serverparentchild

for each service listed in/etc/inetd.conf

Page 8: Daemon Processes and inetd Superserver

8

Daytime Server as a Daemon Invoked by inetd

• Two major changes:– all socket creation code (tcp_listen, accept) is

gone (these steps are done by inetd)– infinite for loop is gone (the server is invoked

once per client connection)