If a DB does not already exist, ipropd-slave will use the compiled default, which is not necessarily what is desired or configured in `[kdc]`. This change makes `hdb_default_db()` return the first dbanme in the `[kdc]` configuration, falling back on `HDB_DEFAULT_DB`. Also, this adds a `--database` option to `ipropd-slave`.
		
			
				
	
	
		
			209 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" $Id$
 | 
						|
.\"
 | 
						|
.\" Copyright (c) 2005 Kungliga Tekniska Högskolan
 | 
						|
.\" (Royal Institute of Technology, Stockholm, Sweden).
 | 
						|
.\" All rights reserved.
 | 
						|
.\"
 | 
						|
.\" Redistribution and use in source and binary forms, with or without
 | 
						|
.\" modification, are permitted provided that the following conditions
 | 
						|
.\" are met:
 | 
						|
.\"
 | 
						|
.\" 1. Redistributions of source code must retain the above copyright
 | 
						|
.\"    notice, this list of conditions and the following disclaimer.
 | 
						|
.\"
 | 
						|
.\" 2. Redistributions in binary form must reproduce the above copyright
 | 
						|
.\"    notice, this list of conditions and the following disclaimer in the
 | 
						|
.\"    documentation and/or other materials provided with the distribution.
 | 
						|
.\"
 | 
						|
.\" 3. Neither the name of the Institute nor the names of its contributors
 | 
						|
.\"    may be used to endorse or promote products derived from this software
 | 
						|
.\"    without specific prior written permission.
 | 
						|
.\"
 | 
						|
.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 | 
						|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
.\" SUCH DAMAGE.
 | 
						|
.\"
 | 
						|
.Dd May 24, 2005
 | 
						|
.Dt IPROP 8
 | 
						|
.Os
 | 
						|
.Sh NAME
 | 
						|
.Nm iprop ,
 | 
						|
.Nm ipropd-master ,
 | 
						|
.Nm ipropd-slave
 | 
						|
.Nd propagate transactions from a Heimdal Kerberos master KDC to slave KDCs
 | 
						|
.Sh SYNOPSIS
 | 
						|
.Nm ipropd-master
 | 
						|
.Oo Fl c Ar string \*(Ba Xo
 | 
						|
.Fl Fl config-file= Ns Ar string
 | 
						|
.Xc
 | 
						|
.Oc
 | 
						|
.Oo Fl r Ar string \*(Ba Xo
 | 
						|
.Fl Fl realm= Ns Ar string
 | 
						|
.Xc
 | 
						|
.Oc
 | 
						|
.Oo Fl k Ar kspec \*(Ba Xo
 | 
						|
.Fl Fl keytab= Ns Ar kspec
 | 
						|
.Xc
 | 
						|
.Oc
 | 
						|
.Oo Fl d Ar file \*(Ba Xo
 | 
						|
.Fl Fl database= Ns Ar file
 | 
						|
.Xc
 | 
						|
.Oc
 | 
						|
.Op Fl Fl slave-stats-file= Ns Ar file
 | 
						|
.Op Fl Fl time-missing= Ns Ar time
 | 
						|
.Op Fl Fl time-gone= Ns Ar time
 | 
						|
.Op Fl Fl detach
 | 
						|
.Op Fl Fl version
 | 
						|
.Op Fl Fl help
 | 
						|
.Nm ipropd-slave
 | 
						|
.Oo Fl c Ar string \*(Ba Xo Fl Fl config-file= Ns Ar string Xc Oc
 | 
						|
.Oo Fl r Ar string \*(Ba Xo Fl Fl realm= Ns Ar string Xc Oc
 | 
						|
.Oo Fl d Ar file \*(Ba Xo Fl Fl database= Ns Ar file Xc Oc
 | 
						|
.Oo Fl k Ar kspec \*(Ba Xo Fl Fl keytab= Ns Ar kspec Xc Oc
 | 
						|
.Op Fl Fl statusfile= Ns Ar file
 | 
						|
.Op Fl Fl hostname= Ns Ar hostname
 | 
						|
.Op Fl Fl port= Ns Ar port
 | 
						|
.Op Fl Fl time-lost= Ns Ar time
 | 
						|
.Op Fl Fl async-hdb
 | 
						|
.Op Fl Fl detach
 | 
						|
.Op Fl Fl version
 | 
						|
.Op Fl Fl help
 | 
						|
.Ar master
 | 
						|
.Sh DESCRIPTION
 | 
						|
.Nm ipropd-master
 | 
						|
is used to propagate changes to a Heimdal Kerberos database from the
 | 
						|
master Kerberos server on which it runs to slave Kerberos servers
 | 
						|
running
 | 
						|
.Nm ipropd-slave .
 | 
						|
.Pp
 | 
						|
The slaves are specified by the contents of the
 | 
						|
.Pa slaves
 | 
						|
file in the KDC's database directory, e.g.\&
 | 
						|
.Pa /var/heimdal/slaves .
 | 
						|
This has principals one per-line of the form
 | 
						|
.Dl iprop/ Ns Ar slave Ns @ Ns Ar REALM
 | 
						|
where
 | 
						|
.Ar slave
 | 
						|
is the hostname of the slave server in the given
 | 
						|
.Ar REALM ,
 | 
						|
e.g.\&
 | 
						|
.Dl iprop/kerberos-1.example.com@EXAMPLE.COM
 | 
						|
On a slave, the argument
 | 
						|
.Fa master
 | 
						|
specifies the hostname of the master server from which to receive updates.
 | 
						|
.Pp
 | 
						|
In contrast to
 | 
						|
.Xr hprop 8 ,
 | 
						|
which sends the whole database to the slaves regularly,
 | 
						|
.Nm
 | 
						|
normally sends only the changes as they happen on the master.
 | 
						|
The master keeps track of all the changes by assigning a version
 | 
						|
number to every transaction to the database.
 | 
						|
The slaves know which was the latest version they saw, and in this
 | 
						|
way it can be determined if they are in sync or not.
 | 
						|
A log of all the transactions is kept on the master.
 | 
						|
When a slave is at an older version than the oldest one in the log,
 | 
						|
the whole database has to be sent.
 | 
						|
.Pp
 | 
						|
The log of transactions is also used to implement a two-phase commit
 | 
						|
(with roll-forward for recovery) method of updating the HDB.
 | 
						|
Transactions are first recorded in the log, then in the HDB, then
 | 
						|
the log is updated to mark the transaction as committed.
 | 
						|
.Pp
 | 
						|
The changes are propagated over a secure channel (on port 2121 by
 | 
						|
default).
 | 
						|
This should normally be defined as
 | 
						|
.Dq iprop/tcp
 | 
						|
in
 | 
						|
.Pa /etc/services
 | 
						|
or another source of the services database.
 | 
						|
The master and slaves
 | 
						|
must each have access to a keytab with keys for the
 | 
						|
.Nm iprop
 | 
						|
service principal on the local host.
 | 
						|
.Pp
 | 
						|
There is a keep-alive feature logged in the master's
 | 
						|
.Pa slave-stats
 | 
						|
file (e.g.\&
 | 
						|
.Pa /var/heimdal/slave-stats ) .
 | 
						|
.Pp
 | 
						|
Note that hierarchical replication is supported by running
 | 
						|
an
 | 
						|
.Nm ipropd-master
 | 
						|
on the same KDC as an
 | 
						|
.Nm ipropd-slave .
 | 
						|
.Pp
 | 
						|
Supported options for
 | 
						|
.Nm ipropd-master :
 | 
						|
.Bl -tag -width Ds
 | 
						|
.It Fl c Ar string , Fl Fl config-file= Ns Ar string
 | 
						|
.It Fl r Ar string , Fl Fl realm= Ns Ar string
 | 
						|
.It Fl k Ar kspec , Fl Fl keytab= Ns Ar kspec
 | 
						|
Keytab for authenticating
 | 
						|
.Nm ipropd-slave
 | 
						|
clients.
 | 
						|
.It Fl d Ar file , Fl Fl database= Ns Ar file
 | 
						|
Database (default per KDC)
 | 
						|
.It Fl Fl slave-stats-file= Ns Ar file
 | 
						|
File for slave status information.
 | 
						|
.It Fl Fl time-missing= Ns Ar time
 | 
						|
Time before slave is polled for presence (default 2 min).
 | 
						|
.It Fl Fl time-gone= Ns Ar time
 | 
						|
Time of inactivity after which a slave is considered gone (default 5 min).
 | 
						|
.It Fl Fl detach
 | 
						|
Detach from console.
 | 
						|
.It Fl Fl version
 | 
						|
.It Fl Fl help
 | 
						|
.El
 | 
						|
.Pp
 | 
						|
Supported options for
 | 
						|
.Nm ipropd-slave :
 | 
						|
.Bl -tag -width Ds
 | 
						|
.It Fl c Ar string , Fl Fl config-file= Ns Ar string
 | 
						|
.It Fl r Ar string , Fl Fl realm= Ns Ar string
 | 
						|
.It Fl d Ar file , Fl Fl database= Ns Ar file
 | 
						|
Database (default per KDC)
 | 
						|
.It Fl k Ar kspec , Fl Fl keytab= Ns Ar kspec
 | 
						|
Keytab with client credentials for authenticating to
 | 
						|
.Nm ipropd-master .
 | 
						|
.It Fl Fl status-file= Ns Ar file
 | 
						|
.It Fl Fl hostname= Ns Ar hostname
 | 
						|
Hostname for client principal if different from actual hostname.
 | 
						|
.It Fl Fl port= Ns Ar port
 | 
						|
.It Fl Fl time-lost= Ns Ar time
 | 
						|
time before server is considered lost (default 5 min)
 | 
						|
.It Fl Fl async-hdb
 | 
						|
Use asynchronous writes.
 | 
						|
This is very useful for very busy sites or sites with very large
 | 
						|
HDBs.
 | 
						|
.It Fl Fl detach
 | 
						|
Detach from console.
 | 
						|
.It Fl Fl version
 | 
						|
.It Fl Fl help
 | 
						|
.El
 | 
						|
Time arguments for the relevant options above may be specified in forms
 | 
						|
like 5 min, 300 s, or simply a number of seconds.
 | 
						|
.Sh FILES
 | 
						|
.Pa slaves ,
 | 
						|
.Pa slave-stats
 | 
						|
in the database directory.
 | 
						|
.Pa ipropd-master.pid ,
 | 
						|
.Pa ipropd-slave.pid
 | 
						|
in the database directory, or in the directory named by the
 | 
						|
.Ev HEIM_PIDFILE_DIR
 | 
						|
environment variable.
 | 
						|
.Sh SEE ALSO
 | 
						|
.Xr krb5.conf 5 ,
 | 
						|
.Xr hprop 8 ,
 | 
						|
.Xr hpropd 8 ,
 | 
						|
.Xr iprop-log 8 ,
 | 
						|
.Xr kdc 8 .
 |