summaryrefslogtreecommitdiff
path: root/src/man
diff options
context:
space:
mode:
Diffstat (limited to 'src/man')
-rw-r--r--src/man/Makefile.in144
-rw-r--r--src/man/README4
-rw-r--r--src/man/deps1
-rw-r--r--src/man/dot.k5identity.51
-rw-r--r--src/man/dot.k5login.51
-rw-r--r--src/man/k5identity.man103
-rw-r--r--src/man/k5login.man96
-rw-r--r--src/man/k5srvutil.man91
-rw-r--r--src/man/kadm5.acl.man267
-rw-r--r--src/man/kadmin.local.81
-rw-r--r--src/man/kadmin.man1072
-rw-r--r--src/man/kadmind.man150
-rw-r--r--src/man/kdb5_ldap_util.man549
-rw-r--r--src/man/kdb5_util.man557
-rw-r--r--src/man/kdc.conf.man1196
-rw-r--r--src/man/kdestroy.man97
-rw-r--r--src/man/kinit.man258
-rw-r--r--src/man/klist.man163
-rw-r--r--src/man/kpasswd.man64
-rw-r--r--src/man/kprop.man84
-rw-r--r--src/man/kpropd.man161
-rw-r--r--src/man/kproplog.man117
-rw-r--r--src/man/krb5-config.man141
-rw-r--r--src/man/krb5.conf.man1462
-rw-r--r--src/man/krb5kdc.man155
-rw-r--r--src/man/ksu.man461
-rw-r--r--src/man/kswitch.man79
-rw-r--r--src/man/ktutil.man173
-rw-r--r--src/man/kvno.man109
-rw-r--r--src/man/sclient.man50
-rw-r--r--src/man/sserver.man194
31 files changed, 8001 insertions, 0 deletions
diff --git a/src/man/Makefile.in b/src/man/Makefile.in
new file mode 100644
index 000000000000..4bc670badf6c
--- /dev/null
+++ b/src/man/Makefile.in
@@ -0,0 +1,144 @@
+mydir=man
+BUILDTOP=$(REL)..
+
+SPHINX_BUILD=sphinx-build
+GROFF=@GROFF@
+GROFF_MAN=$(GROFF) -mtty-char -Tascii -mandoc -c
+localstatedir=@localstatedir@
+runstatedir=@runstatedir@
+sysconfdir=@sysconfdir@
+DEFCCNAME=@DEFCCNAME@
+DEFKTNAME=@DEFKTNAME@
+DEFCKTNAME=@DEFCKTNAME@
+
+MANSUBS=k5identity.sub k5login.sub k5srvutil.sub kadm5.acl.sub kadmin.sub \
+ kadmind.sub kdb5_ldap_util.sub kdb5_util.sub kdc.conf.sub \
+ kdestroy.sub kinit.sub klist.sub kpasswd.sub kprop.sub kpropd.sub \
+ kproplog.sub krb5.conf.sub krb5-config.sub krb5kdc.sub ksu.sub \
+ kswitch.sub ktutil.sub kvno.sub sclient.sub sserver.sub
+
+docsrc=$(top_srcdir)/../doc
+
+# Update checked-in man pages from RST sources in the top-level doc
+# directory. This can be done from an unconfigured tree with:
+# make -f Makefile.in top_srcdir=.. srcdir=. man
+# make -f Makefile.in clean
+# The sed command deletes some trailing whitespace that the docutils
+# manpage writer outputs near the end of its output files.
+man: $(docsrc)/version.py
+ rm -rf rst_man
+ $(SPHINX_BUILD) -q -t mansubs -b man $(docsrc) rst_man
+ for f in rst_man/*.[0-9]; do \
+ name=`echo $$f | sed -e 's|^.*/\(.*\)\.[0-9]$$|\1|'`; \
+ sed -e '/^\.\\" $$/d' \
+ -e '/^\.\\"/s/reStructeredText/reStructuredText/' \
+ $$f > $(srcdir)/$$name.man; \
+ done
+
+$(docsrc)/version.py: $(top_srcdir)/patchlevel.h
+ (cd $(BUILDTOP)/doc && make version.py)
+
+.SUFFIXES: .man .sub
+
+.man.sub:
+ sed -e 's|@BINDIR@|$(CLIENT_BINDIR)|g' \
+ -e 's|@SBINDIR@|$(SERVER_BINDIR)|g' \
+ -e 's|@LIBDIR@|$(KRB5_LIBDIR)|g' \
+ -e 's|@LOCALSTATEDIR@|$(localstatedir)|g' \
+ -e 's|@RUNSTATEDIR@|$(runstatedir)|g' \
+ -e 's|@SYSCONFDIR@|$(sysconfdir)|g' \
+ -e 's|@CCNAME@|$(DEFCCNAME)|g' \
+ -e 's|@KTNAME@|$(DEFKTNAME)|g' \
+ -e 's|@CKTNAME@|$(DEFCKTNAME)|g' $? > $@
+
+all: $(MANSUBS)
+
+clean:
+ rm -rf $(MANSUBS) rst_man
+
+install: install-clientman install-fileman install-adminman install-serverman
+
+install-catman: install-clientcat install-filecat install-admincat install-servercat
+
+install-clientman:
+ $(INSTALL_DATA) k5srvutil.sub $(DESTDIR)$(CLIENT_MANDIR)/k5srvutil.1
+ $(INSTALL_DATA) kadmin.sub $(DESTDIR)$(CLIENT_MANDIR)/kadmin.1
+ $(INSTALL_DATA) kdestroy.sub $(DESTDIR)$(CLIENT_MANDIR)/kdestroy.1
+ $(INSTALL_DATA) kinit.sub $(DESTDIR)$(CLIENT_MANDIR)/kinit.1
+ $(INSTALL_DATA) klist.sub $(DESTDIR)$(CLIENT_MANDIR)/klist.1
+ $(INSTALL_DATA) kpasswd.sub $(DESTDIR)$(CLIENT_MANDIR)/kpasswd.1
+ $(INSTALL_DATA) krb5-config.sub $(DESTDIR)$(CLIENT_MANDIR)/krb5-config.1
+ $(INSTALL_DATA) ksu.sub $(DESTDIR)$(CLIENT_MANDIR)/ksu.1
+ $(INSTALL_DATA) kswitch.sub $(DESTDIR)$(CLIENT_MANDIR)/kswitch.1
+ $(INSTALL_DATA) ktutil.sub $(DESTDIR)$(CLIENT_MANDIR)/ktutil.1
+ $(INSTALL_DATA) kvno.sub $(DESTDIR)$(CLIENT_MANDIR)/kvno.1
+ $(INSTALL_DATA) sclient.sub $(DESTDIR)$(CLIENT_MANDIR)/sclient.1
+
+install-fileman:
+ $(INSTALL_DATA) $(srcdir)/dot.k5identity.5 \
+ $(DESTDIR)$(FILE_MANDIR)/.k5identity.5
+ $(INSTALL_DATA) k5identity.sub $(DESTDIR)$(FILE_MANDIR)/k5identity.5
+ $(INSTALL_DATA) $(srcdir)/dot.k5login.5 \
+ $(DESTDIR)$(FILE_MANDIR)/.k5login.5
+ $(INSTALL_DATA) k5login.sub $(DESTDIR)$(FILE_MANDIR)/k5login.5
+ $(INSTALL_DATA) kadm5.acl.sub $(DESTDIR)$(FILE_MANDIR)/kadm5.acl.5
+ $(INSTALL_DATA) kdc.conf.sub $(DESTDIR)$(FILE_MANDIR)/kdc.conf.5
+ $(INSTALL_DATA) krb5.conf.sub $(DESTDIR)$(FILE_MANDIR)/krb5.conf.5
+
+install-adminman:
+ $(INSTALL_DATA) $(srcdir)/kadmin.local.8 \
+ $(DESTDIR)$(ADMIN_MANDIR)/kadmin.local.8
+ $(INSTALL_DATA) kdb5_ldap_util.sub \
+ $(DESTDIR)$(ADMIN_MANDIR)/kdb5_ldap_util.8
+ $(INSTALL_DATA) kdb5_util.sub $(DESTDIR)$(ADMIN_MANDIR)/kdb5_util.8
+ $(INSTALL_DATA) kprop.sub $(DESTDIR)$(ADMIN_MANDIR)/kprop.8
+ $(INSTALL_DATA) kproplog.sub $(DESTDIR)$(ADMIN_MANDIR)/kproplog.8
+
+install-serverman:
+ $(INSTALL_DATA) kadmind.sub $(DESTDIR)$(SERVER_MANDIR)/kadmind.8
+ $(INSTALL_DATA) kpropd.sub $(DESTDIR)$(SERVER_MANDIR)/kpropd.8
+ $(INSTALL_DATA) krb5kdc.sub $(DESTDIR)$(SERVER_MANDIR)/krb5kdc.8
+ $(INSTALL_DATA) sserver.sub $(DESTDIR)$(SERVER_MANDIR)/sserver.8
+
+install-clientcat:
+ $(GROFF_MAN) k5srvutil.sub > $(DESTDIR)$(CLIENT_CATDIR)/k5srvutil.1
+ $(GROFF_MAN) kadmin.sub > $(DESTDIR)$(CLIENT_CATDIR)/kadmin.1
+ $(GROFF_MAN) kdestroy.sub > $(DESTDIR)$(CLIENT_CATDIR)/kdestroy.1
+ $(GROFF_MAN) kinit.sub > $(DESTDIR)$(CLIENT_CATDIR)/kinit.1
+ $(GROFF_MAN) klist.sub > $(DESTDIR)$(CLIENT_CATDIR)/klist.1
+ $(GROFF_MAN) kpasswd.sub > $(DESTDIR)$(CLIENT_CATDIR)/kpasswd.1
+ $(GROFF_MAN) krb5-config.sub > $(DESTDIR)$(CLIENT_CATDIR)/krb5-config.1
+ $(GROFF_MAN) ksu.sub > $(DESTDIR)$(CLIENT_CATDIR)/ksu.1
+ $(GROFF_MAN) kswitch.sub > $(DESTDIR)$(CLIENT_CATDIR)/kswitch.1
+ $(GROFF_MAN) ktutil.sub > $(DESTDIR)$(CLIENT_CATDIR)/ktutil.1
+ $(GROFF_MAN) kvno.sub > $(DESTDIR)$(CLIENT_CATDIR)/kvno.1
+ $(GROFF_MAN) sclient.sub > $(DESTDIR)$(CLIENT_CATDIR)/sclient.1
+
+install-filecat:
+ $(GROFF_MAN) k5identity.sub > $(DESTDIR)$(FILE_CATDIR)/k5identity.5
+ ($(RM) $(DESTDIR)$(FILE_CATDIR)/.k5identity.5; \
+ $(LN_S) $(FILE_CATDIR)/k5identity.5 \
+ $(DESTDIR)$(FILE_CATDIR)/.k5identity.5)
+ $(GROFF_MAN) k5login.sub > $(DESTDIR)$(FILE_CATDIR)/k5login.5
+ ($(RM) $(DESTDIR)$(FILE_CATDIR)/.k5login.5; \
+ $(LN_S) $(FILE_CATDIR)/k5login.5 \
+ $(DESTDIR)$(FILE_CATDIR)/.k5login.5)
+ $(GROFF_MAN) kadm5.acl.sub > $(DESTDIR)$(FILE_CATDIR)/kadm5.acl.5
+ $(GROFF_MAN) kdc.conf.sub > $(DESTDIR)$(FILE_CATDIR)/kdc.conf.5
+ $(GROFF_MAN) krb5.conf.sub > $(DESTDIR)$(FILE_CATDIR)/krb5.conf.5
+
+install-admincat:
+ ($(RM) $(DESTDIR)$(ADMIN_CATDIR)/kadmin.local.8; \
+ $(LN_S) $(CLIENT_CATDIR)/kadmin.1 \
+ $(DESTDIR)$(ADMIN_CATDIR)/kadmin.local.8)
+ $(GROFF_MAN) kdb5_ldap_util.sub > \
+ $(DESTDIR)$(ADMIN_CATDIR)/kdb5_ldap_util.8
+ $(GROFF_MAN) kdb5_util.sub > $(DESTDIR)$(ADMIN_CATDIR)/kdb5_util.8
+ $(GROFF_MAN) kprop.sub > $(DESTDIR)$(ADMIN_CATDIR)/kprop.8
+ $(GROFF_MAN) kproplog.sub > $(DESTDIR)$(ADMIN_CATDIR)/kproplog.8
+
+install-servercat:
+ $(GROFF_MAN) kadmind.sub > $(DESTDIR)$(SERVER_CATDIR)/kadmind.8
+ $(GROFF_MAN) kpropd.sub > $(DESTDIR)$(SERVER_CATDIR)/kpropd.8
+ $(GROFF_MAN) krb5kdc.sub > $(DESTDIR)$(SERVER_CATDIR)/krb5kdc.8
+ $(GROFF_MAN) sserver.sub > $(DESTDIR)$(SERVER_CATDIR)/sserver.8
diff --git a/src/man/README b/src/man/README
new file mode 100644
index 000000000000..3e81deb6b09b
--- /dev/null
+++ b/src/man/README
@@ -0,0 +1,4 @@
+The manual page files in this directory are generated from
+reStructuredText format from doc/. Edits made here will not
+survive a run of "make rstman" from the doc directory, except for the
+files that implement "shadow manpages".
diff --git a/src/man/deps b/src/man/deps
new file mode 100644
index 000000000000..2feac3c9d388
--- /dev/null
+++ b/src/man/deps
@@ -0,0 +1 @@
+# No dependencies here.
diff --git a/src/man/dot.k5identity.5 b/src/man/dot.k5identity.5
new file mode 100644
index 000000000000..8af572af1687
--- /dev/null
+++ b/src/man/dot.k5identity.5
@@ -0,0 +1 @@
+.so man5/k5identity.5
diff --git a/src/man/dot.k5login.5 b/src/man/dot.k5login.5
new file mode 100644
index 000000000000..60c82a4d88c8
--- /dev/null
+++ b/src/man/dot.k5login.5
@@ -0,0 +1 @@
+.so man5/k5login.5
diff --git a/src/man/k5identity.man b/src/man/k5identity.man
new file mode 100644
index 000000000000..48866b8e9521
--- /dev/null
+++ b/src/man/k5identity.man
@@ -0,0 +1,103 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "K5IDENTITY" "5" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+k5identity \- Kerberos V5 client principal selection rules
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH DESCRIPTION
+.sp
+The .k5identity file, which resides in a user\(aqs home directory,
+contains a list of rules for selecting a client principals based on
+the server being accessed. These rules are used to choose a
+credential cache within the cache collection when possible.
+.sp
+Blank lines and lines beginning with \fB#\fP are ignored. Each line has
+the form:
+.INDENT 0.0
+.INDENT 3.5
+\fIprincipal\fP \fIfield\fP=\fIvalue\fP ...
+.UNINDENT
+.UNINDENT
+.sp
+If the server principal meets all of the field constraints, then
+principal is chosen as the client principal. The following fields are
+recognized:
+.INDENT 0.0
+.TP
+.B \fBrealm\fP
+If the realm of the server principal is known, it is matched
+against \fIvalue\fP, which may be a pattern using shell wildcards.
+For host\-based server principals, the realm will generally only be
+known if there is a \fIdomain_realm\fP section in
+\fIkrb5.conf(5)\fP with a mapping for the hostname.
+.TP
+.B \fBservice\fP
+If the server principal is a host\-based principal, its service
+component is matched against \fIvalue\fP, which may be a pattern using
+shell wildcards.
+.TP
+.B \fBhost\fP
+If the server principal is a host\-based principal, its hostname
+component is converted to lower case and matched against \fIvalue\fP,
+which may be a pattern using shell wildcards.
+.sp
+If the server principal matches the constraints of multiple lines
+in the .k5identity file, the principal from the first matching
+line is used. If no line matches, credentials will be selected
+some other way, such as the realm heuristic or the current primary
+cache.
+.UNINDENT
+.SH EXAMPLE
+.sp
+The following example .k5identity file selects the client principal
+\fBalice@KRBTEST.COM\fP if the server principal is within that realm,
+the principal \fBalice/root@EXAMPLE.COM\fP if the server host is within
+a servers subdomain, and the principal \fBalice/mail@EXAMPLE.COM\fP when
+accessing the IMAP service on \fBmail.example.com\fP:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+alice@KRBTEST.COM realm=KRBTEST.COM
+alice/root@EXAMPLE.COM host=*.servers.example.com
+alice/mail@EXAMPLE.COM host=mail.example.com service=imap
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH SEE ALSO
+.sp
+kerberos(1), \fIkrb5.conf(5)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/k5login.man b/src/man/k5login.man
new file mode 100644
index 000000000000..f6a1706be8b6
--- /dev/null
+++ b/src/man/k5login.man
@@ -0,0 +1,96 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "K5LOGIN" "5" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+k5login \- Kerberos V5 acl file for host access
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH DESCRIPTION
+.sp
+The .k5login file, which resides in a user\(aqs home directory, contains
+a list of the Kerberos principals. Anyone with valid tickets for a
+principal in the file is allowed host access with the UID of the user
+in whose home directory the file resides. One common use is to place
+a .k5login file in root\(aqs home directory, thereby granting system
+administrators remote root access to the host via Kerberos.
+.SH EXAMPLES
+.sp
+Suppose the user \fBalice\fP had a .k5login file in her home directory
+containing just the following line:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+bob@FOOBAR.ORG
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This would allow \fBbob\fP to use Kerberos network applications, such as
+ssh(1), to access \fBalice\fP\(aqs account, using \fBbob\fP\(aqs Kerberos
+tickets. In a default configuration (with \fBk5login_authoritative\fP set
+to true in \fIkrb5.conf(5)\fP), this .k5login file would not let
+\fBalice\fP use those network applications to access her account, since
+she is not listed! With no .k5login file, or with \fBk5login_authoritative\fP
+set to false, a default rule would permit the principal \fBalice\fP in the
+machine\(aqs default realm to access the \fBalice\fP account.
+.sp
+Let us further suppose that \fBalice\fP is a system administrator.
+Alice and the other system administrators would have their principals
+in root\(aqs .k5login file on each host:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+alice@BLEEP.COM
+
+joeadmin/root@BLEEP.COM
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This would allow either system administrator to log in to these hosts
+using their Kerberos tickets instead of having to type the root
+password. Note that because \fBbob\fP retains the Kerberos tickets for
+his own principal, \fBbob@FOOBAR.ORG\fP, he would not have any of the
+privileges that require \fBalice\fP\(aqs tickets, such as root access to
+any of the site\(aqs hosts, or the ability to change \fBalice\fP\(aqs
+password.
+.SH SEE ALSO
+.sp
+kerberos(1)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/k5srvutil.man b/src/man/k5srvutil.man
new file mode 100644
index 000000000000..066a99118f3b
--- /dev/null
+++ b/src/man/k5srvutil.man
@@ -0,0 +1,91 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "K5SRVUTIL" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+k5srvutil \- host key table (keytab) manipulation utility
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBk5srvutil\fP \fIoperation\fP
+[\fB\-i\fP]
+[\fB\-f\fP \fIfilename\fP]
+[\fB\-e\fP \fIkeysalts\fP]
+.SH DESCRIPTION
+.sp
+k5srvutil allows an administrator to list keys currently in
+a keytab, to obtain new keys for a principal currently in a keytab,
+or to delete non\-current keys from a keytab.
+.sp
+\fIoperation\fP must be one of the following:
+.INDENT 0.0
+.TP
+.B \fBlist\fP
+Lists the keys in a keytab, showing version number and principal
+name.
+.TP
+.B \fBchange\fP
+Uses the kadmin protocol to update the keys in the Kerberos
+database to new randomly\-generated keys, and updates the keys in
+the keytab to match. If a key\(aqs version number doesn\(aqt match the
+version number stored in the Kerberos server\(aqs database, then the
+operation will fail. If the \fB\-i\fP flag is given, k5srvutil will
+prompt for confirmation before changing each key. If the \fB\-k\fP
+option is given, the old and new keys will be displayed.
+Ordinarily, keys will be generated with the default encryption
+types and key salts. This can be overridden with the \fB\-e\fP
+option. Old keys are retained in the keytab so that existing
+tickets continue to work, but \fBdelold\fP should be used after
+such tickets expire, to prevent attacks against the old keys.
+.TP
+.B \fBdelold\fP
+Deletes keys that are not the most recent version from the keytab.
+This operation should be used some time after a change operation
+to remove old keys, after existing tickets issued for the service
+have expired. If the \fB\-i\fP flag is given, then k5srvutil will
+prompt for confirmation for each principal.
+.TP
+.B \fBdelete\fP
+Deletes particular keys in the keytab, interactively prompting for
+each key.
+.UNINDENT
+.sp
+In all cases, the default keytab is used unless this is overridden by
+the \fB\-f\fP option.
+.sp
+k5srvutil uses the \fIkadmin(1)\fP program to edit the keytab in
+place.
+.SH SEE ALSO
+.sp
+\fIkadmin(1)\fP, \fIktutil(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kadm5.acl.man b/src/man/kadm5.acl.man
new file mode 100644
index 000000000000..9043775f84c6
--- /dev/null
+++ b/src/man/kadm5.acl.man
@@ -0,0 +1,267 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KADM5.ACL" "5" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kadm5.acl \- Kerberos ACL file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH DESCRIPTION
+.sp
+The Kerberos \fIkadmind(8)\fP daemon uses an Access Control List
+(ACL) file to manage access rights to the Kerberos database.
+For operations that affect principals, the ACL file also controls
+which principals can operate on which other principals.
+.sp
+The default location of the Kerberos ACL file is
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/kadm5.acl\fP unless this is overridden by the \fIacl_file\fP
+variable in \fIkdc.conf(5)\fP\&.
+.SH SYNTAX
+.sp
+Empty lines and lines starting with the sharp sign (\fB#\fP) are
+ignored. Lines containing ACL entries have the format:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+principal permissions [target_principal [restrictions] ]
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+Line order in the ACL file is important. The first matching entry
+will control access for an actor principal on a target principal.
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fIprincipal\fP
+(Partially or fully qualified Kerberos principal name.) Specifies
+the principal whose permissions are to be set.
+.sp
+Each component of the name may be wildcarded using the \fB*\fP
+character.
+.TP
+.B \fIpermissions\fP
+Specifies what operations may or may not be performed by a
+\fIprincipal\fP matching a particular entry. This is a string of one or
+more of the following list of characters or their upper\-case
+counterparts. If the character is \fIupper\-case\fP, then the operation
+is disallowed. If the character is \fIlower\-case\fP, then the operation
+is permitted.
+.TS
+center;
+|l|l|.
+_
+T{
+a
+T} T{
+[Dis]allows the addition of principals or policies
+T}
+_
+T{
+c
+T} T{
+[Dis]allows the changing of passwords for principals
+T}
+_
+T{
+d
+T} T{
+[Dis]allows the deletion of principals or policies
+T}
+_
+T{
+e
+T} T{
+[Dis]allows the extraction of principal keys
+T}
+_
+T{
+i
+T} T{
+[Dis]allows inquiries about principals or policies
+T}
+_
+T{
+l
+T} T{
+[Dis]allows the listing of all principals or policies
+T}
+_
+T{
+m
+T} T{
+[Dis]allows the modification of principals or policies
+T}
+_
+T{
+p
+T} T{
+[Dis]allows the propagation of the principal database (used in \fIincr_db_prop\fP)
+T}
+_
+T{
+s
+T} T{
+[Dis]allows the explicit setting of the key for a principal
+T}
+_
+T{
+x
+T} T{
+Short for admcilsp. All privileges (except \fBe\fP)
+T}
+_
+T{
+*
+T} T{
+Same as x.
+T}
+_
+.TE
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+The \fBextract\fP privilege is not included in the wildcard
+privilege; it must be explicitly assigned. This privilege
+allows the user to extract keys from the database, and must be
+handled with great care to avoid disclosure of important keys
+like those of the kadmin/* or krbtgt/* principals. The
+\fBlockdown_keys\fP principal attribute can be used to prevent
+key extraction from specific principals regardless of the
+granted privilege.
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fItarget_principal\fP
+(Optional. Partially or fully qualified Kerberos principal name.)
+Specifies the principal on which \fIpermissions\fP may be applied.
+Each component of the name may be wildcarded using the \fB*\fP
+character.
+.sp
+\fItarget_principal\fP can also include back\-references to \fIprincipal\fP,
+in which \fB*number\fP matches the corresponding wildcard in
+\fIprincipal\fP\&.
+.TP
+.B \fIrestrictions\fP
+(Optional) A string of flags. Allowed restrictions are:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B {+|\-}\fIflagname\fP
+flag is forced to the indicated value. The permissible flags
+are the same as those for the \fBdefault_principal_flags\fP
+variable in \fIkdc.conf(5)\fP\&.
+.TP
+.B \fI\-clearpolicy\fP
+policy is forced to be empty.
+.TP
+.B \fI\-policy pol\fP
+policy is forced to be \fIpol\fP\&.
+.TP
+.B \-{\fIexpire, pwexpire, maxlife, maxrenewlife\fP} \fItime\fP
+(\fIgetdate\fP string) associated value will be forced to
+MIN(\fItime\fP, requested value).
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The above flags act as restrictions on any add or modify operation
+which is allowed due to that ACL line.
+.UNINDENT
+.sp
+\fBWARNING:\fP
+.INDENT 0.0
+.INDENT 3.5
+If the kadmind ACL file is modified, the kadmind daemon needs to be
+restarted for changes to take effect.
+.UNINDENT
+.UNINDENT
+.SH EXAMPLE
+.sp
+Here is an example of a kadm5.acl file:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+*/admin@ATHENA.MIT.EDU * # line 1
+joeadmin@ATHENA.MIT.EDU ADMCIL # line 2
+joeadmin/*@ATHENA.MIT.EDU i */root@ATHENA.MIT.EDU # line 3
+*/root@ATHENA.MIT.EDU ci *1@ATHENA.MIT.EDU # line 4
+*/root@ATHENA.MIT.EDU l * # line 5
+sms@ATHENA.MIT.EDU x * \-maxlife 9h \-postdateable # line 6
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+(line 1) Any principal in the \fBATHENA.MIT.EDU\fP realm with
+an \fBadmin\fP instance has all administrative privileges.
+.sp
+(lines 1\-3) The user \fBjoeadmin\fP has all permissions with his
+\fBadmin\fP instance, \fBjoeadmin/admin@ATHENA.MIT.EDU\fP (matches line
+1). He has no permissions at all with his null instance,
+\fBjoeadmin@ATHENA.MIT.EDU\fP (matches line 2). His \fBroot\fP and other
+non\-\fBadmin\fP, non\-null instances (e.g., \fBextra\fP or \fBdbadmin\fP) have
+inquire permissions with any principal that has the instance \fBroot\fP
+(matches line 3).
+.sp
+(line 4) Any \fBroot\fP principal in \fBATHENA.MIT.EDU\fP can inquire
+or change the password of their null instance, but not any other
+null instance. (Here, \fB*1\fP denotes a back\-reference to the
+component matching the first wildcard in the actor principal.)
+.sp
+(line 5) Any \fBroot\fP principal in \fBATHENA.MIT.EDU\fP can generate
+the list of principals in the database, and the list of policies
+in the database. This line is separate from line 4, because list
+permission can only be granted globally, not to specific target
+principals.
+.sp
+(line 6) Finally, the Service Management System principal
+\fBsms@ATHENA.MIT.EDU\fP has all permissions, but any principal that it
+creates or modifies will not be able to get postdateable tickets or
+tickets with a life of longer than 9 hours.
+.SH SEE ALSO
+.sp
+\fIkdc.conf(5)\fP, \fIkadmind(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kadmin.local.8 b/src/man/kadmin.local.8
new file mode 100644
index 000000000000..00df30db6f9d
--- /dev/null
+++ b/src/man/kadmin.local.8
@@ -0,0 +1 @@
+.so man1/kadmin.1
diff --git a/src/man/kadmin.man b/src/man/kadmin.man
new file mode 100644
index 000000000000..5105eca28e76
--- /dev/null
+++ b/src/man/kadmin.man
@@ -0,0 +1,1072 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KADMIN" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kadmin \- Kerberos V5 database administration program
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkadmin\fP
+[\fB\-O\fP|\fB\-N\fP]
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-p\fP \fIprincipal\fP]
+[\fB\-q\fP \fIquery\fP]
+[[\fB\-c\fP \fIcache_name\fP]|[\fB\-k\fP [\fB\-t\fP \fIkeytab\fP]]|\fB\-n\fP]
+[\fB\-w\fP \fIpassword\fP]
+[\fB\-s\fP \fIadmin_server\fP[:\fIport\fP]]
+[command args...]
+.sp
+\fBkadmin.local\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-p\fP \fIprincipal\fP]
+[\fB\-q\fP \fIquery\fP]
+[\fB\-d\fP \fIdbname\fP]
+[\fB\-e\fP \fIenc\fP:\fIsalt\fP ...]
+[\fB\-m\fP]
+[\fB\-x\fP \fIdb_args\fP]
+[command args...]
+.SH DESCRIPTION
+.sp
+kadmin and kadmin.local are command\-line interfaces to the Kerberos V5
+administration system. They provide nearly identical functionalities;
+the difference is that kadmin.local directly accesses the KDC
+database, while kadmin performs operations using \fIkadmind(8)\fP\&.
+Except as explicitly noted otherwise, this man page will use "kadmin"
+to refer to both versions. kadmin provides for the maintenance of
+Kerberos principals, password policies, and service key tables
+(keytabs).
+.sp
+The remote kadmin client uses Kerberos to authenticate to kadmind
+using the service principal \fBkadmin/ADMINHOST\fP (where \fIADMINHOST\fP is
+the fully\-qualified hostname of the admin server) or \fBkadmin/admin\fP\&.
+If the credentials cache contains a ticket for one of these
+principals, and the \fB\-c\fP credentials_cache option is specified, that
+ticket is used to authenticate to kadmind. Otherwise, the \fB\-p\fP and
+\fB\-k\fP options are used to specify the client Kerberos principal name
+used to authenticate. Once kadmin has determined the principal name,
+it requests a service ticket from the KDC, and uses that service
+ticket to authenticate to kadmind.
+.sp
+Since kadmin.local directly accesses the KDC database, it usually must
+be run directly on the master KDC with sufficient permissions to read
+the KDC database. If the KDC database uses the LDAP database module,
+kadmin.local can be run on any host which can access the LDAP server.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Use \fIrealm\fP as the default database realm.
+.TP
+.B \fB\-p\fP \fIprincipal\fP
+Use \fIprincipal\fP to authenticate. Otherwise, kadmin will append
+\fB/admin\fP to the primary principal name of the default ccache,
+the value of the \fBUSER\fP environment variable, or the username as
+obtained with getpwuid, in order of preference.
+.TP
+.B \fB\-k\fP
+Use a keytab to decrypt the KDC response instead of prompting for
+a password. In this case, the default principal will be
+\fBhost/hostname\fP\&. If there is no keytab specified with the
+\fB\-t\fP option, then the default keytab will be used.
+.TP
+.B \fB\-t\fP \fIkeytab\fP
+Use \fIkeytab\fP to decrypt the KDC response. This can only be used
+with the \fB\-k\fP option.
+.TP
+.B \fB\-n\fP
+Requests anonymous processing. Two types of anonymous principals
+are supported. For fully anonymous Kerberos, configure PKINIT on
+the KDC and configure \fBpkinit_anchors\fP in the client\(aqs
+\fIkrb5.conf(5)\fP\&. Then use the \fB\-n\fP option with a principal
+of the form \fB@REALM\fP (an empty principal name followed by the
+at\-sign and a realm name). If permitted by the KDC, an anonymous
+ticket will be returned. A second form of anonymous tickets is
+supported; these realm\-exposed tickets hide the identity of the
+client but not the client\(aqs realm. For this mode, use \fBkinit
+\-n\fP with a normal principal name. If supported by the KDC, the
+principal (but not realm) will be replaced by the anonymous
+principal. As of release 1.8, the MIT Kerberos KDC only supports
+fully anonymous operation.
+.TP
+.B \fB\-c\fP \fIcredentials_cache\fP
+Use \fIcredentials_cache\fP as the credentials cache. The
+cache should contain a service ticket for the \fBkadmin/ADMINHOST\fP
+(where \fIADMINHOST\fP is the fully\-qualified hostname of the admin
+server) or \fBkadmin/admin\fP service; it can be acquired with the
+\fIkinit(1)\fP program. If this option is not specified, kadmin
+requests a new service ticket from the KDC, and stores it in its
+own temporary ccache.
+.TP
+.B \fB\-w\fP \fIpassword\fP
+Use \fIpassword\fP instead of prompting for one. Use this option with
+care, as it may expose the password to other users on the system
+via the process list.
+.TP
+.B \fB\-q\fP \fIquery\fP
+Perform the specified query and then exit.
+.TP
+.B \fB\-d\fP \fIdbname\fP
+Specifies the name of the KDC database. This option does not
+apply to the LDAP database module.
+.TP
+.B \fB\-s\fP \fIadmin_server\fP[:\fIport\fP]
+Specifies the admin server which kadmin should contact.
+.TP
+.B \fB\-m\fP
+If using kadmin.local, prompt for the database master password
+instead of reading it from a stash file.
+.TP
+.B \fB\-e\fP "\fIenc\fP:\fIsalt\fP ..."
+Sets the keysalt list to be used for any new keys created. See
+\fIKeysalt_lists\fP in \fIkdc.conf(5)\fP for a list of possible
+values.
+.TP
+.B \fB\-O\fP
+Force use of old AUTH_GSSAPI authentication flavor.
+.TP
+.B \fB\-N\fP
+Prevent fallback to AUTH_GSSAPI authentication flavor.
+.TP
+.B \fB\-x\fP \fIdb_args\fP
+Specifies the database specific arguments. See the next section
+for supported options.
+.UNINDENT
+.sp
+Starting with release 1.14, if any command\-line arguments remain after
+the options, they will be treated as a single query to be executed.
+This mode of operation is intended for scripts and behaves differently
+from the interactive mode in several respects:
+.INDENT 0.0
+.IP \(bu 2
+Query arguments are split by the shell, not by kadmin.
+.IP \(bu 2
+Informational and warning messages are suppressed. Error messages
+and query output (e.g. for \fBget_principal\fP) will still be
+displayed.
+.IP \(bu 2
+Confirmation prompts are disabled (as if \fB\-force\fP was given).
+Password prompts will still be issued as required.
+.IP \(bu 2
+The exit status will be non\-zero if the query fails.
+.UNINDENT
+.sp
+The \fB\-q\fP option does not carry these behavior differences; the query
+will be processed as if it was entered interactively. The \fB\-q\fP
+option cannot be used in combination with a query in the remaining
+arguments.
+.SH DATABASE OPTIONS
+.sp
+Database options can be used to override database\-specific defaults.
+Supported options for the DB2 module are:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fB\-x dbname=\fP*filename*
+Specifies the base filename of the DB2 database.
+.TP
+.B \fB\-x lockiter\fP
+Make iteration operations hold the lock for the duration of
+the entire operation, rather than temporarily releasing the
+lock while handling each principal. This is the default
+behavior, but this option exists to allow command line
+override of a [dbmodules] setting. First introduced in
+release 1.13.
+.TP
+.B \fB\-x unlockiter\fP
+Make iteration operations unlock the database for each
+principal, instead of holding the lock for the duration of the
+entire operation. First introduced in release 1.13.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Supported options for the LDAP module are:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B \fB\-x host=\fP\fIldapuri\fP
+Specifies the LDAP server to connect to by a LDAP URI.
+.TP
+.B \fB\-x binddn=\fP\fIbind_dn\fP
+Specifies the DN used to bind to the LDAP server.
+.TP
+.B \fB\-x bindpwd=\fP\fIpassword\fP
+Specifies the password or SASL secret used to bind to the LDAP
+server. Using this option may expose the password to other
+users on the system via the process list; to avoid this,
+instead stash the password using the \fBstashsrvpw\fP command of
+\fIkdb5_ldap_util(8)\fP\&.
+.TP
+.B \fB\-x sasl_mech=\fP\fImechanism\fP
+Specifies the SASL mechanism used to bind to the LDAP server.
+The bind DN is ignored if a SASL mechanism is used. New in
+release 1.13.
+.TP
+.B \fB\-x sasl_authcid=\fP\fIname\fP
+Specifies the authentication name used when binding to the
+LDAP server with a SASL mechanism, if the mechanism requires
+one. New in release 1.13.
+.TP
+.B \fB\-x sasl_authzid=\fP\fIname\fP
+Specifies the authorization name used when binding to the LDAP
+server with a SASL mechanism. New in release 1.13.
+.TP
+.B \fB\-x sasl_realm=\fP\fIrealm\fP
+Specifies the realm used when binding to the LDAP server with
+a SASL mechanism, if the mechanism uses one. New in release
+1.13.
+.TP
+.B \fB\-x debug=\fP\fIlevel\fP
+sets the OpenLDAP client library debug level. \fIlevel\fP is an
+integer to be interpreted by the library. Debugging messages
+are printed to standard error. New in release 1.12.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SH COMMANDS
+.sp
+When using the remote client, available commands may be restricted
+according to the privileges specified in the \fIkadm5.acl(5)\fP file
+on the admin server.
+.SS add_principal
+.INDENT 0.0
+.INDENT 3.5
+\fBadd_principal\fP [\fIoptions\fP] \fInewprinc\fP
+.UNINDENT
+.UNINDENT
+.sp
+Creates the principal \fInewprinc\fP, prompting twice for a password. If
+no password policy is specified with the \fB\-policy\fP option, and the
+policy named \fBdefault\fP is assigned to the principal if it exists.
+However, creating a policy named \fBdefault\fP will not automatically
+assign this policy to previously existing principals. This policy
+assignment can be suppressed with the \fB\-clearpolicy\fP option.
+.sp
+This command requires the \fBadd\fP privilege.
+.sp
+Aliases: \fBaddprinc\fP, \fBank\fP
+.sp
+Options:
+.INDENT 0.0
+.TP
+.B \fB\-expire\fP \fIexpdate\fP
+(\fIgetdate\fP string) The expiration date of the principal.
+.TP
+.B \fB\-pwexpire\fP \fIpwexpdate\fP
+(\fIgetdate\fP string) The password expiration date.
+.TP
+.B \fB\-maxlife\fP \fImaxlife\fP
+(\fIduration\fP or \fIgetdate\fP string) The maximum ticket life
+for the principal.
+.TP
+.B \fB\-maxrenewlife\fP \fImaxrenewlife\fP
+(\fIduration\fP or \fIgetdate\fP string) The maximum renewable
+life of tickets for the principal.
+.TP
+.B \fB\-kvno\fP \fIkvno\fP
+The initial key version number.
+.TP
+.B \fB\-policy\fP \fIpolicy\fP
+The password policy used by this principal. If not specified, the
+policy \fBdefault\fP is used if it exists (unless \fB\-clearpolicy\fP
+is specified).
+.TP
+.B \fB\-clearpolicy\fP
+Prevents any policy from being assigned when \fB\-policy\fP is not
+specified.
+.TP
+.B {\-|+}\fBallow_postdated\fP
+\fB\-allow_postdated\fP prohibits this principal from obtaining
+postdated tickets. \fB+allow_postdated\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_forwardable\fP
+\fB\-allow_forwardable\fP prohibits this principal from obtaining
+forwardable tickets. \fB+allow_forwardable\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_renewable\fP
+\fB\-allow_renewable\fP prohibits this principal from obtaining
+renewable tickets. \fB+allow_renewable\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_proxiable\fP
+\fB\-allow_proxiable\fP prohibits this principal from obtaining
+proxiable tickets. \fB+allow_proxiable\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_dup_skey\fP
+\fB\-allow_dup_skey\fP disables user\-to\-user authentication for this
+principal by prohibiting this principal from obtaining a session
+key for another user. \fB+allow_dup_skey\fP clears this flag.
+.TP
+.B {\-|+}\fBrequires_preauth\fP
+\fB+requires_preauth\fP requires this principal to preauthenticate
+before being allowed to kinit. \fB\-requires_preauth\fP clears this
+flag. When \fB+requires_preauth\fP is set on a service principal,
+the KDC will only issue service tickets for that service principal
+if the client\(aqs initial authentication was performed using
+preauthentication.
+.TP
+.B {\-|+}\fBrequires_hwauth\fP
+\fB+requires_hwauth\fP requires this principal to preauthenticate
+using a hardware device before being allowed to kinit.
+\fB\-requires_hwauth\fP clears this flag. When \fB+requires_hwauth\fP is
+set on a service principal, the KDC will only issue service tickets
+for that service principal if the client\(aqs initial authentication was
+performed using a hardware device to preauthenticate.
+.TP
+.B {\-|+}\fBok_as_delegate\fP
+\fB+ok_as_delegate\fP sets the \fBokay as delegate\fP flag on tickets
+issued with this principal as the service. Clients may use this
+flag as a hint that credentials should be delegated when
+authenticating to the service. \fB\-ok_as_delegate\fP clears this
+flag.
+.TP
+.B {\-|+}\fBallow_svr\fP
+\fB\-allow_svr\fP prohibits the issuance of service tickets for this
+principal. \fB+allow_svr\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_tgs_req\fP
+\fB\-allow_tgs_req\fP specifies that a Ticket\-Granting Service (TGS)
+request for a service ticket for this principal is not permitted.
+\fB+allow_tgs_req\fP clears this flag.
+.TP
+.B {\-|+}\fBallow_tix\fP
+\fB\-allow_tix\fP forbids the issuance of any tickets for this
+principal. \fB+allow_tix\fP clears this flag.
+.TP
+.B {\-|+}\fBneedchange\fP
+\fB+needchange\fP forces a password change on the next initial
+authentication to this principal. \fB\-needchange\fP clears this
+flag.
+.TP
+.B {\-|+}\fBpassword_changing_service\fP
+\fB+password_changing_service\fP marks this principal as a password
+change service principal.
+.TP
+.B {\-|+}\fBok_to_auth_as_delegate\fP
+\fB+ok_to_auth_as_delegate\fP allows this principal to acquire
+forwardable tickets to itself from arbitrary users, for use with
+constrained delegation.
+.TP
+.B {\-|+}\fBno_auth_data_required\fP
+\fB+no_auth_data_required\fP prevents PAC or AD\-SIGNEDPATH data from
+being added to service tickets for the principal.
+.TP
+.B {\-|+}\fBlockdown_keys\fP
+\fB+lockdown_keys\fP prevents keys for this principal from leaving
+the KDC via kadmind. The chpass and extract operations are denied
+for a principal with this attribute. The chrand operation is
+allowed, but will not return the new keys. The delete and rename
+operations are also denied if this attribute is set, in order to
+prevent a malicious administrator from replacing principals like
+krbtgt/* or kadmin/* with new principals without the attribute.
+This attribute can be set via the network protocol, but can only
+be removed using kadmin.local.
+.TP
+.B \fB\-randkey\fP
+Sets the key of the principal to a random value.
+.TP
+.B \fB\-nokey\fP
+Causes the principal to be created with no key. New in release
+1.12.
+.TP
+.B \fB\-pw\fP \fIpassword\fP
+Sets the password of the principal to the specified string and
+does not prompt for a password. Note: using this option in a
+shell script may expose the password to other users on the system
+via the process list.
+.TP
+.B \fB\-e\fP \fIenc\fP:\fIsalt\fP,...
+Uses the specified keysalt list for setting the keys of the
+principal. See \fIKeysalt_lists\fP in \fIkdc.conf(5)\fP for a
+list of possible values.
+.TP
+.B \fB\-x\fP \fIdb_princ_args\fP
+Indicates database\-specific options. The options for the LDAP
+database module are:
+.INDENT 7.0
+.TP
+.B \fB\-x dn=\fP\fIdn\fP
+Specifies the LDAP object that will contain the Kerberos
+principal being created.
+.TP
+.B \fB\-x linkdn=\fP\fIdn\fP
+Specifies the LDAP object to which the newly created Kerberos
+principal object will point.
+.TP
+.B \fB\-x containerdn=\fP\fIcontainer_dn\fP
+Specifies the container object under which the Kerberos
+principal is to be created.
+.TP
+.B \fB\-x tktpolicy=\fP\fIpolicy\fP
+Associates a ticket policy to the Kerberos principal.
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+The \fBcontainerdn\fP and \fBlinkdn\fP options cannot be
+specified with the \fBdn\fP option.
+.IP \(bu 2
+If the \fIdn\fP or \fIcontainerdn\fP options are not specified while
+adding the principal, the principals are created under the
+principal container configured in the realm or the realm
+container.
+.IP \(bu 2
+\fIdn\fP and \fIcontainerdn\fP should be within the subtrees or
+principal container configured in the realm.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: addprinc jennifer
+WARNING: no policy specified for "jennifer@ATHENA.MIT.EDU";
+defaulting to no policy.
+Enter password for principal jennifer@ATHENA.MIT.EDU:
+Re\-enter password for principal jennifer@ATHENA.MIT.EDU:
+Principal "jennifer@ATHENA.MIT.EDU" created.
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS modify_principal
+.INDENT 0.0
+.INDENT 3.5
+\fBmodify_principal\fP [\fIoptions\fP] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Modifies the specified principal, changing the fields as specified.
+The options to \fBadd_principal\fP also apply to this command, except
+for the \fB\-randkey\fP, \fB\-pw\fP, and \fB\-e\fP options. In addition, the
+option \fB\-clearpolicy\fP will clear the current policy of a principal.
+.sp
+This command requires the \fImodify\fP privilege.
+.sp
+Alias: \fBmodprinc\fP
+.sp
+Options (in addition to the \fBaddprinc\fP options):
+.INDENT 0.0
+.TP
+.B \fB\-unlock\fP
+Unlocks a locked principal (one which has received too many failed
+authentication attempts without enough time between them according
+to its password policy) so that it can successfully authenticate.
+.UNINDENT
+.SS rename_principal
+.INDENT 0.0
+.INDENT 3.5
+\fBrename_principal\fP [\fB\-force\fP] \fIold_principal\fP \fInew_principal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Renames the specified \fIold_principal\fP to \fInew_principal\fP\&. This
+command prompts for confirmation, unless the \fB\-force\fP option is
+given.
+.sp
+This command requires the \fBadd\fP and \fBdelete\fP privileges.
+.sp
+Alias: \fBrenprinc\fP
+.SS delete_principal
+.INDENT 0.0
+.INDENT 3.5
+\fBdelete_principal\fP [\fB\-force\fP] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Deletes the specified \fIprincipal\fP from the database. This command
+prompts for deletion, unless the \fB\-force\fP option is given.
+.sp
+This command requires the \fBdelete\fP privilege.
+.sp
+Alias: \fBdelprinc\fP
+.SS change_password
+.INDENT 0.0
+.INDENT 3.5
+\fBchange_password\fP [\fIoptions\fP] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Changes the password of \fIprincipal\fP\&. Prompts for a new password if
+neither \fB\-randkey\fP or \fB\-pw\fP is specified.
+.sp
+This command requires the \fBchangepw\fP privilege, or that the
+principal running the program is the same as the principal being
+changed.
+.sp
+Alias: \fBcpw\fP
+.sp
+The following options are available:
+.INDENT 0.0
+.TP
+.B \fB\-randkey\fP
+Sets the key of the principal to a random value.
+.TP
+.B \fB\-pw\fP \fIpassword\fP
+Set the password to the specified string. Using this option in a
+script may expose the password to other users on the system via
+the process list.
+.TP
+.B \fB\-e\fP \fIenc\fP:\fIsalt\fP,...
+Uses the specified keysalt list for setting the keys of the
+principal. See \fIKeysalt_lists\fP in \fIkdc.conf(5)\fP for a
+list of possible values.
+.TP
+.B \fB\-keepold\fP
+Keeps the existing keys in the database. This flag is usually not
+necessary except perhaps for \fBkrbtgt\fP principals.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: cpw systest
+Enter password for principal systest@BLEEP.COM:
+Re\-enter password for principal systest@BLEEP.COM:
+Password for systest@BLEEP.COM changed.
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS purgekeys
+.INDENT 0.0
+.INDENT 3.5
+\fBpurgekeys\fP [\fB\-all\fP|\fB\-keepkvno\fP \fIoldest_kvno_to_keep\fP] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Purges previously retained old keys (e.g., from \fBchange_password
+\-keepold\fP) from \fIprincipal\fP\&. If \fB\-keepkvno\fP is specified, then
+only purges keys with kvnos lower than \fIoldest_kvno_to_keep\fP\&. If
+\fB\-all\fP is specified, then all keys are purged. The \fB\-all\fP option
+is new in release 1.12.
+.sp
+This command requires the \fBmodify\fP privilege.
+.SS get_principal
+.INDENT 0.0
+.INDENT 3.5
+\fBget_principal\fP [\fB\-terse\fP] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Gets the attributes of principal. With the \fB\-terse\fP option, outputs
+fields as quoted tab\-separated strings.
+.sp
+This command requires the \fBinquire\fP privilege, or that the principal
+running the the program to be the same as the one being listed.
+.sp
+Alias: \fBgetprinc\fP
+.sp
+Examples:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: getprinc tlyu/admin
+Principal: tlyu/admin@BLEEP.COM
+Expiration date: [never]
+Last password change: Mon Aug 12 14:16:47 EDT 1996
+Password expiration date: [none]
+Maximum ticket life: 0 days 10:00:00
+Maximum renewable life: 7 days 00:00:00
+Last modified: Mon Aug 12 14:16:47 EDT 1996 (bjaspan/admin@BLEEP.COM)
+Last successful authentication: [never]
+Last failed authentication: [never]
+Failed password attempts: 0
+Number of keys: 2
+Key: vno 1, des\-cbc\-crc
+Key: vno 1, des\-cbc\-crc:v4
+Attributes:
+Policy: [none]
+
+kadmin: getprinc \-terse systest
+systest@BLEEP.COM 3 86400 604800 1
+785926535 753241234 785900000
+tlyu/admin@BLEEP.COM 786100034 0 0
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS list_principals
+.INDENT 0.0
+.INDENT 3.5
+\fBlist_principals\fP [\fIexpression\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Retrieves all or some principal names. \fIexpression\fP is a shell\-style
+glob expression that can contain the wild\-card characters \fB?\fP,
+\fB*\fP, and \fB[]\fP\&. All principal names matching the expression are
+printed. If no expression is provided, all principal names are
+printed. If the expression does not contain an \fB@\fP character, an
+\fB@\fP character followed by the local realm is appended to the
+expression.
+.sp
+This command requires the \fBlist\fP privilege.
+.sp
+Alias: \fBlistprincs\fP, \fBget_principals\fP, \fBget_princs\fP
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: listprincs test*
+test3@SECURE\-TEST.OV.COM
+test2@SECURE\-TEST.OV.COM
+test1@SECURE\-TEST.OV.COM
+testuser@SECURE\-TEST.OV.COM
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS get_strings
+.INDENT 0.0
+.INDENT 3.5
+\fBget_strings\fP \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Displays string attributes on \fIprincipal\fP\&.
+.sp
+This command requires the \fBinquire\fP privilege.
+.sp
+Alias: \fBgetstr\fP
+.SS set_string
+.INDENT 0.0
+.INDENT 3.5
+\fBset_string\fP \fIprincipal\fP \fIname\fP \fIvalue\fP
+.UNINDENT
+.UNINDENT
+.sp
+Sets a string attribute on \fIprincipal\fP\&. String attributes are used to
+supply per\-principal configuration to the KDC and some KDC plugin
+modules. The following string attribute names are recognized by the
+KDC:
+.INDENT 0.0
+.TP
+.B \fBrequire_auth\fP
+Specifies an authentication indicator which is required to
+authenticate to the principal as a service. Multiple indicators
+can be specified, separated by spaces; in this case any of the
+specified indicators will be accepted. (New in release 1.14.)
+.TP
+.B \fBsession_enctypes\fP
+Specifies the encryption types supported for session keys when the
+principal is authenticated to as a server. See
+\fIEncryption_types\fP in \fIkdc.conf(5)\fP for a list of the
+accepted values.
+.TP
+.B \fBotp\fP
+Enables One Time Passwords (OTP) preauthentication for a client
+\fIprincipal\fP\&. The \fIvalue\fP is a JSON string representing an array
+of objects, each having optional \fBtype\fP and \fBusername\fP fields.
+.UNINDENT
+.sp
+This command requires the \fBmodify\fP privilege.
+.sp
+Alias: \fBsetstr\fP
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+set_string host/foo.mit.edu session_enctypes aes128\-cts
+set_string user@FOO.COM otp "[{""type"":""hotp"",""username"":""al""}]"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS del_string
+.INDENT 0.0
+.INDENT 3.5
+\fBdel_string\fP \fIprincipal\fP \fIkey\fP
+.UNINDENT
+.UNINDENT
+.sp
+Deletes a string attribute from \fIprincipal\fP\&.
+.sp
+This command requires the \fBdelete\fP privilege.
+.sp
+Alias: \fBdelstr\fP
+.SS add_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBadd_policy\fP [\fIoptions\fP] \fIpolicy\fP
+.UNINDENT
+.UNINDENT
+.sp
+Adds a password policy named \fIpolicy\fP to the database.
+.sp
+This command requires the \fBadd\fP privilege.
+.sp
+Alias: \fBaddpol\fP
+.sp
+The following options are available:
+.INDENT 0.0
+.TP
+.B \fB\-maxlife\fP \fItime\fP
+(\fIduration\fP or \fIgetdate\fP string) Sets the maximum
+lifetime of a password.
+.TP
+.B \fB\-minlife\fP \fItime\fP
+(\fIduration\fP or \fIgetdate\fP string) Sets the minimum
+lifetime of a password.
+.TP
+.B \fB\-minlength\fP \fIlength\fP
+Sets the minimum length of a password.
+.TP
+.B \fB\-minclasses\fP \fInumber\fP
+Sets the minimum number of character classes required in a
+password. The five character classes are lower case, upper case,
+numbers, punctuation, and whitespace/unprintable characters.
+.TP
+.B \fB\-history\fP \fInumber\fP
+Sets the number of past keys kept for a principal. This option is
+not supported with the LDAP KDC database module.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-maxfailure\fP \fImaxnumber\fP
+Sets the number of authentication failures before the principal is
+locked. Authentication failures are only tracked for principals
+which require preauthentication. The counter of failed attempts
+resets to 0 after a successful attempt to authenticate. A
+\fImaxnumber\fP value of 0 (the default) disables lockout.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-failurecountinterval\fP \fIfailuretime\fP
+(\fIduration\fP or \fIgetdate\fP string) Sets the allowable time
+between authentication failures. If an authentication failure
+happens after \fIfailuretime\fP has elapsed since the previous
+failure, the number of authentication failures is reset to 1. A
+\fIfailuretime\fP value of 0 (the default) means forever.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-lockoutduration\fP \fIlockouttime\fP
+(\fIduration\fP or \fIgetdate\fP string) Sets the duration for
+which the principal is locked from authenticating if too many
+authentication failures occur without the specified failure count
+interval elapsing. A duration of 0 (the default) means the
+principal remains locked out until it is administratively unlocked
+with \fBmodprinc \-unlock\fP\&.
+.TP
+.B \fB\-allowedkeysalts\fP
+Specifies the key/salt tuples supported for long\-term keys when
+setting or changing a principal\(aqs password/keys. See
+\fIKeysalt_lists\fP in \fIkdc.conf(5)\fP for a list of the
+accepted values, but note that key/salt tuples must be separated
+with commas (\(aq,\(aq) only. To clear the allowed key/salt policy use
+a value of \(aq\-\(aq.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: add_policy \-maxlife "2 days" \-minlength 5 guests
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS modify_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBmodify_policy\fP [\fIoptions\fP] \fIpolicy\fP
+.UNINDENT
+.UNINDENT
+.sp
+Modifies the password policy named \fIpolicy\fP\&. Options are as described
+for \fBadd_policy\fP\&.
+.sp
+This command requires the \fBmodify\fP privilege.
+.sp
+Alias: \fBmodpol\fP
+.SS delete_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBdelete_policy\fP [\fB\-force\fP] \fIpolicy\fP
+.UNINDENT
+.UNINDENT
+.sp
+Deletes the password policy named \fIpolicy\fP\&. Prompts for confirmation
+before deletion. The command will fail if the policy is in use by any
+principals.
+.sp
+This command requires the \fBdelete\fP privilege.
+.sp
+Alias: \fBdelpol\fP
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: del_policy guests
+Are you sure you want to delete the policy "guests"?
+(yes/no): yes
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS get_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBget_policy\fP [ \fB\-terse\fP ] \fIpolicy\fP
+.UNINDENT
+.UNINDENT
+.sp
+Displays the values of the password policy named \fIpolicy\fP\&. With the
+\fB\-terse\fP flag, outputs the fields as quoted strings separated by
+tabs.
+.sp
+This command requires the \fBinquire\fP privilege.
+.sp
+Alias: getpol
+.sp
+Examples:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: get_policy admin
+Policy: admin
+Maximum password life: 180 days 00:00:00
+Minimum password life: 00:00:00
+Minimum password length: 6
+Minimum number of password character classes: 2
+Number of old keys kept: 5
+Reference count: 17
+
+kadmin: get_policy \-terse admin
+admin 15552000 0 6 2 5 17
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The "Reference count" is the number of principals using that policy.
+With the LDAP KDC database module, the reference count field is not
+meaningful.
+.SS list_policies
+.INDENT 0.0
+.INDENT 3.5
+\fBlist_policies\fP [\fIexpression\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Retrieves all or some policy names. \fIexpression\fP is a shell\-style
+glob expression that can contain the wild\-card characters \fB?\fP,
+\fB*\fP, and \fB[]\fP\&. All policy names matching the expression are
+printed. If no expression is provided, all existing policy names are
+printed.
+.sp
+This command requires the \fBlist\fP privilege.
+.sp
+Aliases: \fBlistpols\fP, \fBget_policies\fP, \fBgetpols\fP\&.
+.sp
+Examples:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: listpols
+test\-pol
+dict\-only
+once\-a\-min
+test\-pol\-nopw
+
+kadmin: listpols t*
+test\-pol
+test\-pol\-nopw
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS ktadd
+.INDENT 0.0
+.INDENT 3.5
+.nf
+\fBktadd\fP [options] \fIprincipal\fP
+\fBktadd\fP [options] \fB\-glob\fP \fIprinc\-exp\fP
+.fi
+.sp
+.UNINDENT
+.UNINDENT
+.sp
+Adds a \fIprincipal\fP, or all principals matching \fIprinc\-exp\fP, to a
+keytab file. Each principal\(aqs keys are randomized in the process.
+The rules for \fIprinc\-exp\fP are described in the \fBlist_principals\fP
+command.
+.sp
+This command requires the \fBinquire\fP and \fBchangepw\fP privileges.
+With the \fB\-glob\fP form, it also requires the \fBlist\fP privilege.
+.sp
+The options are:
+.INDENT 0.0
+.TP
+.B \fB\-k[eytab]\fP \fIkeytab\fP
+Use \fIkeytab\fP as the keytab file. Otherwise, the default keytab is
+used.
+.TP
+.B \fB\-e\fP \fIenc\fP:\fIsalt\fP,...
+Uses the specified keysalt list for setting the new keys of the
+principal. See \fIKeysalt_lists\fP in \fIkdc.conf(5)\fP for a
+list of possible values.
+.TP
+.B \fB\-q\fP
+Display less verbose information.
+.TP
+.B \fB\-norandkey\fP
+Do not randomize the keys. The keys and their version numbers stay
+unchanged. This option cannot be specified in combination with the
+\fB\-e\fP option.
+.UNINDENT
+.sp
+An entry for each of the principal\(aqs unique encryption types is added,
+ignoring multiple keys with the same encryption type but different
+salt types.
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: ktadd \-k /tmp/foo\-new\-keytab host/foo.mit.edu
+Entry for principal host/foo.mit.edu@ATHENA.MIT.EDU with kvno 3,
+ encryption type aes256\-cts\-hmac\-sha1\-96 added to keytab
+ FILE:/tmp/foo\-new\-keytab
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS ktremove
+.INDENT 0.0
+.INDENT 3.5
+\fBktremove\fP [options] \fIprincipal\fP [\fIkvno\fP | \fIall\fP | \fIold\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Removes entries for the specified \fIprincipal\fP from a keytab. Requires
+no permissions, since this does not require database access.
+.sp
+If the string "all" is specified, all entries for that principal are
+removed; if the string "old" is specified, all entries for that
+principal except those with the highest kvno are removed. Otherwise,
+the value specified is parsed as an integer, and all entries whose
+kvno match that integer are removed.
+.sp
+The options are:
+.INDENT 0.0
+.TP
+.B \fB\-k[eytab]\fP \fIkeytab\fP
+Use \fIkeytab\fP as the keytab file. Otherwise, the default keytab is
+used.
+.TP
+.B \fB\-q\fP
+Display less verbose information.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin: ktremove kadmin/admin all
+Entry for principal kadmin/admin with kvno 3 removed from keytab
+ FILE:/etc/krb5.keytab
+kadmin:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS lock
+.sp
+Lock database exclusively. Use with extreme caution! This command
+only works with the DB2 KDC database module.
+.SS unlock
+.sp
+Release the exclusive database lock.
+.SS list_requests
+.sp
+Lists available for kadmin requests.
+.sp
+Aliases: \fBlr\fP, \fB?\fP
+.SS quit
+.sp
+Exit program. If the database was locked, the lock is released.
+.sp
+Aliases: \fBexit\fP, \fBq\fP
+.SH HISTORY
+.sp
+The kadmin program was originally written by Tom Yu at MIT, as an
+interface to the OpenVision Kerberos administration program.
+.SH SEE ALSO
+.sp
+\fIkpasswd(1)\fP, \fIkadmind(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kadmind.man b/src/man/kadmind.man
new file mode 100644
index 000000000000..65647f97c797
--- /dev/null
+++ b/src/man/kadmind.man
@@ -0,0 +1,150 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KADMIND" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kadmind \- KADM5 administration server
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkadmind\fP
+[\fB\-x\fP \fIdb_args\fP]
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-m\fP]
+[\fB\-nofork\fP]
+[\fB\-proponly\fP]
+[\fB\-port\fP \fIport\-number\fP]
+[\fB\-P\fP \fIpid_file\fP]
+[\fB\-p\fP \fIkdb5_util_path\fP]
+[\fB\-K\fP \fIkprop_path\fP]
+[\fB\-k\fP \fIkprop_port\fP]
+[\fB\-F\fP \fIdump_file\fP]
+.SH DESCRIPTION
+.sp
+kadmind starts the Kerberos administration server. kadmind typically
+runs on the master Kerberos server, which stores the KDC database. If
+the KDC database uses the LDAP module, the administration server and
+the KDC server need not run on the same machine. kadmind accepts
+remote requests from programs such as \fIkadmin(1)\fP and
+\fIkpasswd(1)\fP to administer the information in these database.
+.sp
+kadmind requires a number of configuration files to be set up in order
+for it to work:
+.INDENT 0.0
+.TP
+.B \fIkdc.conf(5)\fP
+The KDC configuration file contains configuration information for
+the KDC and admin servers. kadmind uses settings in this file to
+locate the Kerberos database, and is also affected by the
+\fBacl_file\fP, \fBdict_file\fP, \fBkadmind_port\fP, and iprop\-related
+settings.
+.TP
+.B \fIkadm5.acl(5)\fP
+kadmind\(aqs ACL (access control list) tells it which principals are
+allowed to perform administration actions. The pathname to the
+ACL file can be specified with the \fBacl_file\fP \fIkdc.conf(5)\fP
+variable; by default, it is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/kadm5.acl\fP\&.
+.UNINDENT
+.sp
+After the server begins running, it puts itself in the background and
+disassociates itself from its controlling terminal.
+.sp
+kadmind can be configured for incremental database propagation.
+Incremental propagation allows slave KDC servers to receive principal
+and policy updates incrementally instead of receiving full dumps of
+the database. This facility can be enabled in the \fIkdc.conf(5)\fP
+file with the \fBiprop_enable\fP option. Incremental propagation
+requires the principal \fBkiprop/MASTER\e@REALM\fP (where MASTER is the
+master KDC\(aqs canonical host name, and REALM the realm name). In
+release 1.13, this principal is automatically created and registered
+into the datebase.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+specifies the realm that kadmind will serve; if it is not
+specified, the default realm of the host is used.
+.TP
+.B \fB\-m\fP
+causes the master database password to be fetched from the
+keyboard (before the server puts itself in the background, if not
+invoked with the \fB\-nofork\fP option) rather than from a file on
+disk.
+.TP
+.B \fB\-nofork\fP
+causes the server to remain in the foreground and remain
+associated to the terminal. In normal operation, you should allow
+the server to place itself in the background.
+.TP
+.B \fB\-proponly\fP
+causes the server to only listen and respond to Kerberos slave
+incremental propagation polling requests. This option can be used
+to set up a hierarchical propagation topology where a slave KDC
+provides incremental updates to other Kerberos slaves.
+.TP
+.B \fB\-port\fP \fIport\-number\fP
+specifies the port on which the administration server listens for
+connections. The default port is determined by the
+\fBkadmind_port\fP configuration variable in \fIkdc.conf(5)\fP\&.
+.TP
+.B \fB\-P\fP \fIpid_file\fP
+specifies the file to which the PID of kadmind process should be
+written after it starts up. This file can be used to identify
+whether kadmind is still running and to allow init scripts to stop
+the correct process.
+.TP
+.B \fB\-p\fP \fIkdb5_util_path\fP
+specifies the path to the kdb5_util command to use when dumping the
+KDB in response to full resync requests when iprop is enabled.
+.TP
+.B \fB\-K\fP \fIkprop_path\fP
+specifies the path to the kprop command to use to send full dumps
+to slaves in response to full resync requests.
+.TP
+.B \fB\-k\fP \fIkprop_port\fP
+specifies the port by which the kprop process that is spawned by kadmind
+connects to the slave kpropd, in order to transfer the dump file during
+an iprop full resync request.
+.TP
+.B \fB\-F\fP \fIdump_file\fP
+specifies the file path to be used for dumping the KDB in response
+to full resync requests when iprop is enabled.
+.TP
+.B \fB\-x\fP \fIdb_args\fP
+specifies database\-specific arguments. See \fIDatabase Options\fP in \fIkadmin(1)\fP for supported arguments.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkpasswd(1)\fP, \fIkadmin(1)\fP, \fIkdb5_util(8)\fP,
+\fIkdb5_ldap_util(8)\fP, \fIkadm5.acl(5)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kdb5_ldap_util.man b/src/man/kdb5_ldap_util.man
new file mode 100644
index 000000000000..83591a70c12c
--- /dev/null
+++ b/src/man/kdb5_ldap_util.man
@@ -0,0 +1,549 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KDB5_LDAP_UTIL" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kdb5_ldap_util \- Kerberos configuration utility
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkdb5_ldap_util\fP
+[\fB\-D\fP \fIuser_dn\fP [\fB\-w\fP \fIpasswd\fP]]
+[\fB\-H\fP \fIldapuri\fP]
+\fBcommand\fP
+[\fIcommand_options\fP]
+.SH DESCRIPTION
+.sp
+kdb5_ldap_util allows an administrator to manage realms, Kerberos
+services and ticket policies.
+.SH COMMAND-LINE OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-D\fP \fIuser_dn\fP
+Specifies the Distinguished Name (DN) of the user who has
+sufficient rights to perform the operation on the LDAP server.
+.TP
+.B \fB\-w\fP \fIpasswd\fP
+Specifies the password of \fIuser_dn\fP\&. This option is not
+recommended.
+.TP
+.B \fB\-H\fP \fIldapuri\fP
+Specifies the URI of the LDAP server. It is recommended to use
+\fBldapi://\fP or \fBldaps://\fP to connect to the LDAP server.
+.UNINDENT
+.SH COMMANDS
+.SS create
+.INDENT 0.0
+.INDENT 3.5
+\fBcreate\fP
+[\fB\-subtrees\fP \fIsubtree_dn_list\fP]
+[\fB\-sscope\fP \fIsearch_scope\fP]
+[\fB\-containerref\fP \fIcontainer_reference_dn\fP]
+[\fB\-k\fP \fImkeytype\fP]
+[\fB\-kv\fP \fImkeyVNO\fP]
+[\fB\-m|\-P\fP \fIpassword\fP|\fB\-sf\fP \fIstashfilename\fP]
+[\fB\-s\fP]
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-maxtktlife\fP \fImax_ticket_life\fP]
+[\fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP]
+[\fIticket_flags\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Creates realm in directory. Options:
+.INDENT 0.0
+.TP
+.B \fB\-subtrees\fP \fIsubtree_dn_list\fP
+Specifies the list of subtrees containing the principals of a
+realm. The list contains the DNs of the subtree objects separated
+by colon (\fB:\fP).
+.TP
+.B \fB\-sscope\fP \fIsearch_scope\fP
+Specifies the scope for searching the principals under the
+subtree. The possible values are 1 or one (one level), 2 or sub
+(subtrees).
+.TP
+.B \fB\-containerref\fP \fIcontainer_reference_dn\fP
+Specifies the DN of the container object in which the principals
+of a realm will be created. If the container reference is not
+configured for a realm, the principals will be created in the
+realm container.
+.TP
+.B \fB\-k\fP \fImkeytype\fP
+Specifies the key type of the master key in the database. The
+default is given by the \fBmaster_key_type\fP variable in
+\fIkdc.conf(5)\fP\&.
+.TP
+.B \fB\-kv\fP \fImkeyVNO\fP
+Specifies the version number of the master key in the database;
+the default is 1. Note that 0 is not allowed.
+.TP
+.B \fB\-m\fP
+Specifies that the master database password should be read from
+the TTY rather than fetched from a file on the disk.
+.TP
+.B \fB\-P\fP \fIpassword\fP
+Specifies the master database password. This option is not
+recommended.
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.TP
+.B \fB\-sf\fP \fIstashfilename\fP
+Specifies the stash file of the master database password.
+.TP
+.B \fB\-s\fP
+Specifies that the stash file is to be created.
+.TP
+.B \fB\-maxtktlife\fP \fImax_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum ticket life for
+principals in this realm.
+.TP
+.B \fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum renewable life of
+tickets for principals in this realm.
+.TP
+.B \fIticket_flags\fP
+Specifies global ticket flags for the realm. Allowable flags are
+documented in the description of the \fBadd_principal\fP command in
+\fIkadmin(1)\fP\&.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ create \-subtrees o=org \-sscope SUB \-r ATHENA.MIT.EDU
+Password for "cn=admin,o=org":
+Initializing database for realm \(aqATHENA.MIT.EDU\(aq
+You will be prompted for the database Master Password.
+It is important that you NOT FORGET this password.
+Enter KDC database master key:
+Re\-enter KDC database master key to verify:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS modify
+.INDENT 0.0
+.INDENT 3.5
+\fBmodify\fP
+[\fB\-subtrees\fP \fIsubtree_dn_list\fP]
+[\fB\-sscope\fP \fIsearch_scope\fP]
+[\fB\-containerref\fP \fIcontainer_reference_dn\fP]
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-maxtktlife\fP \fImax_ticket_life\fP]
+[\fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP]
+[\fIticket_flags\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Modifies the attributes of a realm. Options:
+.INDENT 0.0
+.TP
+.B \fB\-subtrees\fP \fIsubtree_dn_list\fP
+Specifies the list of subtrees containing the principals of a
+realm. The list contains the DNs of the subtree objects separated
+by colon (\fB:\fP). This list replaces the existing list.
+.TP
+.B \fB\-sscope\fP \fIsearch_scope\fP
+Specifies the scope for searching the principals under the
+subtrees. The possible values are 1 or one (one level), 2 or sub
+(subtrees).
+.TP
+.B \fB\-containerref\fP \fIcontainer_reference_dn\fP Specifies the DN of the
+container object in which the principals of a realm will be
+created.
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.TP
+.B \fB\-maxtktlife\fP \fImax_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum ticket life for
+principals in this realm.
+.TP
+.B \fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum renewable life of
+tickets for principals in this realm.
+.TP
+.B \fIticket_flags\fP
+Specifies global ticket flags for the realm. Allowable flags are
+documented in the description of the \fBadd_principal\fP command in
+\fIkadmin(1)\fP\&.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+shell% kdb5_ldap_util \-D cn=admin,o=org \-H
+ ldaps://ldap\-server1.mit.edu modify +requires_preauth \-r
+ ATHENA.MIT.EDU
+Password for "cn=admin,o=org":
+shell%
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS view
+.INDENT 0.0
+.INDENT 3.5
+\fBview\fP [\fB\-r\fP \fIrealm\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Displays the attributes of a realm. Options:
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ view \-r ATHENA.MIT.EDU
+Password for "cn=admin,o=org":
+Realm Name: ATHENA.MIT.EDU
+Subtree: ou=users,o=org
+Subtree: ou=servers,o=org
+SearchScope: ONE
+Maximum ticket life: 0 days 01:00:00
+Maximum renewable life: 0 days 10:00:00
+Ticket flags: DISALLOW_FORWARDABLE REQUIRES_PWCHANGE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS destroy
+.INDENT 0.0
+.INDENT 3.5
+\fBdestroy\fP [\fB\-f\fP] [\fB\-r\fP \fIrealm\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Destroys an existing realm. Options:
+.INDENT 0.0
+.TP
+.B \fB\-f\fP
+If specified, will not prompt the user for confirmation.
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+shell% kdb5_ldap_util \-D cn=admin,o=org \-H
+ ldaps://ldap\-server1.mit.edu destroy \-r ATHENA.MIT.EDU
+Password for "cn=admin,o=org":
+Deleting KDC database of \(aqATHENA.MIT.EDU\(aq, are you sure?
+(type \(aqyes\(aq to confirm)? yes
+OK, deleting database of \(aqATHENA.MIT.EDU\(aq...
+shell%
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS list
+.INDENT 0.0
+.INDENT 3.5
+\fBlist\fP
+.UNINDENT
+.UNINDENT
+.sp
+Lists the name of realms.
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+shell% kdb5_ldap_util \-D cn=admin,o=org \-H
+ ldaps://ldap\-server1.mit.edu list
+Password for "cn=admin,o=org":
+ATHENA.MIT.EDU
+OPENLDAP.MIT.EDU
+MEDIA\-LAB.MIT.EDU
+shell%
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS stashsrvpw
+.INDENT 0.0
+.INDENT 3.5
+\fBstashsrvpw\fP
+[\fB\-f\fP \fIfilename\fP]
+\fIname\fP
+.UNINDENT
+.UNINDENT
+.sp
+Allows an administrator to store the password for service object in a
+file so that KDC and Administration server can use it to authenticate
+to the LDAP server. Options:
+.INDENT 0.0
+.TP
+.B \fB\-f\fP \fIfilename\fP
+Specifies the complete path of the service password file. By
+default, \fB/usr/local/var/service_passwd\fP is used.
+.TP
+.B \fIname\fP
+Specifies the name of the object whose password is to be stored.
+If \fIkrb5kdc(8)\fP or \fIkadmind(8)\fP are configured for
+simple binding, this should be the distinguished name it will
+use as given by the \fBldap_kdc_dn\fP or \fBldap_kadmind_dn\fP
+variable in \fIkdc.conf(5)\fP\&. If the KDC or kadmind is
+configured for SASL binding, this should be the authentication
+name it will use as given by the \fBldap_kdc_sasl_authcid\fP or
+\fBldap_kadmind_sasl_authcid\fP variable.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util stashsrvpw \-f /home/andrew/conf_keyfile
+ cn=service\-kdc,o=org
+Password for "cn=service\-kdc,o=org":
+Re\-enter password for "cn=service\-kdc,o=org":
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS create_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBcreate_policy\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-maxtktlife\fP \fImax_ticket_life\fP]
+[\fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP]
+[\fIticket_flags\fP]
+\fIpolicy_name\fP
+.UNINDENT
+.UNINDENT
+.sp
+Creates a ticket policy in the directory. Options:
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.TP
+.B \fB\-maxtktlife\fP \fImax_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum ticket life for
+principals.
+.TP
+.B \fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP
+(\fIgetdate\fP string) Specifies maximum renewable life of
+tickets for principals.
+.TP
+.B \fIticket_flags\fP
+Specifies the ticket flags. If this option is not specified, by
+default, no restriction will be set by the policy. Allowable
+flags are documented in the description of the \fBadd_principal\fP
+command in \fIkadmin(1)\fP\&.
+.TP
+.B \fIpolicy_name\fP
+Specifies the name of the ticket policy.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ create_policy \-r ATHENA.MIT.EDU \-maxtktlife "1 day"
+ \-maxrenewlife "1 week" \-allow_postdated +needchange
+ \-allow_forwardable tktpolicy
+Password for "cn=admin,o=org":
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS modify_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBmodify_policy\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-maxtktlife\fP \fImax_ticket_life\fP]
+[\fB\-maxrenewlife\fP \fImax_renewable_ticket_life\fP]
+[\fIticket_flags\fP]
+\fIpolicy_name\fP
+.UNINDENT
+.UNINDENT
+.sp
+Modifies the attributes of a ticket policy. Options are same as for
+\fBcreate_policy\fP\&.
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H
+ ldaps://ldap\-server1.mit.edu modify_policy \-r ATHENA.MIT.EDU
+ \-maxtktlife "60 minutes" \-maxrenewlife "10 hours"
+ +allow_postdated \-requires_preauth tktpolicy
+Password for "cn=admin,o=org":
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS view_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBview_policy\fP
+[\fB\-r\fP \fIrealm\fP]
+\fIpolicy_name\fP
+.UNINDENT
+.UNINDENT
+.sp
+Displays the attributes of a ticket policy. Options:
+.INDENT 0.0
+.TP
+.B \fIpolicy_name\fP
+Specifies the name of the ticket policy.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ view_policy \-r ATHENA.MIT.EDU tktpolicy
+Password for "cn=admin,o=org":
+Ticket policy: tktpolicy
+Maximum ticket life: 0 days 01:00:00
+Maximum renewable life: 0 days 10:00:00
+Ticket flags: DISALLOW_FORWARDABLE REQUIRES_PWCHANGE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS destroy_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBdestroy_policy\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-force\fP]
+\fIpolicy_name\fP
+.UNINDENT
+.UNINDENT
+.sp
+Destroys an existing ticket policy. Options:
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.TP
+.B \fB\-force\fP
+Forces the deletion of the policy object. If not specified, the
+user will be prompted for confirmation before deleting the policy.
+.TP
+.B \fIpolicy_name\fP
+Specifies the name of the ticket policy.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ destroy_policy \-r ATHENA.MIT.EDU tktpolicy
+Password for "cn=admin,o=org":
+This will delete the policy object \(aqtktpolicy\(aq, are you sure?
+(type \(aqyes\(aq to confirm)? yes
+** policy object \(aqtktpolicy\(aq deleted.
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS list_policy
+.INDENT 0.0
+.INDENT 3.5
+\fBlist_policy\fP
+[\fB\-r\fP \fIrealm\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Lists the ticket policies in realm if specified or in the default
+realm. Options:
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the Kerberos realm of the database.
+.UNINDENT
+.sp
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kdb5_ldap_util \-D cn=admin,o=org \-H ldaps://ldap\-server1.mit.edu
+ list_policy \-r ATHENA.MIT.EDU
+Password for "cn=admin,o=org":
+tktpolicy
+tmppolicy
+userpolicy
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkadmin(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kdb5_util.man b/src/man/kdb5_util.man
new file mode 100644
index 000000000000..cb637cbb0015
--- /dev/null
+++ b/src/man/kdb5_util.man
@@ -0,0 +1,557 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KDB5_UTIL" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kdb5_util \- Kerberos database maintenance utility
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkdb5_util\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-d\fP \fIdbname\fP]
+[\fB\-k\fP \fImkeytype\fP]
+[\fB\-M\fP \fImkeyname\fP]
+[\fB\-kv\fP \fImkeyVNO\fP]
+[\fB\-sf\fP \fIstashfilename\fP]
+[\fB\-m\fP]
+\fIcommand\fP [\fIcommand_options\fP]
+.SH DESCRIPTION
+.sp
+kdb5_util allows an administrator to perform maintenance procedures on
+the KDC database. Databases can be created, destroyed, and dumped to
+or loaded from ASCII files. kdb5_util can create a Kerberos master
+key stash file or perform live rollover of the master key.
+.sp
+When kdb5_util is run, it attempts to acquire the master key and open
+the database. However, execution continues regardless of whether or
+not kdb5_util successfully opens the database, because the database
+may not exist yet or the stash file may be corrupt.
+.sp
+Note that some KDC database modules may not support all kdb5_util
+commands.
+.SH COMMAND-LINE OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+specifies the Kerberos realm of the database.
+.TP
+.B \fB\-d\fP \fIdbname\fP
+specifies the name under which the principal database is stored;
+by default the database is that listed in \fIkdc.conf(5)\fP\&. The
+password policy database and lock files are also derived from this
+value.
+.TP
+.B \fB\-k\fP \fImkeytype\fP
+specifies the key type of the master key in the database. The
+default is given by the \fBmaster_key_type\fP variable in
+\fIkdc.conf(5)\fP\&.
+.TP
+.B \fB\-kv\fP \fImkeyVNO\fP
+Specifies the version number of the master key in the database;
+the default is 1. Note that 0 is not allowed.
+.TP
+.B \fB\-M\fP \fImkeyname\fP
+principal name for the master key in the database. If not
+specified, the name is determined by the \fBmaster_key_name\fP
+variable in \fIkdc.conf(5)\fP\&.
+.TP
+.B \fB\-m\fP
+specifies that the master database password should be read from
+the keyboard rather than fetched from a file on disk.
+.TP
+.B \fB\-sf\fP \fIstash_file\fP
+specifies the stash filename of the master database password. If
+not specified, the filename is determined by the
+\fBkey_stash_file\fP variable in \fIkdc.conf(5)\fP\&.
+.TP
+.B \fB\-P\fP \fIpassword\fP
+specifies the master database password. Using this option may
+expose the password to other users on the system via the process
+list.
+.UNINDENT
+.SH COMMANDS
+.SS create
+.INDENT 0.0
+.INDENT 3.5
+\fBcreate\fP [\fB\-s\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Creates a new database. If the \fB\-s\fP option is specified, the stash
+file is also created. This command fails if the database already
+exists. If the command is successful, the database is opened just as
+if it had already existed when the program was first run.
+.SS destroy
+.INDENT 0.0
+.INDENT 3.5
+\fBdestroy\fP [\fB\-f\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Destroys the database, first overwriting the disk sectors and then
+unlinking the files, after prompting the user for confirmation. With
+the \fB\-f\fP argument, does not prompt the user.
+.SS stash
+.INDENT 0.0
+.INDENT 3.5
+\fBstash\fP [\fB\-f\fP \fIkeyfile\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Stores the master principal\(aqs keys in a stash file. The \fB\-f\fP
+argument can be used to override the \fIkeyfile\fP specified in
+\fIkdc.conf(5)\fP\&.
+.SS dump
+.INDENT 0.0
+.INDENT 3.5
+\fBdump\fP [\fB\-b7\fP|\fB\-ov\fP|\fB\-r13\fP] [\fB\-verbose\fP]
+[\fB\-mkey_convert\fP] [\fB\-new_mkey_file\fP \fImkey_file\fP] [\fB\-rev\fP]
+[\fB\-recurse\fP] [\fIfilename\fP [\fIprincipals\fP\&...]]
+.UNINDENT
+.UNINDENT
+.sp
+Dumps the current Kerberos and KADM5 database into an ASCII file. By
+default, the database is dumped in current format, "kdb5_util
+load_dump version 7". If filename is not specified, or is the string
+"\-", the dump is sent to standard output. Options:
+.INDENT 0.0
+.TP
+.B \fB\-b7\fP
+causes the dump to be in the Kerberos 5 Beta 7 format ("kdb5_util
+load_dump version 4"). This was the dump format produced on
+releases prior to 1.2.2.
+.TP
+.B \fB\-ov\fP
+causes the dump to be in "ovsec_adm_export" format.
+.TP
+.B \fB\-r13\fP
+causes the dump to be in the Kerberos 5 1.3 format ("kdb5_util
+load_dump version 5"). This was the dump format produced on
+releases prior to 1.8.
+.TP
+.B \fB\-r18\fP
+causes the dump to be in the Kerberos 5 1.8 format ("kdb5_util
+load_dump version 6"). This was the dump format produced on
+releases prior to 1.11.
+.TP
+.B \fB\-verbose\fP
+causes the name of each principal and policy to be printed as it
+is dumped.
+.TP
+.B \fB\-mkey_convert\fP
+prompts for a new master key. This new master key will be used to
+re\-encrypt principal key data in the dumpfile. The principal keys
+themselves will not be changed.
+.TP
+.B \fB\-new_mkey_file\fP \fImkey_file\fP
+the filename of a stash file. The master key in this stash file
+will be used to re\-encrypt the key data in the dumpfile. The key
+data in the database will not be changed.
+.TP
+.B \fB\-rev\fP
+dumps in reverse order. This may recover principals that do not
+dump normally, in cases where database corruption has occurred.
+.TP
+.B \fB\-recurse\fP
+causes the dump to walk the database recursively (btree only).
+This may recover principals that do not dump normally, in cases
+where database corruption has occurred. In cases of such
+corruption, this option will probably retrieve more principals
+than the \fB\-rev\fP option will.
+.sp
+Changed in version 1.15: Release 1.15 restored the functionality of the \fB\-recurse\fP
+option.
+
+.sp
+Changed in version 1.5: The \fB\-recurse\fP option ceased working until release 1.15,
+doing a normal dump instead of a recursive traversal.
+
+.UNINDENT
+.SS load
+.INDENT 0.0
+.INDENT 3.5
+\fBload\fP [\fB\-b7\fP|\fB\-ov\fP|\fB\-r13\fP] [\fB\-hash\fP]
+[\fB\-verbose\fP] [\fB\-update\fP] \fIfilename\fP [\fIdbname\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Loads a database dump from the named file into the named database. If
+no option is given to determine the format of the dump file, the
+format is detected automatically and handled as appropriate. Unless
+the \fB\-update\fP option is given, \fBload\fP creates a new database
+containing only the data in the dump file, overwriting the contents of
+any previously existing database. Note that when using the LDAP KDC
+database module, the \fB\-update\fP flag is required.
+.sp
+Options:
+.INDENT 0.0
+.TP
+.B \fB\-b7\fP
+requires the database to be in the Kerberos 5 Beta 7 format
+("kdb5_util load_dump version 4"). This was the dump format
+produced on releases prior to 1.2.2.
+.TP
+.B \fB\-ov\fP
+requires the database to be in "ovsec_adm_import" format. Must be
+used with the \fB\-update\fP option.
+.TP
+.B \fB\-r13\fP
+requires the database to be in Kerberos 5 1.3 format ("kdb5_util
+load_dump version 5"). This was the dump format produced on
+releases prior to 1.8.
+.TP
+.B \fB\-r18\fP
+requires the database to be in Kerberos 5 1.8 format ("kdb5_util
+load_dump version 6"). This was the dump format produced on
+releases prior to 1.11.
+.TP
+.B \fB\-hash\fP
+requires the database to be stored as a hash. If this option is
+not specified, the database will be stored as a btree. This
+option is not recommended, as databases stored in hash format are
+known to corrupt data and lose principals.
+.TP
+.B \fB\-verbose\fP
+causes the name of each principal and policy to be printed as it
+is dumped.
+.TP
+.B \fB\-update\fP
+records from the dump file are added to or updated in the existing
+database. Otherwise, a new database is created containing only
+what is in the dump file and the old one destroyed upon successful
+completion.
+.UNINDENT
+.sp
+If specified, \fIdbname\fP overrides the value specified on the command
+line or the default.
+.SS ark
+.INDENT 0.0
+.INDENT 3.5
+\fBark\fP [\fB\-e\fP \fIenc\fP:\fIsalt\fP,...] \fIprincipal\fP
+.UNINDENT
+.UNINDENT
+.sp
+Adds new random keys to \fIprincipal\fP at the next available key version
+number. Keys for the current highest key version number will be
+preserved. The \fB\-e\fP option specifies the list of encryption and
+salt types to be used for the new keys.
+.SS add_mkey
+.INDENT 0.0
+.INDENT 3.5
+\fBadd_mkey\fP [\fB\-e\fP \fIetype\fP] [\fB\-s\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Adds a new master key to the master key principal, but does not mark
+it as active. Existing master keys will remain. The \fB\-e\fP option
+specifies the encryption type of the new master key; see
+\fIEncryption_types\fP in \fIkdc.conf(5)\fP for a list of possible
+values. The \fB\-s\fP option stashes the new master key in the stash
+file, which will be created if it doesn\(aqt already exist.
+.sp
+After a new master key is added, it should be propagated to slave
+servers via a manual or periodic invocation of \fIkprop(8)\fP\&. Then,
+the stash files on the slave servers should be updated with the
+kdb5_util \fBstash\fP command. Once those steps are complete, the key
+is ready to be marked active with the kdb5_util \fBuse_mkey\fP command.
+.SS use_mkey
+.INDENT 0.0
+.INDENT 3.5
+\fBuse_mkey\fP \fImkeyVNO\fP [\fItime\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Sets the activation time of the master key specified by \fImkeyVNO\fP\&.
+Once a master key becomes active, it will be used to encrypt newly
+created principal keys. If no \fItime\fP argument is given, the current
+time is used, causing the specified master key version to become
+active immediately. The format for \fItime\fP is \fIgetdate\fP string.
+.sp
+After a new master key becomes active, the kdb5_util
+\fBupdate_princ_encryption\fP command can be used to update all
+principal keys to be encrypted in the new master key.
+.SS list_mkeys
+.INDENT 0.0
+.INDENT 3.5
+\fBlist_mkeys\fP
+.UNINDENT
+.UNINDENT
+.sp
+List all master keys, from most recent to earliest, in the master key
+principal. The output will show the kvno, enctype, and salt type for
+each mkey, similar to the output of \fIkadmin(1)\fP \fBgetprinc\fP\&. A
+\fB*\fP following an mkey denotes the currently active master key.
+.SS purge_mkeys
+.INDENT 0.0
+.INDENT 3.5
+\fBpurge_mkeys\fP [\fB\-f\fP] [\fB\-n\fP] [\fB\-v\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Delete master keys from the master key principal that are not used to
+protect any principals. This command can be used to remove old master
+keys all principal keys are protected by a newer master key.
+.INDENT 0.0
+.TP
+.B \fB\-f\fP
+does not prompt for confirmation.
+.TP
+.B \fB\-n\fP
+performs a dry run, showing master keys that would be purged, but
+not actually purging any keys.
+.TP
+.B \fB\-v\fP
+gives more verbose output.
+.UNINDENT
+.SS update_princ_encryption
+.INDENT 0.0
+.INDENT 3.5
+\fBupdate_princ_encryption\fP [\fB\-f\fP] [\fB\-n\fP] [\fB\-v\fP]
+[\fIprinc\-pattern\fP]
+.UNINDENT
+.UNINDENT
+.sp
+Update all principal records (or only those matching the
+\fIprinc\-pattern\fP glob pattern) to re\-encrypt the key data using the
+active database master key, if they are encrypted using a different
+version, and give a count at the end of the number of principals
+updated. If the \fB\-f\fP option is not given, ask for confirmation
+before starting to make changes. The \fB\-v\fP option causes each
+principal processed to be listed, with an indication as to whether it
+needed updating or not. The \fB\-n\fP option performs a dry run, only
+showing the actions which would have been taken.
+.SS tabdump
+.INDENT 0.0
+.INDENT 3.5
+\fBtabdump\fP [\fB\-H\fP] [\fB\-c\fP] [\fB\-e\fP] [\fB\-n\fP] [\fB\-o\fP \fIoutfile\fP]
+\fIdumptype\fP
+.UNINDENT
+.UNINDENT
+.sp
+Dump selected fields of the database in a tabular format suitable for
+reporting (e.g., using traditional Unix text processing tools) or
+importing into relational databases. The data format is tab\-separated
+(default), or optionally comma\-separated (CSV), with a fixed number of
+columns. The output begins with a header line containing field names,
+unless suppression is requested using the \fB\-H\fP option.
+.sp
+The \fIdumptype\fP parameter specifies the name of an output table (see
+below).
+.sp
+Options:
+.INDENT 0.0
+.TP
+.B \fB\-H\fP
+suppress writing the field names in a header line
+.TP
+.B \fB\-c\fP
+use comma separated values (CSV) format, with minimal quoting,
+instead of the default tab\-separated (unquoted, unescaped) format
+.TP
+.B \fB\-e\fP
+write empty hexadecimal string fields as empty fields instead of
+as "\-1".
+.TP
+.B \fB\-n\fP
+produce numeric output for fields that normally have symbolic
+output, such as enctypes and flag names. Also requests output of
+time stamps as decimal POSIX time_t values.
+.TP
+.B \fB\-o\fP \fIoutfile\fP
+write the dump to the specified output file instead of to standard
+output
+.UNINDENT
+.sp
+Dump types:
+.INDENT 0.0
+.TP
+.B \fBkeydata\fP
+principal encryption key information, including actual key data
+(which is still encrypted in the master key)
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBkeyindex\fP
+index of this key in the principal\(aqs key list
+.TP
+.B \fBkvno\fP
+key version number
+.TP
+.B \fBenctype\fP
+encryption type
+.TP
+.B \fBkey\fP
+key data as a hexadecimal string
+.TP
+.B \fBsalttype\fP
+salt type
+.TP
+.B \fBsalt\fP
+salt data as a hexadecimal string
+.UNINDENT
+.TP
+.B \fBkeyinfo\fP
+principal encryption key information (as in \fBkeydata\fP above),
+excluding actual key data
+.TP
+.B \fBprinc_flags\fP
+principal boolean attributes. Flag names print as hexadecimal
+numbers if the \fB\-n\fP option is specified, and all flag positions
+are printed regardless of whether or not they are set. If \fB\-n\fP
+is not specified, print all known flag names for each principal,
+but only print hexadecimal flag names if the corresponding flag is
+set.
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBflag\fP
+flag name
+.TP
+.B \fBvalue\fP
+boolean value (0 for clear, or 1 for set)
+.UNINDENT
+.TP
+.B \fBprinc_lockout\fP
+state information used for tracking repeated password failures
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBlast_success\fP
+time stamp of most recent successful authentication
+.TP
+.B \fBlast_failed\fP
+time stamp of most recent failed authentication
+.TP
+.B \fBfail_count\fP
+count of failed attempts
+.UNINDENT
+.TP
+.B \fBprinc_meta\fP
+principal metadata
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBmodby\fP
+name of last principal to modify this principal
+.TP
+.B \fBmodtime\fP
+timestamp of last modification
+.TP
+.B \fBlastpwd\fP
+timestamp of last password change
+.TP
+.B \fBpolicy\fP
+policy object name
+.TP
+.B \fBmkvno\fP
+key version number of the master key that encrypts this
+principal\(aqs key data
+.TP
+.B \fBhist_kvno\fP
+key version number of the history key that encrypts the key
+history data for this principal
+.UNINDENT
+.TP
+.B \fBprinc_stringattrs\fP
+string attributes (key/value pairs)
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBkey\fP
+attribute name
+.TP
+.B \fBvalue\fP
+attribute value
+.UNINDENT
+.TP
+.B \fBprinc_tktpolicy\fP
+per\-principal ticket policy data, including maximum ticket
+lifetimes
+.INDENT 7.0
+.TP
+.B \fBname\fP
+principal name
+.TP
+.B \fBexpiration\fP
+principal expiration date
+.TP
+.B \fBpw_expiration\fP
+password expiration date
+.TP
+.B \fBmax_life\fP
+maximum ticket lifetime
+.TP
+.B \fBmax_renew_life\fP
+maximum renewable ticket lifetime
+.UNINDENT
+.UNINDENT
+.sp
+Examples:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ kdb5_util tabdump \-o keyinfo.txt keyinfo
+$ cat keyinfo.txt
+name keyindex kvno enctype salttype salt
+foo@EXAMPLE.COM 0 1 aes128\-cts\-hmac\-sha1\-96 normal \-1
+bar@EXAMPLE.COM 0 1 aes128\-cts\-hmac\-sha1\-96 normal \-1
+bar@EXAMPLE.COM 1 1 des\-cbc\-crc normal \-1
+$ sqlite3
+sqlite> .mode tabs
+sqlite> .import keyinfo.txt keyinfo
+sqlite> select * from keyinfo where enctype like \(aqdes\-cbc\-%\(aq;
+bar@EXAMPLE.COM 1 1 des\-cbc\-crc normal \-1
+sqlite> .quit
+$ awk \-F\(aq\et\(aq \(aq$4 ~ /des\-cbc\-/ { print }\(aq keyinfo.txt
+bar@EXAMPLE.COM 1 1 des\-cbc\-crc normal \-1
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkadmin(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kdc.conf.man b/src/man/kdc.conf.man
new file mode 100644
index 000000000000..10b333c38d29
--- /dev/null
+++ b/src/man/kdc.conf.man
@@ -0,0 +1,1196 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KDC.CONF" "5" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kdc.conf \- Kerberos V5 KDC configuration file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.sp
+The kdc.conf file supplements \fIkrb5.conf(5)\fP for programs which
+are typically only used on a KDC, such as the \fIkrb5kdc(8)\fP and
+\fIkadmind(8)\fP daemons and the \fIkdb5_util(8)\fP program.
+Relations documented here may also be specified in krb5.conf; for the
+KDC programs mentioned, krb5.conf and kdc.conf will be merged into a
+single configuration profile.
+.sp
+Normally, the kdc.conf file is found in the KDC state directory,
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\&. You can override the default location by setting the
+environment variable \fBKRB5_KDC_PROFILE\fP\&.
+.sp
+Please note that you need to restart the KDC daemon for any configuration
+changes to take effect.
+.SH STRUCTURE
+.sp
+The kdc.conf file is set up in the same format as the
+\fIkrb5.conf(5)\fP file.
+.SH SECTIONS
+.sp
+The kdc.conf file may contain the following sections:
+.TS
+center;
+|l|l|.
+_
+T{
+\fI\%[kdcdefaults]\fP
+T} T{
+Default values for KDC behavior
+T}
+_
+T{
+\fI\%[realms]\fP
+T} T{
+Realm\-specific database configuration and settings
+T}
+_
+T{
+\fI\%[dbdefaults]\fP
+T} T{
+Default database settings
+T}
+_
+T{
+\fI\%[dbmodules]\fP
+T} T{
+Per\-database settings
+T}
+_
+T{
+\fI\%[logging]\fP
+T} T{
+Controls how Kerberos daemons perform logging
+T}
+_
+.TE
+.SS [kdcdefaults]
+.sp
+With two exceptions, relations in the [kdcdefaults] section specify
+default values for realm variables, to be used if the [realms]
+subsection does not contain a relation for the tag. See the
+\fI\%[realms]\fP section for the definitions of these relations.
+.INDENT 0.0
+.IP \(bu 2
+\fBhost_based_services\fP
+.IP \(bu 2
+\fBkdc_listen\fP
+.IP \(bu 2
+\fBkdc_ports\fP
+.IP \(bu 2
+\fBkdc_tcp_listen\fP
+.IP \(bu 2
+\fBkdc_tcp_ports\fP
+.IP \(bu 2
+\fBno_host_referral\fP
+.IP \(bu 2
+\fBrestrict_anonymous_to_tgt\fP
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fBkdc_max_dgram_reply_size\fP
+Specifies the maximum packet size that can be sent over UDP. The
+default value is 4096 bytes.
+.TP
+.B \fBkdc_tcp_listen_backlog\fP
+(Integer.) Set the size of the listen queue length for the KDC
+daemon. The value may be limited by OS settings. The default
+value is 5.
+.UNINDENT
+.SS [realms]
+.sp
+Each tag in the [realms] section is the name of a Kerberos realm. The
+value of the tag is a subsection where the relations define KDC
+parameters for that particular realm. The following example shows how
+to define one parameter for the ATHENA.MIT.EDU realm:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[realms]
+ ATHENA.MIT.EDU = {
+ max_renewable_life = 7d 0h 0m 0s
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The following tags may be specified in a [realms] subsection:
+.INDENT 0.0
+.TP
+.B \fBacl_file\fP
+(String.) Location of the access control list file that
+\fIkadmind(8)\fP uses to determine which principals are allowed
+which permissions on the Kerberos database. The default value is
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/kadm5.acl\fP\&. For more information on Kerberos ACL
+file see \fIkadm5.acl(5)\fP\&.
+.TP
+.B \fBdatabase_module\fP
+(String.) This relation indicates the name of the configuration
+section under \fI\%[dbmodules]\fP for database\-specific parameters
+used by the loadable database library. The default value is the
+realm name. If this configuration section does not exist, default
+values will be used for all database parameters.
+.TP
+.B \fBdatabase_name\fP
+(String, deprecated.) This relation specifies the location of the
+Kerberos database for this realm, if the DB2 module is being used
+and the \fI\%[dbmodules]\fP configuration section does not specify a
+database name. The default value is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/principal\fP\&.
+.TP
+.B \fBdefault_principal_expiration\fP
+(\fIabstime\fP string.) Specifies the default expiration date of
+principals created in this realm. The default value is 0, which
+means no expiration date.
+.TP
+.B \fBdefault_principal_flags\fP
+(Flag string.) Specifies the default attributes of principals
+created in this realm. The format for this string is a
+comma\-separated list of flags, with \(aq+\(aq before each flag that
+should be enabled and \(aq\-\(aq before each flag that should be
+disabled. The \fBpostdateable\fP, \fBforwardable\fP, \fBtgt\-based\fP,
+\fBrenewable\fP, \fBproxiable\fP, \fBdup\-skey\fP, \fBallow\-tickets\fP, and
+\fBservice\fP flags default to enabled.
+.sp
+There are a number of possible flags:
+.INDENT 7.0
+.TP
+.B \fBallow\-tickets\fP
+Enabling this flag means that the KDC will issue tickets for
+this principal. Disabling this flag essentially deactivates
+the principal within this realm.
+.TP
+.B \fBdup\-skey\fP
+Enabling this flag allows the principal to obtain a session
+key for another user, permitting user\-to\-user authentication
+for this principal.
+.TP
+.B \fBforwardable\fP
+Enabling this flag allows the principal to obtain forwardable
+tickets.
+.TP
+.B \fBhwauth\fP
+If this flag is enabled, then the principal is required to
+preauthenticate using a hardware device before receiving any
+tickets.
+.TP
+.B \fBno\-auth\-data\-required\fP
+Enabling this flag prevents PAC or AD\-SIGNEDPATH data from
+being added to service tickets for the principal.
+.TP
+.B \fBok\-as\-delegate\fP
+If this flag is enabled, it hints the client that credentials
+can and should be delegated when authenticating to the
+service.
+.TP
+.B \fBok\-to\-auth\-as\-delegate\fP
+Enabling this flag allows the principal to use S4USelf tickets.
+.TP
+.B \fBpostdateable\fP
+Enabling this flag allows the principal to obtain postdateable
+tickets.
+.TP
+.B \fBpreauth\fP
+If this flag is enabled on a client principal, then that
+principal is required to preauthenticate to the KDC before
+receiving any tickets. On a service principal, enabling this
+flag means that service tickets for this principal will only
+be issued to clients with a TGT that has the preauthenticated
+bit set.
+.TP
+.B \fBproxiable\fP
+Enabling this flag allows the principal to obtain proxy
+tickets.
+.TP
+.B \fBpwchange\fP
+Enabling this flag forces a password change for this
+principal.
+.TP
+.B \fBpwservice\fP
+If this flag is enabled, it marks this principal as a password
+change service. This should only be used in special cases,
+for example, if a user\(aqs password has expired, then the user
+has to get tickets for that principal without going through
+the normal password authentication in order to be able to
+change the password.
+.TP
+.B \fBrenewable\fP
+Enabling this flag allows the principal to obtain renewable
+tickets.
+.TP
+.B \fBservice\fP
+Enabling this flag allows the the KDC to issue service tickets
+for this principal.
+.TP
+.B \fBtgt\-based\fP
+Enabling this flag allows a principal to obtain tickets based
+on a ticket\-granting\-ticket, rather than repeating the
+authentication process that was used to obtain the TGT.
+.UNINDENT
+.TP
+.B \fBdict_file\fP
+(String.) Location of the dictionary file containing strings that
+are not allowed as passwords. The file should contain one string
+per line, with no additional whitespace. If none is specified or
+if there is no policy assigned to the principal, no dictionary
+checks of passwords will be performed.
+.TP
+.B \fBhost_based_services\fP
+(Whitespace\- or comma\-separated list.) Lists services which will
+get host\-based referral processing even if the server principal is
+not marked as host\-based by the client.
+.TP
+.B \fBiprop_enable\fP
+(Boolean value.) Specifies whether incremental database
+propagation is enabled. The default value is false.
+.TP
+.B \fBiprop_master_ulogsize\fP
+(Integer.) Specifies the maximum number of log entries to be
+retained for incremental propagation. The default value is 1000.
+Prior to release 1.11, the maximum value was 2500.
+.TP
+.B \fBiprop_slave_poll\fP
+(Delta time string.) Specifies how often the slave KDC polls for
+new updates from the master. The default value is \fB2m\fP (that
+is, two minutes).
+.TP
+.B \fBiprop_listen\fP
+(Whitespace\- or comma\-separated list.) Specifies the iprop RPC
+listening addresses and/or ports for the \fIkadmind(8)\fP daemon.
+Each entry may be an interface address, a port number, or an
+address and port number separated by a colon. If the address
+contains colons, enclose it in square brackets. If no address is
+specified, the wildcard address is used. If kadmind fails to bind
+to any of the specified addresses, it will fail to start. The
+default (when \fBiprop_enable\fP is true) is to bind to the wildcard
+address at the port specified in \fBiprop_port\fP\&. New in release
+1.15.
+.TP
+.B \fBiprop_port\fP
+(Port number.) Specifies the port number to be used for
+incremental propagation. When \fBiprop_enable\fP is true, this
+relation is required in the slave configuration file, and this
+relation or \fBiprop_listen\fP is required in the master
+configuration file, as there is no default port number. Port
+numbers specified in \fBiprop_listen\fP entries will override this
+port number for the \fIkadmind(8)\fP daemon.
+.TP
+.B \fBiprop_resync_timeout\fP
+(Delta time string.) Specifies the amount of time to wait for a
+full propagation to complete. This is optional in configuration
+files, and is used by slave KDCs only. The default value is 5
+minutes (\fB5m\fP). New in release 1.11.
+.TP
+.B \fBiprop_logfile\fP
+(File name.) Specifies where the update log file for the realm
+database is to be stored. The default is to use the
+\fBdatabase_name\fP entry from the realms section of the krb5 config
+file, with \fB\&.ulog\fP appended. (NOTE: If \fBdatabase_name\fP isn\(aqt
+specified in the realms section, perhaps because the LDAP database
+back end is being used, or the file name is specified in the
+[dbmodules] section, then the hard\-coded default for
+\fBdatabase_name\fP is used. Determination of the \fBiprop_logfile\fP
+default value will not use values from the [dbmodules] section.)
+.TP
+.B \fBkadmind_listen\fP
+(Whitespace\- or comma\-separated list.) Specifies the kadmin RPC
+listening addresses and/or ports for the \fIkadmind(8)\fP daemon.
+Each entry may be an interface address, a port number, or an
+address and port number separated by a colon. If the address
+contains colons, enclose it in square brackets. If no address is
+specified, the wildcard address is used. If kadmind fails to bind
+to any of the specified addresses, it will fail to start. The
+default is to bind to the wildcard address at the port specified
+in \fBkadmind_port\fP, or the standard kadmin port (749). New in
+release 1.15.
+.TP
+.B \fBkadmind_port\fP
+(Port number.) Specifies the port on which the \fIkadmind(8)\fP
+daemon is to listen for this realm. Port numbers specified in
+\fBkadmind_listen\fP entries will override this port number. The
+assigned port for kadmind is 749, which is used by default.
+.TP
+.B \fBkey_stash_file\fP
+(String.) Specifies the location where the master key has been
+stored (via kdb5_util stash). The default is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/.k5.REALM\fP, where \fIREALM\fP is the Kerberos realm.
+.TP
+.B \fBkdc_listen\fP
+(Whitespace\- or comma\-separated list.) Specifies the UDP
+listening addresses and/or ports for the \fIkrb5kdc(8)\fP daemon.
+Each entry may be an interface address, a port number, or an
+address and port number separated by a colon. If the address
+contains colons, enclose it in square brackets. If no address is
+specified, the wildcard address is used. If no port is specified,
+the standard port (88) is used. If the KDC daemon fails to bind
+to any of the specified addresses, it will fail to start. The
+default is to bind to the wildcard address on the standard port.
+New in release 1.15.
+.TP
+.B \fBkdc_ports\fP
+(Whitespace\- or comma\-separated list, deprecated.) Prior to
+release 1.15, this relation lists the ports for the
+\fIkrb5kdc(8)\fP daemon to listen on for UDP requests. In
+release 1.15 and later, it has the same meaning as \fBkdc_listen\fP
+if that relation is not defined.
+.TP
+.B \fBkdc_tcp_listen\fP
+(Whitespace\- or comma\-separated list.) Specifies the TCP
+listening addresses and/or ports for the \fIkrb5kdc(8)\fP daemon.
+Each entry may be an interface address, a port number, or an
+address and port number separated by a colon. If the address
+contains colons, enclose it in square brackets. If no address is
+specified, the wildcard address is used. If no port is specified,
+the standard port (88) is used. To disable listening on TCP, set
+this relation to the empty string with \fBkdc_tcp_listen = ""\fP\&.
+If the KDC daemon fails to bind to any of the specified addresses,
+it will fail to start. The default is to bind to the wildcard
+address on the standard port. New in release 1.15.
+.TP
+.B \fBkdc_tcp_ports\fP
+(Whitespace\- or comma\-separated list, deprecated.) Prior to
+release 1.15, this relation lists the ports for the
+\fIkrb5kdc(8)\fP daemon to listen on for UDP requests. In
+release 1.15 and later, it has the same meaning as
+\fBkdc_tcp_listen\fP if that relation is not defined.
+.TP
+.B \fBkpasswd_listen\fP
+(Comma\-separated list.) Specifies the kpasswd listening addresses
+and/or ports for the \fIkadmind(8)\fP daemon. Each entry may be
+an interface address, a port number, or an address and port number
+separated by a colon. If the address contains colons, enclose it
+in square brackets. If no address is specified, the wildcard
+address is used. If kadmind fails to bind to any of the specified
+addresses, it will fail to start. The default is to bind to the
+wildcard address at the port specified in \fBkpasswd_port\fP, or the
+standard kpasswd port (464). New in release 1.15.
+.TP
+.B \fBkpasswd_port\fP
+(Port number.) Specifies the port on which the \fIkadmind(8)\fP
+daemon is to listen for password change requests for this realm.
+Port numbers specified in \fBkpasswd_listen\fP entries will override
+this port number. The assigned port for password change requests
+is 464, which is used by default.
+.TP
+.B \fBmaster_key_name\fP
+(String.) Specifies the name of the principal associated with the
+master key. The default is \fBK/M\fP\&.
+.TP
+.B \fBmaster_key_type\fP
+(Key type string.) Specifies the master key\(aqs key type. The
+default value for this is \fBaes256\-cts\-hmac\-sha1\-96\fP\&. For a list of all possible
+values, see \fI\%Encryption types\fP\&.
+.TP
+.B \fBmax_life\fP
+(\fIduration\fP string.) Specifies the maximum time period for
+which a ticket may be valid in this realm. The default value is
+24 hours.
+.TP
+.B \fBmax_renewable_life\fP
+(\fIduration\fP string.) Specifies the maximum time period
+during which a valid ticket may be renewed in this realm.
+The default value is 0.
+.TP
+.B \fBno_host_referral\fP
+(Whitespace\- or comma\-separated list.) Lists services to block
+from getting host\-based referral processing, even if the client
+marks the server principal as host\-based or the service is also
+listed in \fBhost_based_services\fP\&. \fBno_host_referral = *\fP will
+disable referral processing altogether.
+.TP
+.B \fBdes_crc_session_supported\fP
+(Boolean value). If set to true, the KDC will assume that service
+principals support des\-cbc\-crc for session key enctype negotiation
+purposes. If \fBallow_weak_crypto\fP in \fIlibdefaults\fP is
+false, or if des\-cbc\-crc is not a permitted enctype, then this
+variable has no effect. Defaults to true. New in release 1.11.
+.TP
+.B \fBreject_bad_transit\fP
+(Boolean value.) If set to true, the KDC will check the list of
+transited realms for cross\-realm tickets against the transit path
+computed from the realm names and the capaths section of its
+\fIkrb5.conf(5)\fP file; if the path in the ticket to be issued
+contains any realms not in the computed path, the ticket will not
+be issued, and an error will be returned to the client instead.
+If this value is set to false, such tickets will be issued
+anyways, and it will be left up to the application server to
+validate the realm transit path.
+.sp
+If the disable\-transited\-check flag is set in the incoming
+request, this check is not performed at all. Having the
+\fBreject_bad_transit\fP option will cause such ticket requests to
+be rejected always.
+.sp
+This transit path checking and config file option currently apply
+only to TGS requests.
+.sp
+The default value is true.
+.TP
+.B \fBrestrict_anonymous_to_tgt\fP
+(Boolean value.) If set to true, the KDC will reject ticket
+requests from anonymous principals to service principals other
+than the realm\(aqs ticket\-granting service. This option allows
+anonymous PKINIT to be enabled for use as FAST armor tickets
+without allowing anonymous authentication to services. The
+default value is false. New in release 1.9.
+.TP
+.B \fBsupported_enctypes\fP
+(List of \fIkey\fP:\fIsalt\fP strings.) Specifies the default key/salt
+combinations of principals for this realm. Any principals created
+through \fIkadmin(1)\fP will have keys of these types. The
+default value for this tag is \fBaes256\-cts\-hmac\-sha1\-96:normal aes128\-cts\-hmac\-sha1\-96:normal des3\-cbc\-sha1:normal arcfour\-hmac\-md5:normal\fP\&. For lists of
+possible values, see \fI\%Keysalt lists\fP\&.
+.UNINDENT
+.SS [dbdefaults]
+.sp
+The [dbdefaults] section specifies default values for some database
+parameters, to be used if the [dbmodules] subsection does not contain
+a relation for the tag. See the \fI\%[dbmodules]\fP section for the
+definitions of these relations.
+.INDENT 0.0
+.IP \(bu 2
+\fBldap_kerberos_container_dn\fP
+.IP \(bu 2
+\fBldap_kdc_dn\fP
+.IP \(bu 2
+\fBldap_kdc_sasl_authcid\fP
+.IP \(bu 2
+\fBldap_kdc_sasl_authzid\fP
+.IP \(bu 2
+\fBldap_kdc_sasl_mech\fP
+.IP \(bu 2
+\fBldap_kdc_sasl_realm\fP
+.IP \(bu 2
+\fBldap_kadmind_dn\fP
+.IP \(bu 2
+\fBldap_kadmind_sasl_authcid\fP
+.IP \(bu 2
+\fBldap_kadmind_sasl_authzid\fP
+.IP \(bu 2
+\fBldap_kadmind_sasl_mech\fP
+.IP \(bu 2
+\fBldap_kadmind_sasl_realm\fP
+.IP \(bu 2
+\fBldap_service_password_file\fP
+.IP \(bu 2
+\fBldap_servers\fP
+.IP \(bu 2
+\fBldap_conns_per_server\fP
+.UNINDENT
+.SS [dbmodules]
+.sp
+The [dbmodules] section contains parameters used by the KDC database
+library and database modules. Each tag in the [dbmodules] section is
+the name of a Kerberos realm or a section name specified by a realm\(aqs
+\fBdatabase_module\fP parameter. The following example shows how to
+define one database parameter for the ATHENA.MIT.EDU realm:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[dbmodules]
+ ATHENA.MIT.EDU = {
+ disable_last_success = true
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The following tags may be specified in a [dbmodules] subsection:
+.INDENT 0.0
+.TP
+.B \fBdatabase_name\fP
+This DB2\-specific tag indicates the location of the database in
+the filesystem. The default is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/principal\fP\&.
+.TP
+.B \fBdb_library\fP
+This tag indicates the name of the loadable database module. The
+value should be \fBdb2\fP for the DB2 module and \fBkldap\fP for the
+LDAP module.
+.TP
+.B \fBdisable_last_success\fP
+If set to \fBtrue\fP, suppresses KDC updates to the "Last successful
+authentication" field of principal entries requiring
+preauthentication. Setting this flag may improve performance.
+(Principal entries which do not require preauthentication never
+update the "Last successful authentication" field.). First
+introduced in release 1.9.
+.TP
+.B \fBdisable_lockout\fP
+If set to \fBtrue\fP, suppresses KDC updates to the "Last failed
+authentication" and "Failed password attempts" fields of principal
+entries requiring preauthentication. Setting this flag may
+improve performance, but also disables account lockout. First
+introduced in release 1.9.
+.TP
+.B \fBldap_conns_per_server\fP
+This LDAP\-specific tag indicates the number of connections to be
+maintained per LDAP server.
+.TP
+.B \fBldap_kdc_dn\fP and \fBldap_kadmind_dn\fP
+These LDAP\-specific tags indicate the default DN for binding to
+the LDAP server. The \fIkrb5kdc(8)\fP daemon uses
+\fBldap_kdc_dn\fP, while the \fIkadmind(8)\fP daemon and other
+administrative programs use \fBldap_kadmind_dn\fP\&. The kadmind DN
+must have the rights to read and write the Kerberos data in the
+LDAP database. The KDC DN must have the same rights, unless
+\fBdisable_lockout\fP and \fBdisable_last_success\fP are true, in
+which case it only needs to have rights to read the Kerberos data.
+These tags are ignored if a SASL mechanism is set with
+\fBldap_kdc_sasl_mech\fP or \fBldap_kadmind_sasl_mech\fP\&.
+.TP
+.B \fBldap_kdc_sasl_mech\fP and \fBldap_kadmind_sasl_mech\fP
+These LDAP\-specific tags specify the SASL mechanism (such as
+\fBEXTERNAL\fP) to use when binding to the LDAP server. New in
+release 1.13.
+.TP
+.B \fBldap_kdc_sasl_authcid\fP and \fBldap_kadmind_sasl_authcid\fP
+These LDAP\-specific tags specify the SASL authentication identity
+to use when binding to the LDAP server. Not all SASL mechanisms
+require an authentication identity. If the SASL mechanism
+requires a secret (such as the password for \fBDIGEST\-MD5\fP), these
+tags also determine the name within the
+\fBldap_service_password_file\fP where the secret is stashed. New
+in release 1.13.
+.TP
+.B \fBldap_kdc_sasl_authzid\fP and \fBldap_kadmind_sasl_authzid\fP
+These LDAP\-specific tags specify the SASL authorization identity
+to use when binding to the LDAP server. In most circumstances
+they do not need to be specified. New in release 1.13.
+.TP
+.B \fBldap_kdc_sasl_realm\fP and \fBldap_kadmind_sasl_realm\fP
+These LDAP\-specific tags specify the SASL realm to use when
+binding to the LDAP server. In most circumstances they do not
+need to be set. New in release 1.13.
+.TP
+.B \fBldap_kerberos_container_dn\fP
+This LDAP\-specific tag indicates the DN of the container object
+where the realm objects will be located.
+.TP
+.B \fBldap_servers\fP
+This LDAP\-specific tag indicates the list of LDAP servers that the
+Kerberos servers can connect to. The list of LDAP servers is
+whitespace\-separated. The LDAP server is specified by a LDAP URI.
+It is recommended to use \fBldapi:\fP or \fBldaps:\fP URLs to connect
+to the LDAP server.
+.TP
+.B \fBldap_service_password_file\fP
+This LDAP\-specific tag indicates the file containing the stashed
+passwords (created by \fBkdb5_ldap_util stashsrvpw\fP) for the
+\fBldap_kdc_dn\fP and \fBldap_kadmind_dn\fP objects, or for the
+\fBldap_kdc_sasl_authcid\fP or \fBldap_kadmind_sasl_authcid\fP names
+for SASL authentication. This file must be kept secure.
+.TP
+.B \fBunlockiter\fP
+If set to \fBtrue\fP, this DB2\-specific tag causes iteration
+operations to release the database lock while processing each
+principal. Setting this flag to \fBtrue\fP can prevent extended
+blocking of KDC or kadmin operations when dumps of large databases
+are in progress. First introduced in release 1.13.
+.UNINDENT
+.sp
+The following tag may be specified directly in the [dbmodules]
+section to control where database modules are loaded from:
+.INDENT 0.0
+.TP
+.B \fBdb_module_dir\fP
+This tag controls where the plugin system looks for database
+modules. The value should be an absolute path.
+.UNINDENT
+.SS [logging]
+.sp
+The [logging] section indicates how \fIkrb5kdc(8)\fP and
+\fIkadmind(8)\fP perform logging. It may contain the following
+relations:
+.INDENT 0.0
+.TP
+.B \fBadmin_server\fP
+Specifies how \fIkadmind(8)\fP performs logging.
+.TP
+.B \fBkdc\fP
+Specifies how \fIkrb5kdc(8)\fP performs logging.
+.TP
+.B \fBdefault\fP
+Specifies how either daemon performs logging in the absence of
+relations specific to the daemon.
+.TP
+.B \fBdebug\fP
+(Boolean value.) Specifies whether debugging messages are
+included in log outputs other than SYSLOG. Debugging messages are
+always included in the system log output because syslog performs
+its own priority filtering. The default value is false. New in
+release 1.15.
+.UNINDENT
+.sp
+Logging specifications may have the following forms:
+.INDENT 0.0
+.TP
+.B \fBFILE=\fP\fIfilename\fP or \fBFILE:\fP\fIfilename\fP
+This value causes the daemon\(aqs logging messages to go to the
+\fIfilename\fP\&. If the \fB=\fP form is used, the file is overwritten.
+If the \fB:\fP form is used, the file is appended to.
+.TP
+.B \fBSTDERR\fP
+This value causes the daemon\(aqs logging messages to go to its
+standard error stream.
+.TP
+.B \fBCONSOLE\fP
+This value causes the daemon\(aqs logging messages to go to the
+console, if the system supports it.
+.TP
+.B \fBDEVICE=\fP\fI<devicename>\fP
+This causes the daemon\(aqs logging messages to go to the specified
+device.
+.TP
+.B \fBSYSLOG\fP[\fB:\fP\fIseverity\fP[\fB:\fP\fIfacility\fP]]
+This causes the daemon\(aqs logging messages to go to the system log.
+.sp
+The severity argument specifies the default severity of system log
+messages. This may be any of the following severities supported
+by the syslog(3) call, minus the \fBLOG_\fP prefix: \fBEMERG\fP,
+\fBALERT\fP, \fBCRIT\fP, \fBERR\fP, \fBWARNING\fP, \fBNOTICE\fP, \fBINFO\fP,
+and \fBDEBUG\fP\&.
+.sp
+The facility argument specifies the facility under which the
+messages are logged. This may be any of the following facilities
+supported by the syslog(3) call minus the LOG_ prefix: \fBKERN\fP,
+\fBUSER\fP, \fBMAIL\fP, \fBDAEMON\fP, \fBAUTH\fP, \fBLPR\fP, \fBNEWS\fP,
+\fBUUCP\fP, \fBCRON\fP, and \fBLOCAL0\fP through \fBLOCAL7\fP\&.
+.sp
+If no severity is specified, the default is \fBERR\fP\&. If no
+facility is specified, the default is \fBAUTH\fP\&.
+.UNINDENT
+.sp
+In the following example, the logging messages from the KDC will go to
+the console and to the system log under the facility LOG_DAEMON with
+default severity of LOG_INFO; and the logging messages from the
+administrative server will be appended to the file
+\fB/var/adm/kadmin.log\fP and sent to the device \fB/dev/tty04\fP\&.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[logging]
+ kdc = CONSOLE
+ kdc = SYSLOG:INFO:DAEMON
+ admin_server = FILE:/var/adm/kadmin.log
+ admin_server = DEVICE=/dev/tty04
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SS [otp]
+.sp
+Each subsection of [otp] is the name of an OTP token type. The tags
+within the subsection define the configuration required to forward a
+One Time Password request to a RADIUS server.
+.sp
+For each token type, the following tags may be specified:
+.INDENT 0.0
+.TP
+.B \fBserver\fP
+This is the server to send the RADIUS request to. It can be a
+hostname with optional port, an ip address with optional port, or
+a Unix domain socket address. The default is
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/<name>.socket\fP\&.
+.TP
+.B \fBsecret\fP
+This tag indicates a filename (which may be relative to \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP)
+containing the secret used to encrypt the RADIUS packets. The
+secret should appear in the first line of the file by itself;
+leading and trailing whitespace on the line will be removed. If
+the value of \fBserver\fP is a Unix domain socket address, this tag
+is optional, and an empty secret will be used if it is not
+specified. Otherwise, this tag is required.
+.TP
+.B \fBtimeout\fP
+An integer which specifies the time in seconds during which the
+KDC should attempt to contact the RADIUS server. This tag is the
+total time across all retries and should be less than the time
+which an OTP value remains valid for. The default is 5 seconds.
+.TP
+.B \fBretries\fP
+This tag specifies the number of retries to make to the RADIUS
+server. The default is 3 retries (4 tries).
+.TP
+.B \fBstrip_realm\fP
+If this tag is \fBtrue\fP, the principal without the realm will be
+passed to the RADIUS server. Otherwise, the realm will be
+included. The default value is \fBtrue\fP\&.
+.TP
+.B \fBindicator\fP
+This tag specifies an authentication indicator to be included in
+the ticket if this token type is used to authenticate. This
+option may be specified multiple times. (New in release 1.14.)
+.UNINDENT
+.sp
+In the following example, requests are sent to a remote server via UDP:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[otp]
+ MyRemoteTokenType = {
+ server = radius.mydomain.com:1812
+ secret = SEmfiajf42$
+ timeout = 15
+ retries = 5
+ strip_realm = true
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+An implicit default token type named \fBDEFAULT\fP is defined for when
+the per\-principal configuration does not specify a token type. Its
+configuration is shown below. You may override this token type to
+something applicable for your situation:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[otp]
+ DEFAULT = {
+ strip_realm = false
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH PKINIT OPTIONS
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+The following are pkinit\-specific options. These values may
+be specified in [kdcdefaults] as global defaults, or within
+a realm\-specific subsection of [realms]. Also note that a
+realm\-specific value over\-rides, does not add to, a generic
+[kdcdefaults] specification. The search order is:
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 1. 3
+realm\-specific subsection of [realms]:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[realms]
+ EXAMPLE.COM = {
+ pkinit_anchors = FILE:/usr/local/example.com.crt
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.IP 2. 3
+generic value in the [kdcdefaults] section:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[kdcdefaults]
+ pkinit_anchors = DIR:/usr/local/generic_trusted_cas/
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+For information about the syntax of some of these options, see
+\fISpecifying PKINIT identity information\fP in
+\fIkrb5.conf(5)\fP\&.
+.INDENT 0.0
+.TP
+.B \fBpkinit_anchors\fP
+Specifies the location of trusted anchor (root) certificates which
+the KDC trusts to sign client certificates. This option is
+required if pkinit is to be supported by the KDC. This option may
+be specified multiple times.
+.TP
+.B \fBpkinit_dh_min_bits\fP
+Specifies the minimum number of bits the KDC is willing to accept
+for a client\(aqs Diffie\-Hellman key. The default is 2048.
+.TP
+.B \fBpkinit_allow_upn\fP
+Specifies that the KDC is willing to accept client certificates
+with the Microsoft UserPrincipalName (UPN) Subject Alternative
+Name (SAN). This means the KDC accepts the binding of the UPN in
+the certificate to the Kerberos principal name. The default value
+is false.
+.sp
+Without this option, the KDC will only accept certificates with
+the id\-pkinit\-san as defined in \fI\%RFC 4556\fP\&. There is currently
+no option to disable SAN checking in the KDC.
+.TP
+.B \fBpkinit_eku_checking\fP
+This option specifies what Extended Key Usage (EKU) values the KDC
+is willing to accept in client certificates. The values
+recognized in the kdc.conf file are:
+.INDENT 7.0
+.TP
+.B \fBkpClientAuth\fP
+This is the default value and specifies that client
+certificates must have the id\-pkinit\-KPClientAuth EKU as
+defined in \fI\%RFC 4556\fP\&.
+.TP
+.B \fBscLogin\fP
+If scLogin is specified, client certificates with the
+Microsoft Smart Card Login EKU (id\-ms\-kp\-sc\-logon) will be
+accepted.
+.TP
+.B \fBnone\fP
+If none is specified, then client certificates will not be
+checked to verify they have an acceptable EKU. The use of
+this option is not recommended.
+.UNINDENT
+.TP
+.B \fBpkinit_identity\fP
+Specifies the location of the KDC\(aqs X.509 identity information.
+This option is required if pkinit is to be supported by the KDC.
+.TP
+.B \fBpkinit_indicator\fP
+Specifies an authentication indicator to include in the ticket if
+pkinit is used to authenticate. This option may be specified
+multiple times. (New in release 1.14.)
+.TP
+.B \fBpkinit_kdc_ocsp\fP
+Specifies the location of the KDC\(aqs OCSP.
+.TP
+.B \fBpkinit_pool\fP
+Specifies the location of intermediate certificates which may be
+used by the KDC to complete the trust chain between a client\(aqs
+certificate and a trusted anchor. This option may be specified
+multiple times.
+.TP
+.B \fBpkinit_revoke\fP
+Specifies the location of Certificate Revocation List (CRL)
+information to be used by the KDC when verifying the validity of
+client certificates. This option may be specified multiple times.
+.TP
+.B \fBpkinit_require_crl_checking\fP
+The default certificate verification process will always check the
+available revocation information to see if a certificate has been
+revoked. If a match is found for the certificate in a CRL,
+verification fails. If the certificate being verified is not
+listed in a CRL, or there is no CRL present for its issuing CA,
+and \fBpkinit_require_crl_checking\fP is false, then verification
+succeeds.
+.sp
+However, if \fBpkinit_require_crl_checking\fP is true and there is
+no CRL information available for the issuing CA, then verification
+fails.
+.sp
+\fBpkinit_require_crl_checking\fP should be set to true if the
+policy is such that up\-to\-date CRLs must be present for every CA.
+.UNINDENT
+.SH ENCRYPTION TYPES
+.sp
+Any tag in the configuration files which requires a list of encryption
+types can be set to some combination of the following strings.
+Encryption types marked as "weak" are available for compatibility but
+not recommended for use.
+.TS
+center;
+|l|l|.
+_
+T{
+des\-cbc\-crc
+T} T{
+DES cbc mode with CRC\-32 (weak)
+T}
+_
+T{
+des\-cbc\-md4
+T} T{
+DES cbc mode with RSA\-MD4 (weak)
+T}
+_
+T{
+des\-cbc\-md5
+T} T{
+DES cbc mode with RSA\-MD5 (weak)
+T}
+_
+T{
+des\-cbc\-raw
+T} T{
+DES cbc mode raw (weak)
+T}
+_
+T{
+des3\-cbc\-raw
+T} T{
+Triple DES cbc mode raw (weak)
+T}
+_
+T{
+des3\-cbc\-sha1 des3\-hmac\-sha1 des3\-cbc\-sha1\-kd
+T} T{
+Triple DES cbc mode with HMAC/sha1
+T}
+_
+T{
+des\-hmac\-sha1
+T} T{
+DES with HMAC/sha1 (weak)
+T}
+_
+T{
+aes256\-cts\-hmac\-sha1\-96 aes256\-cts aes256\-sha1
+T} T{
+AES\-256 CTS mode with 96\-bit SHA\-1 HMAC
+T}
+_
+T{
+aes128\-cts\-hmac\-sha1\-96 aes128\-cts aes128\-sha1
+T} T{
+AES\-128 CTS mode with 96\-bit SHA\-1 HMAC
+T}
+_
+T{
+aes256\-cts\-hmac\-sha384\-192 aes256\-sha2
+T} T{
+AES\-256 CTS mode with 192\-bit SHA\-384 HMAC
+T}
+_
+T{
+aes128\-cts\-hmac\-sha256\-128 aes128\-sha2
+T} T{
+AES\-128 CTS mode with 128\-bit SHA\-256 HMAC
+T}
+_
+T{
+arcfour\-hmac rc4\-hmac arcfour\-hmac\-md5
+T} T{
+RC4 with HMAC/MD5
+T}
+_
+T{
+arcfour\-hmac\-exp rc4\-hmac\-exp arcfour\-hmac\-md5\-exp
+T} T{
+Exportable RC4 with HMAC/MD5 (weak)
+T}
+_
+T{
+camellia256\-cts\-cmac camellia256\-cts
+T} T{
+Camellia\-256 CTS mode with CMAC
+T}
+_
+T{
+camellia128\-cts\-cmac camellia128\-cts
+T} T{
+Camellia\-128 CTS mode with CMAC
+T}
+_
+T{
+des
+T} T{
+The DES family: des\-cbc\-crc, des\-cbc\-md5, and des\-cbc\-md4 (weak)
+T}
+_
+T{
+des3
+T} T{
+The triple DES family: des3\-cbc\-sha1
+T}
+_
+T{
+aes
+T} T{
+The AES family: aes256\-cts\-hmac\-sha1\-96 and aes128\-cts\-hmac\-sha1\-96
+T}
+_
+T{
+rc4
+T} T{
+The RC4 family: arcfour\-hmac
+T}
+_
+T{
+camellia
+T} T{
+The Camellia family: camellia256\-cts\-cmac and camellia128\-cts\-cmac
+T}
+_
+.TE
+.sp
+The string \fBDEFAULT\fP can be used to refer to the default set of
+types for the variable in question. Types or families can be removed
+from the current list by prefixing them with a minus sign ("\-").
+Types or families can be prefixed with a plus sign ("+") for symmetry;
+it has the same meaning as just listing the type or family. For
+example, "\fBDEFAULT \-des\fP" would be the default set of encryption
+types with DES types removed, and "\fBdes3 DEFAULT\fP" would be the
+default set of encryption types with triple DES types moved to the
+front.
+.sp
+While \fBaes128\-cts\fP and \fBaes256\-cts\fP are supported for all Kerberos
+operations, they are not supported by very old versions of our GSSAPI
+implementation (krb5\-1.3.1 and earlier). Services running versions of
+krb5 without AES support must not be given keys of these encryption
+types in the KDC database.
+.sp
+The \fBaes128\-sha2\fP and \fBaes256\-sha2\fP encryption types are new in
+release 1.15. Services running versions of krb5 without support for
+these newer encryption types must not be given keys of these
+encryption types in the KDC database.
+.SH KEYSALT LISTS
+.sp
+Kerberos keys for users are usually derived from passwords. Kerberos
+commands and configuration parameters that affect generation of keys
+take lists of enctype\-salttype ("keysalt") pairs, known as \fIkeysalt
+lists\fP\&. Each keysalt pair is an enctype name followed by a salttype
+name, in the format \fIenc\fP:\fIsalt\fP\&. Individual keysalt list members are
+separated by comma (",") characters or space characters. For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kadmin \-e aes256\-cts:normal,aes128\-cts:normal
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+would start up kadmin so that by default it would generate
+password\-derived keys for the \fBaes256\-cts\fP and \fBaes128\-cts\fP
+encryption types, using a \fBnormal\fP salt.
+.sp
+To ensure that people who happen to pick the same password do not have
+the same key, Kerberos 5 incorporates more information into the key
+using something called a salt. The supported salt types are as
+follows:
+.TS
+center;
+|l|l|.
+_
+T{
+normal
+T} T{
+default for Kerberos Version 5
+T}
+_
+T{
+v4
+T} T{
+the only type used by Kerberos Version 4 (no salt)
+T}
+_
+T{
+norealm
+T} T{
+same as the default, without using realm information
+T}
+_
+T{
+onlyrealm
+T} T{
+uses only realm information as the salt
+T}
+_
+T{
+afs3
+T} T{
+AFS version 3, only used for compatibility with Kerberos 4 in AFS
+T}
+_
+T{
+special
+T} T{
+generate a random salt
+T}
+_
+.TE
+.SH SAMPLE KDC.CONF FILE
+.sp
+Here\(aqs an example of a kdc.conf file:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[kdcdefaults]
+ kdc_listen = 88
+ kdc_tcp_listen = 88
+[realms]
+ ATHENA.MIT.EDU = {
+ kadmind_port = 749
+ max_life = 12h 0m 0s
+ max_renewable_life = 7d 0h 0m 0s
+ master_key_type = aes256\-cts\-hmac\-sha1\-96
+ supported_enctypes = aes256\-cts\-hmac\-sha1\-96:normal aes128\-cts\-hmac\-sha1\-96:normal
+ database_module = openldap_ldapconf
+ }
+
+[logging]
+ kdc = FILE:/usr/local/var/krb5kdc/kdc.log
+ admin_server = FILE:/usr/local/var/krb5kdc/kadmin.log
+
+[dbdefaults]
+ ldap_kerberos_container_dn = cn=krbcontainer,dc=mit,dc=edu
+
+[dbmodules]
+ openldap_ldapconf = {
+ db_library = kldap
+ disable_last_success = true
+ ldap_kdc_dn = "cn=krbadmin,dc=mit,dc=edu"
+ # this object needs to have read rights on
+ # the realm container and principal subtrees
+ ldap_kadmind_dn = "cn=krbadmin,dc=mit,dc=edu"
+ # this object needs to have read and write rights on
+ # the realm container and principal subtrees
+ ldap_service_password_file = /etc/kerberos/service.keyfile
+ ldap_servers = ldaps://kerberos.mit.edu
+ ldap_conns_per_server = 5
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH FILES
+.sp
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/kdc.conf\fP
+.SH SEE ALSO
+.sp
+\fIkrb5.conf(5)\fP, \fIkrb5kdc(8)\fP, \fIkadm5.acl(5)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kdestroy.man b/src/man/kdestroy.man
new file mode 100644
index 000000000000..47e1e369423e
--- /dev/null
+++ b/src/man/kdestroy.man
@@ -0,0 +1,97 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KDESTROY" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kdestroy \- destroy Kerberos tickets
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkdestroy\fP
+[\fB\-A\fP]
+[\fB\-q\fP]
+[\fB\-c\fP \fIcache_name\fP]
+.SH DESCRIPTION
+.sp
+The kdestroy utility destroys the user\(aqs active Kerberos authorization
+tickets by overwriting and deleting the credentials cache that
+contains them. If the credentials cache is not specified, the default
+credentials cache is destroyed.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-A\fP
+Destroys all caches in the collection, if a cache collection is
+available.
+.TP
+.B \fB\-q\fP
+Run quietly. Normally kdestroy beeps if it fails to destroy the
+user\(aqs tickets. The \fB\-q\fP flag suppresses this behavior.
+.TP
+.B \fB\-c\fP \fIcache_name\fP
+Use \fIcache_name\fP as the credentials (ticket) cache name and
+location; if this option is not used, the default cache name and
+location are used.
+.sp
+The default credentials cache may vary between systems. If the
+\fBKRB5CCNAME\fP environment variable is set, its value is used to
+name the default ticket cache.
+.UNINDENT
+.SH NOTE
+.sp
+Most installations recommend that you place the kdestroy command in
+your .logout file, so that your tickets are destroyed automatically
+when you log out.
+.SH ENVIRONMENT
+.sp
+kdestroy uses the following environment variable:
+.INDENT 0.0
+.TP
+.B \fBKRB5CCNAME\fP
+Location of the default Kerberos 5 credentials (ticket) cache, in
+the form \fItype\fP:\fIresidual\fP\&. If no \fItype\fP prefix is present, the
+\fBFILE\fP type is assumed. The type of the default cache may
+determine the availability of a cache collection; for instance, a
+default cache of type \fBDIR\fP causes caches within the directory
+to be present in the collection.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB@CCNAME@\fP
+Default location of Kerberos 5 credentials cache
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkinit(1)\fP, \fIklist(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kinit.man b/src/man/kinit.man
new file mode 100644
index 000000000000..e257bd25ef91
--- /dev/null
+++ b/src/man/kinit.man
@@ -0,0 +1,258 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KINIT" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kinit \- obtain and cache Kerberos ticket-granting ticket
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkinit\fP
+[\fB\-V\fP]
+[\fB\-l\fP \fIlifetime\fP]
+[\fB\-s\fP \fIstart_time\fP]
+[\fB\-r\fP \fIrenewable_life\fP]
+[\fB\-p\fP | \-\fBP\fP]
+[\fB\-f\fP | \-\fBF\fP]
+[\fB\-a\fP]
+[\fB\-A\fP]
+[\fB\-C\fP]
+[\fB\-E\fP]
+[\fB\-v\fP]
+[\fB\-R\fP]
+[\fB\-k\fP [\-\fBt\fP \fIkeytab_file\fP]]
+[\fB\-c\fP \fIcache_name\fP]
+[\fB\-n\fP]
+[\fB\-S\fP \fIservice_name\fP]
+[\fB\-I\fP \fIinput_ccache\fP]
+[\fB\-T\fP \fIarmor_ccache\fP]
+[\fB\-X\fP \fIattribute\fP[=\fIvalue\fP]]
+[\fIprincipal\fP]
+.SH DESCRIPTION
+.sp
+kinit obtains and caches an initial ticket\-granting ticket for
+\fIprincipal\fP\&. If \fIprincipal\fP is absent, kinit chooses an appropriate
+principal name based on existing credential cache contents or the
+local username of the user invoking kinit. Some options modify the
+choice of principal name.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-V\fP
+display verbose output.
+.TP
+.B \fB\-l\fP \fIlifetime\fP
+(\fIduration\fP string.) Requests a ticket with the lifetime
+\fIlifetime\fP\&.
+.sp
+For example, \fBkinit \-l 5:30\fP or \fBkinit \-l 5h30m\fP\&.
+.sp
+If the \fB\-l\fP option is not specified, the default ticket lifetime
+(configured by each site) is used. Specifying a ticket lifetime
+longer than the maximum ticket lifetime (configured by each site)
+will not override the configured maximum ticket lifetime.
+.TP
+.B \fB\-s\fP \fIstart_time\fP
+(\fIduration\fP string.) Requests a postdated ticket. Postdated
+tickets are issued with the \fBinvalid\fP flag set, and need to be
+resubmitted to the KDC for validation before use.
+.sp
+\fIstart_time\fP specifies the duration of the delay before the ticket
+can become valid.
+.TP
+.B \fB\-r\fP \fIrenewable_life\fP
+(\fIduration\fP string.) Requests renewable tickets, with a total
+lifetime of \fIrenewable_life\fP\&.
+.TP
+.B \fB\-f\fP
+requests forwardable tickets.
+.TP
+.B \fB\-F\fP
+requests non\-forwardable tickets.
+.TP
+.B \fB\-p\fP
+requests proxiable tickets.
+.TP
+.B \fB\-P\fP
+requests non\-proxiable tickets.
+.TP
+.B \fB\-a\fP
+requests tickets restricted to the host\(aqs local address[es].
+.TP
+.B \fB\-A\fP
+requests tickets not restricted by address.
+.TP
+.B \fB\-C\fP
+requests canonicalization of the principal name, and allows the
+KDC to reply with a different client principal from the one
+requested.
+.TP
+.B \fB\-E\fP
+treats the principal name as an enterprise name (implies the
+\fB\-C\fP option).
+.TP
+.B \fB\-v\fP
+requests that the ticket\-granting ticket in the cache (with the
+\fBinvalid\fP flag set) be passed to the KDC for validation. If the
+ticket is within its requested time range, the cache is replaced
+with the validated ticket.
+.TP
+.B \fB\-R\fP
+requests renewal of the ticket\-granting ticket. Note that an
+expired ticket cannot be renewed, even if the ticket is still
+within its renewable life.
+.sp
+Note that renewable tickets that have expired as reported by
+\fIklist(1)\fP may sometimes be renewed using this option,
+because the KDC applies a grace period to account for client\-KDC
+clock skew. See \fIkrb5.conf(5)\fP \fBclockskew\fP setting.
+.TP
+.B \fB\-k\fP [\fB\-i\fP | \fB\-t\fP \fIkeytab_file\fP]
+requests a ticket, obtained from a key in the local host\(aqs keytab.
+The location of the keytab may be specified with the \fB\-t\fP
+\fIkeytab_file\fP option, or with the \fB\-i\fP option to specify the use
+of the default client keytab; otherwise the default keytab will be
+used. By default, a host ticket for the local host is requested,
+but any principal may be specified. On a KDC, the special keytab
+location \fBKDB:\fP can be used to indicate that kinit should open
+the KDC database and look up the key directly. This permits an
+administrator to obtain tickets as any principal that supports
+authentication based on the key.
+.TP
+.B \fB\-n\fP
+Requests anonymous processing. Two types of anonymous principals
+are supported.
+.sp
+For fully anonymous Kerberos, configure pkinit on the KDC and
+configure \fBpkinit_anchors\fP in the client\(aqs \fIkrb5.conf(5)\fP\&.
+Then use the \fB\-n\fP option with a principal of the form \fB@REALM\fP
+(an empty principal name followed by the at\-sign and a realm
+name). If permitted by the KDC, an anonymous ticket will be
+returned.
+.sp
+A second form of anonymous tickets is supported; these
+realm\-exposed tickets hide the identity of the client but not the
+client\(aqs realm. For this mode, use \fBkinit \-n\fP with a normal
+principal name. If supported by the KDC, the principal (but not
+realm) will be replaced by the anonymous principal.
+.sp
+As of release 1.8, the MIT Kerberos KDC only supports fully
+anonymous operation.
+.UNINDENT
+.sp
+\fB\-I\fP \fIinput_ccache\fP
+.INDENT 0.0
+.INDENT 3.5
+Specifies the name of a credentials cache that already contains a
+ticket. When obtaining that ticket, if information about how that
+ticket was obtained was also stored to the cache, that information
+will be used to affect how new credentials are obtained, including
+preselecting the same methods of authenticating to the KDC.
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-T\fP \fIarmor_ccache\fP
+Specifies the name of a credentials cache that already contains a
+ticket. If supported by the KDC, this cache will be used to armor
+the request, preventing offline dictionary attacks and allowing
+the use of additional preauthentication mechanisms. Armoring also
+makes sure that the response from the KDC is not modified in
+transit.
+.TP
+.B \fB\-c\fP \fIcache_name\fP
+use \fIcache_name\fP as the Kerberos 5 credentials (ticket) cache
+location. If this option is not used, the default cache location
+is used.
+.sp
+The default cache location may vary between systems. If the
+\fBKRB5CCNAME\fP environment variable is set, its value is used to
+locate the default cache. If a principal name is specified and
+the type of the default cache supports a collection (such as the
+DIR type), an existing cache containing credentials for the
+principal is selected or a new one is created and becomes the new
+primary cache. Otherwise, any existing contents of the default
+cache are destroyed by kinit.
+.TP
+.B \fB\-S\fP \fIservice_name\fP
+specify an alternate service name to use when getting initial
+tickets.
+.TP
+.B \fB\-X\fP \fIattribute\fP[=\fIvalue\fP]
+specify a pre\-authentication \fIattribute\fP and \fIvalue\fP to be
+interpreted by pre\-authentication modules. The acceptable
+attribute and value values vary from module to module. This
+option may be specified multiple times to specify multiple
+attributes. If no value is specified, it is assumed to be "yes".
+.sp
+The following attributes are recognized by the PKINIT
+pre\-authentication mechanism:
+.INDENT 7.0
+.TP
+.B \fBX509_user_identity\fP=\fIvalue\fP
+specify where to find user\(aqs X509 identity information
+.TP
+.B \fBX509_anchors\fP=\fIvalue\fP
+specify where to find trusted X509 anchor information
+.TP
+.B \fBflag_RSA_PROTOCOL\fP[\fB=yes\fP]
+specify use of RSA, rather than the default Diffie\-Hellman
+protocol
+.UNINDENT
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+kinit uses the following environment variables:
+.INDENT 0.0
+.TP
+.B \fBKRB5CCNAME\fP
+Location of the default Kerberos 5 credentials cache, in the form
+\fItype\fP:\fIresidual\fP\&. If no \fItype\fP prefix is present, the \fBFILE\fP
+type is assumed. The type of the default cache may determine the
+availability of a cache collection; for instance, a default cache
+of type \fBDIR\fP causes caches within the directory to be present
+in the collection.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB@CCNAME@\fP
+default location of Kerberos 5 credentials cache
+.TP
+.B \fB@KTNAME@\fP
+default location for the local host\(aqs keytab.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIklist(1)\fP, \fIkdestroy(1)\fP, kerberos(1)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/klist.man b/src/man/klist.man
new file mode 100644
index 000000000000..3080640dd97d
--- /dev/null
+++ b/src/man/klist.man
@@ -0,0 +1,163 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KLIST" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+klist \- list cached Kerberos tickets
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBklist\fP
+[\fB\-e\fP]
+[[\fB\-c\fP] [\fB\-l\fP] [\fB\-A\fP] [\fB\-f\fP] [\fB\-s\fP] [\fB\-a\fP [\fB\-n\fP]]]
+[\fB\-C\fP]
+[\fB\-k\fP [\fB\-t\fP] [\fB\-K\fP]]
+[\fB\-V\fP]
+[\fIcache_name\fP|\fIkeytab_name\fP]
+.SH DESCRIPTION
+.sp
+klist lists the Kerberos principal and Kerberos tickets held in a
+credentials cache, or the keys held in a keytab file.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-e\fP
+Displays the encryption types of the session key and the ticket
+for each credential in the credential cache, or each key in the
+keytab file.
+.TP
+.B \fB\-l\fP
+If a cache collection is available, displays a table summarizing
+the caches present in the collection.
+.TP
+.B \fB\-A\fP
+If a cache collection is available, displays the contents of all
+of the caches in the collection.
+.TP
+.B \fB\-c\fP
+List tickets held in a credentials cache. This is the default if
+neither \fB\-c\fP nor \fB\-k\fP is specified.
+.TP
+.B \fB\-f\fP
+Shows the flags present in the credentials, using the following
+abbreviations:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+F Forwardable
+f forwarded
+P Proxiable
+p proxy
+D postDateable
+d postdated
+R Renewable
+I Initial
+i invalid
+H Hardware authenticated
+A preAuthenticated
+T Transit policy checked
+O Okay as delegate
+a anonymous
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fB\-s\fP
+Causes klist to run silently (produce no output). klist will exit
+with status 1 if the credentials cache cannot be read or is
+expired, and with status 0 otherwise.
+.TP
+.B \fB\-a\fP
+Display list of addresses in credentials.
+.TP
+.B \fB\-n\fP
+Show numeric addresses instead of reverse\-resolving addresses.
+.TP
+.B \fB\-C\fP
+List configuration data that has been stored in the credentials
+cache when klist encounters it. By default, configuration data
+is not listed.
+.TP
+.B \fB\-k\fP
+List keys held in a keytab file.
+.TP
+.B \fB\-i\fP
+In combination with \fB\-k\fP, defaults to using the default client
+keytab instead of the default acceptor keytab, if no name is
+given.
+.TP
+.B \fB\-t\fP
+Display the time entry timestamps for each keytab entry in the
+keytab file.
+.TP
+.B \fB\-K\fP
+Display the value of the encryption key in each keytab entry in
+the keytab file.
+.TP
+.B \fB\-V\fP
+Display the Kerberos version number and exit.
+.UNINDENT
+.sp
+If \fIcache_name\fP or \fIkeytab_name\fP is not specified, klist will display
+the credentials in the default credentials cache or keytab file as
+appropriate. If the \fBKRB5CCNAME\fP environment variable is set, its
+value is used to locate the default ticket cache.
+.SH ENVIRONMENT
+.sp
+klist uses the following environment variable:
+.INDENT 0.0
+.TP
+.B \fBKRB5CCNAME\fP
+Location of the default Kerberos 5 credentials (ticket) cache, in
+the form \fItype\fP:\fIresidual\fP\&. If no \fItype\fP prefix is present, the
+\fBFILE\fP type is assumed. The type of the default cache may
+determine the availability of a cache collection; for instance, a
+default cache of type \fBDIR\fP causes caches within the directory
+to be present in the collection.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB@CCNAME@\fP
+Default location of Kerberos 5 credentials cache
+.TP
+.B \fB@KTNAME@\fP
+Default location for the local host\(aqs keytab file.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkinit(1)\fP, \fIkdestroy(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kpasswd.man b/src/man/kpasswd.man
new file mode 100644
index 000000000000..b7bb0a32fc5a
--- /dev/null
+++ b/src/man/kpasswd.man
@@ -0,0 +1,64 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KPASSWD" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kpasswd \- change a user's Kerberos password
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkpasswd\fP [\fIprincipal\fP]
+.SH DESCRIPTION
+.sp
+The kpasswd command is used to change a Kerberos principal\(aqs password.
+kpasswd first prompts for the current Kerberos password, then prompts
+the user twice for the new password, and the password is changed.
+.sp
+If the principal is governed by a policy that specifies the length
+and/or number of character classes required in the new password, the
+new password must conform to the policy. (The five character classes
+are lower case, upper case, numbers, punctuation, and all other
+characters.)
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fIprincipal\fP
+Change the password for the Kerberos principal principal.
+Otherwise, kpasswd uses the principal name from an existing ccache
+if there is one; if not, the principal is derived from the
+identity of the user invoking the kpasswd command.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkadmin(1)\fP, \fIkadmind(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kprop.man b/src/man/kprop.man
new file mode 100644
index 000000000000..9d3e2033c38c
--- /dev/null
+++ b/src/man/kprop.man
@@ -0,0 +1,84 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KPROP" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kprop \- propagate a Kerberos V5 principal database to a slave server
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkprop\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-f\fP \fIfile\fP]
+[\fB\-d\fP]
+[\fB\-P\fP \fIport\fP]
+[\fB\-s\fP \fIkeytab\fP]
+\fIslave_host\fP
+.SH DESCRIPTION
+.sp
+kprop is used to securely propagate a Kerberos V5 database dump file
+from the master Kerberos server to a slave Kerberos server, which is
+specified by \fIslave_host\fP\&. The dump file must be created by
+\fIkdb5_util(8)\fP\&.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the realm of the master server.
+.TP
+.B \fB\-f\fP \fIfile\fP
+Specifies the filename where the dumped principal database file is
+to be found; by default the dumped database file is normally
+\fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/slave_datatrans\fP\&.
+.TP
+.B \fB\-P\fP \fIport\fP
+Specifies the port to use to contact the \fIkpropd(8)\fP server
+on the remote host.
+.TP
+.B \fB\-d\fP
+Prints debugging information.
+.TP
+.B \fB\-s\fP \fIkeytab\fP
+Specifies the location of the keytab file.
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+\fIkprop\fP uses the following environment variable:
+.INDENT 0.0
+.IP \(bu 2
+\fBKRB5_CONFIG\fP
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkpropd(8)\fP, \fIkdb5_util(8)\fP, \fIkrb5kdc(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kpropd.man b/src/man/kpropd.man
new file mode 100644
index 000000000000..9048f8fd5d92
--- /dev/null
+++ b/src/man/kpropd.man
@@ -0,0 +1,161 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KPROPD" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kpropd \- Kerberos V5 slave KDC update server
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkpropd\fP
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-A\fP \fIadmin_server\fP]
+[\fB\-a\fP \fIacl_file\fP]
+[\fB\-f\fP \fIslave_dumpfile\fP]
+[\fB\-F\fP \fIprincipal_database\fP]
+[\fB\-p\fP \fIkdb5_util_prog\fP]
+[\fB\-P\fP \fIport\fP]
+[\fB\-d\fP]
+[\fB\-t\fP]
+.SH DESCRIPTION
+.sp
+The \fIkpropd\fP command runs on the slave KDC server. It listens for
+update requests made by the \fIkprop(8)\fP program. If incremental
+propagation is enabled, it periodically requests incremental updates
+from the master KDC.
+.sp
+When the slave receives a kprop request from the master, kpropd
+accepts the dumped KDC database and places it in a file, and then runs
+\fIkdb5_util(8)\fP to load the dumped database into the active
+database which is used by \fIkrb5kdc(8)\fP\&. This allows the master
+Kerberos server to use \fIkprop(8)\fP to propagate its database to
+the slave servers. Upon a successful download of the KDC database
+file, the slave Kerberos server will have an up\-to\-date KDC database.
+.sp
+Where incremental propagation is not used, kpropd is commonly invoked
+out of inetd(8) as a nowait service. This is done by adding a line to
+the \fB/etc/inetd.conf\fP file which looks like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kprop stream tcp nowait root /usr/local/sbin/kpropd kpropd
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+kpropd can also run as a standalone daemon, backgrounding itself and
+waiting for connections on port 754 (or the port specified with the
+\fB\-P\fP option if given). Standalone mode is required for incremental
+propagation. Starting in release 1.11, kpropd automatically detects
+whether it was run from inetd and runs in standalone mode if it is
+not. Prior to release 1.11, the \fB\-S\fP option is required to run
+kpropd in standalone mode; this option is now accepted for backward
+compatibility but does nothing.
+.sp
+Incremental propagation may be enabled with the \fBiprop_enable\fP
+variable in \fIkdc.conf(5)\fP\&. If incremental propagation is
+enabled, the slave periodically polls the master KDC for updates, at
+an interval determined by the \fBiprop_slave_poll\fP variable. If the
+slave receives updates, kpropd updates its log file with any updates
+from the master. \fIkproplog(8)\fP can be used to view a summary of
+the update entry log on the slave KDC. If incremental propagation is
+enabled, the principal \fBkiprop/slavehostname@REALM\fP (where
+\fIslavehostname\fP is the name of the slave KDC host, and \fIREALM\fP is the
+name of the Kerberos realm) must be present in the slave\(aqs keytab
+file.
+.sp
+\fIkproplog(8)\fP can be used to force full replication when iprop is
+enabled.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-r\fP \fIrealm\fP
+Specifies the realm of the master server.
+.TP
+.B \fB\-A\fP \fIadmin_server\fP
+Specifies the server to be contacted for incremental updates; by
+default, the master admin server is contacted.
+.TP
+.B \fB\-f\fP \fIfile\fP
+Specifies the filename where the dumped principal database file is
+to be stored; by default the dumped database file is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/from_master\fP\&.
+.TP
+.B \fB\-p\fP
+Allows the user to specify the pathname to the \fIkdb5_util(8)\fP
+program; by default the pathname used is \fB@SBINDIR@\fP\fB/kdb5_util\fP\&.
+.TP
+.B \fB\-d\fP
+Turn on debug mode. In this mode, kpropd will not detach
+itself from the current job and run in the background. Instead,
+it will run in the foreground and print out debugging messages
+during the database propagation.
+.TP
+.B \fB\-t\fP
+In standalone mode without incremental propagation, exit after one
+dump file is received. In incremental propagation mode, exit as
+soon as the database is up to date, or if the master returns an
+error.
+.TP
+.B \fB\-P\fP
+Allow for an alternate port number for kpropd to listen on. This
+is only useful in combination with the \fB\-S\fP option.
+.TP
+.B \fB\-a\fP \fIacl_file\fP
+Allows the user to specify the path to the kpropd.acl file; by
+default the path used is \fB@LOCALSTATEDIR@\fP\fB/krb5kdc\fP\fB/kpropd.acl\fP\&.
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+kpropd uses the following environment variables:
+.INDENT 0.0
+.IP \(bu 2
+\fBKRB5_CONFIG\fP
+.IP \(bu 2
+\fBKRB5_KDC_PROFILE\fP
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B kpropd.acl
+Access file for kpropd; the default location is
+\fB/usr/local/var/krb5kdc/kpropd.acl\fP\&. Each entry is a line
+containing the principal of a host from which the local machine
+will allow Kerberos database propagation via \fIkprop(8)\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkprop(8)\fP, \fIkdb5_util(8)\fP, \fIkrb5kdc(8)\fP, inetd(8)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kproplog.man b/src/man/kproplog.man
new file mode 100644
index 000000000000..eaf6a21954bc
--- /dev/null
+++ b/src/man/kproplog.man
@@ -0,0 +1,117 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KPROPLOG" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kproplog \- display the contents of the Kerberos principal update log
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkproplog\fP [\fB\-h\fP] [\fB\-e\fP \fInum\fP] [\-v]
+\fBkproplog\fP [\-R]
+.SH DESCRIPTION
+.sp
+The kproplog command displays the contents of the KDC database update
+log to standard output. It can be used to keep track of incremental
+updates to the principal database. The update log file contains the
+update log maintained by the \fIkadmind(8)\fP process on the master
+KDC server and the \fIkpropd(8)\fP process on the slave KDC servers.
+When updates occur, they are logged to this file. Subsequently any
+KDC slave configured for incremental updates will request the current
+data from the master KDC and update their log file with any updates
+returned.
+.sp
+The kproplog command requires read access to the update log file. It
+will display update entries only for the KDC it runs on.
+.sp
+If no options are specified, kproplog displays a summary of the update
+log. If invoked on the master, kproplog also displays all of the
+update entries. If invoked on a slave KDC server, kproplog displays
+only a summary of the updates, which includes the serial number of the
+last update received and the associated time stamp of the last update.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-R\fP
+Reset the update log. This forces full resynchronization. If used
+on a slave then that slave will request a full resync. If used on
+the master then all slaves will request full resyncs.
+.TP
+.B \fB\-h\fP
+Display a summary of the update log. This information includes
+the database version number, state of the database, the number of
+updates in the log, the time stamp of the first and last update,
+and the version number of the first and last update entry.
+.TP
+.B \fB\-e\fP \fInum\fP
+Display the last \fInum\fP update entries in the log. This is useful
+when debugging synchronization between KDC servers.
+.TP
+.B \fB\-v\fP
+Display individual attributes per update. An example of the
+output generated for one entry:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+Update Entry
+ Update serial # : 4
+ Update operation : Add
+ Update principal : test@EXAMPLE.COM
+ Update size : 424
+ Update committed : True
+ Update time stamp : Fri Feb 20 23:37:42 2004
+ Attributes changed : 6
+ Principal
+ Key data
+ Password last changed
+ Modifying principal
+ Modification time
+ TL data
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+kproplog uses the following environment variables:
+.INDENT 0.0
+.IP \(bu 2
+\fBKRB5_KDC_PROFILE\fP
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkpropd(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/krb5-config.man b/src/man/krb5-config.man
new file mode 100644
index 000000000000..c9d2724ac1bd
--- /dev/null
+++ b/src/man/krb5-config.man
@@ -0,0 +1,141 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KRB5-CONFIG" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+krb5-config \- tool for linking against MIT Kerberos libraries
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkrb5\-config\fP
+[\fB\-\fP\fB\-help\fP | \fB\-\fP\fB\-all\fP | \fB\-\fP\fB\-version\fP | \fB\-\fP\fB\-vendor\fP | \fB\-\fP\fB\-prefix\fP | \fB\-\fP\fB\-exec\-prefix\fP | \fB\-\fP\fB\-defccname\fP | \fB\-\fP\fB\-defktname\fP | \fB\-\fP\fB\-defcktname\fP | \fB\-\fP\fB\-cflags\fP | \fB\-\fP\fB\-libs\fP [\fIlibraries\fP]]
+.SH DESCRIPTION
+.sp
+krb5\-config tells the application programmer what flags to use to compile
+and link programs against the installed Kerberos libraries.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-\fP\fB\-help\fP
+prints a usage message. This is the default behavior when no options
+are specified.
+.TP
+.B \fB\-\fP\fB\-all\fP
+prints the version, vendor, prefix, and exec\-prefix.
+.TP
+.B \fB\-\fP\fB\-version\fP
+prints the version number of the Kerberos installation.
+.TP
+.B \fB\-\fP\fB\-vendor\fP
+prints the name of the vendor of the Kerberos installation.
+.TP
+.B \fB\-\fP\fB\-prefix\fP
+prints the prefix for which the Kerberos installation was built.
+.TP
+.B \fB\-\fP\fB\-exec\-prefix\fP
+prints the prefix for executables for which the Kerberos installation
+was built.
+.TP
+.B \fB\-\fP\fB\-defccname\fP
+prints the built\-in default credentials cache location.
+.TP
+.B \fB\-\fP\fB\-defktname\fP
+prints the built\-in default keytab location.
+.TP
+.B \fB\-\fP\fB\-defcktname\fP
+prints the built\-in default client (initiator) keytab location.
+.TP
+.B \fB\-\fP\fB\-cflags\fP
+prints the compilation flags used to build the Kerberos installation.
+.TP
+.B \fB\-\fP\fB\-libs\fP [\fIlibrary\fP]
+prints the compiler options needed to link against \fIlibrary\fP\&.
+Allowed values for \fIlibrary\fP are:
+.TS
+center;
+|l|l|.
+_
+T{
+krb5
+T} T{
+Kerberos 5 applications (default)
+T}
+_
+T{
+gssapi
+T} T{
+GSSAPI applications with Kerberos 5 bindings
+T}
+_
+T{
+kadm\-client
+T} T{
+Kadmin client
+T}
+_
+T{
+kadm\-server
+T} T{
+Kadmin server
+T}
+_
+T{
+kdb
+T} T{
+Applications that access the Kerberos database
+T}
+_
+.TE
+.UNINDENT
+.SH EXAMPLES
+.sp
+krb5\-config is particularly useful for compiling against a Kerberos
+installation that was installed in a non\-standard location. For example,
+a Kerberos installation that is installed in \fB/opt/krb5/\fP but uses
+libraries in \fB/usr/local/lib/\fP for text localization would produce
+the following output:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+shell% krb5\-config \-\-libs krb5
+\-L/opt/krb5/lib \-Wl,\-rpath \-Wl,/opt/krb5/lib \-L/usr/local/lib \-lkrb5 \-lk5crypto \-lcom_err
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH SEE ALSO
+.sp
+kerberos(1), cc(1)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/krb5.conf.man b/src/man/krb5.conf.man
new file mode 100644
index 000000000000..4e350bd72351
--- /dev/null
+++ b/src/man/krb5.conf.man
@@ -0,0 +1,1462 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KRB5.CONF" "5" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+krb5.conf \- Kerberos configuration file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.sp
+The krb5.conf file contains Kerberos configuration information,
+including the locations of KDCs and admin servers for the Kerberos
+realms of interest, defaults for the current realm and for Kerberos
+applications, and mappings of hostnames onto Kerberos realms.
+Normally, you should install your krb5.conf file in the directory
+\fB/etc\fP\&. You can override the default location by setting the
+environment variable \fBKRB5_CONFIG\fP\&. Multiple colon\-separated
+filenames may be specified in \fBKRB5_CONFIG\fP; all files which are
+present will be read. Starting in release 1.14, directory names can
+also be specified in \fBKRB5_CONFIG\fP; all files within the directory
+whose names consist solely of alphanumeric characters, dashes, or
+underscores will be read.
+.SH STRUCTURE
+.sp
+The krb5.conf file is set up in the style of a Windows INI file.
+Sections are headed by the section name, in square brackets. Each
+section may contain zero or more relations, of the form:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+foo = bar
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+or:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+fubar = {
+ foo = bar
+ baz = quux
+}
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Placing a \(aq*\(aq at the end of a line indicates that this is the \fIfinal\fP
+value for the tag. This means that neither the remainder of this
+configuration file nor any other configuration file will be checked
+for any other values for this tag.
+.sp
+For example, if you have the following lines:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+foo = bar*
+foo = baz
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+then the second value of \fBfoo\fP (\fBbaz\fP) would never be read.
+.sp
+The krb5.conf file can include other files using either of the
+following directives at the beginning of a line:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+include FILENAME
+includedir DIRNAME
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fIFILENAME\fP or \fIDIRNAME\fP should be an absolute path. The named file or
+directory must exist and be readable. Including a directory includes
+all files within the directory whose names consist solely of
+alphanumeric characters, dashes, or underscores. Starting in release
+1.15, files with names ending in ".conf" are also included. Included
+profile files are syntactically independent of their parents, so each
+included file must begin with a section header.
+.sp
+The krb5.conf file can specify that configuration should be obtained
+from a loadable module, rather than the file itself, using the
+following directive at the beginning of a line before any section
+headers:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+module MODULEPATH:RESIDUAL
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fIMODULEPATH\fP may be relative to the library path of the krb5
+installation, or it may be an absolute path. \fIRESIDUAL\fP is provided
+to the module at initialization time. If krb5.conf uses a module
+directive, \fIkdc.conf(5)\fP should also use one if it exists.
+.SH SECTIONS
+.sp
+The krb5.conf file may contain the following sections:
+.TS
+center;
+|l|l|.
+_
+T{
+\fI\%[libdefaults]\fP
+T} T{
+Settings used by the Kerberos V5 library
+T}
+_
+T{
+\fI\%[realms]\fP
+T} T{
+Realm\-specific contact information and settings
+T}
+_
+T{
+\fI\%[domain_realm]\fP
+T} T{
+Maps server hostnames to Kerberos realms
+T}
+_
+T{
+\fI\%[capaths]\fP
+T} T{
+Authentication paths for non\-hierarchical cross\-realm
+T}
+_
+T{
+\fI\%[appdefaults]\fP
+T} T{
+Settings used by some Kerberos V5 applications
+T}
+_
+T{
+\fI\%[plugins]\fP
+T} T{
+Controls plugin module registration
+T}
+_
+.TE
+.sp
+Additionally, krb5.conf may include any of the relations described in
+\fIkdc.conf(5)\fP, but it is not a recommended practice.
+.SS [libdefaults]
+.sp
+The libdefaults section may contain any of the following relations:
+.INDENT 0.0
+.TP
+.B \fBallow_weak_crypto\fP
+If this flag is set to false, then weak encryption types (as noted
+in \fIEncryption_types\fP in \fIkdc.conf(5)\fP) will be filtered
+out of the lists \fBdefault_tgs_enctypes\fP,
+\fBdefault_tkt_enctypes\fP, and \fBpermitted_enctypes\fP\&. The default
+value for this tag is false, which may cause authentication
+failures in existing Kerberos infrastructures that do not support
+strong crypto. Users in affected environments should set this tag
+to true until their infrastructure adopts stronger ciphers.
+.TP
+.B \fBap_req_checksum_type\fP
+An integer which specifies the type of AP\-REQ checksum to use in
+authenticators. This variable should be unset so the appropriate
+checksum for the encryption key in use will be used. This can be
+set if backward compatibility requires a specific checksum type.
+See the \fBkdc_req_checksum_type\fP configuration option for the
+possible values and their meanings.
+.TP
+.B \fBcanonicalize\fP
+If this flag is set to true, initial ticket requests to the KDC
+will request canonicalization of the client principal name, and
+answers with different client principals than the requested
+principal will be accepted. The default value is false.
+.TP
+.B \fBccache_type\fP
+This parameter determines the format of credential cache types
+created by \fIkinit(1)\fP or other programs. The default value
+is 4, which represents the most current format. Smaller values
+can be used for compatibility with very old implementations of
+Kerberos which interact with credential caches on the same host.
+.TP
+.B \fBclockskew\fP
+Sets the maximum allowable amount of clockskew in seconds that the
+library will tolerate before assuming that a Kerberos message is
+invalid. The default value is 300 seconds, or five minutes.
+.sp
+The clockskew setting is also used when evaluating ticket start
+and expiration times. For example, tickets that have reached
+their expiration time can still be used (and renewed if they are
+renewable tickets) if they have been expired for a shorter
+duration than the \fBclockskew\fP setting.
+.TP
+.B \fBdefault_ccache_name\fP
+This relation specifies the name of the default credential cache.
+The default is \fB@CCNAME@\fP\&. This relation is subject to parameter
+expansion (see below). New in release 1.11.
+.TP
+.B \fBdefault_client_keytab_name\fP
+This relation specifies the name of the default keytab for
+obtaining client credentials. The default is \fB@CKTNAME@\fP\&. This
+relation is subject to parameter expansion (see below).
+New in release 1.11.
+.TP
+.B \fBdefault_keytab_name\fP
+This relation specifies the default keytab name to be used by
+application servers such as sshd. The default is \fB@KTNAME@\fP\&. This
+relation is subject to parameter expansion (see below).
+.TP
+.B \fBdefault_realm\fP
+Identifies the default Kerberos realm for the client. Set its
+value to your Kerberos realm. If this value is not set, then a
+realm must be specified with every Kerberos principal when
+invoking programs such as \fIkinit(1)\fP\&.
+.TP
+.B \fBdefault_tgs_enctypes\fP
+Identifies the supported list of session key encryption types that
+the client should request when making a TGS\-REQ, in order of
+preference from highest to lowest. The list may be delimited with
+commas or whitespace. See \fIEncryption_types\fP in
+\fIkdc.conf(5)\fP for a list of the accepted values for this tag.
+The default value is \fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac des\-cbc\-crc des\-cbc\-md5 des\-cbc\-md4\fP, but single\-DES encryption types
+will be implicitly removed from this list if the value of
+\fBallow_weak_crypto\fP is false.
+.sp
+Do not set this unless required for specific backward
+compatibility purposes; stale values of this setting can prevent
+clients from taking advantage of new stronger enctypes when the
+libraries are upgraded.
+.TP
+.B \fBdefault_tkt_enctypes\fP
+Identifies the supported list of session key encryption types that
+the client should request when making an AS\-REQ, in order of
+preference from highest to lowest. The format is the same as for
+default_tgs_enctypes. The default value for this tag is
+\fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac des\-cbc\-crc des\-cbc\-md5 des\-cbc\-md4\fP, but single\-DES encryption types will be implicitly
+removed from this list if the value of \fBallow_weak_crypto\fP is
+false.
+.sp
+Do not set this unless required for specific backward
+compatibility purposes; stale values of this setting can prevent
+clients from taking advantage of new stronger enctypes when the
+libraries are upgraded.
+.TP
+.B \fBdns_canonicalize_hostname\fP
+Indicate whether name lookups will be used to canonicalize
+hostnames for use in service principal names. Setting this flag
+to false can improve security by reducing reliance on DNS, but
+means that short hostnames will not be canonicalized to
+fully\-qualified hostnames. The default value is true.
+.TP
+.B \fBdns_lookup_kdc\fP
+Indicate whether DNS SRV records should be used to locate the KDCs
+and other servers for a realm, if they are not listed in the
+krb5.conf information for the realm. (Note that the admin_server
+entry must be in the krb5.conf realm information in order to
+contact kadmind, because the DNS implementation for kadmin is
+incomplete.)
+.sp
+Enabling this option does open up a type of denial\-of\-service
+attack, if someone spoofs the DNS records and redirects you to
+another server. However, it\(aqs no worse than a denial of service,
+because that fake KDC will be unable to decode anything you send
+it (besides the initial ticket request, which has no encrypted
+data), and anything the fake KDC sends will not be trusted without
+verification using some secret that it won\(aqt know.
+.TP
+.B \fBdns_uri_lookup\fP
+Indicate whether DNS URI records should be used to locate the KDCs
+and other servers for a realm, if they are not listed in the
+krb5.conf information for the realm. SRV records are used as a
+fallback if no URI records were found. The default value is true.
+New in release 1.15.
+.TP
+.B \fBerr_fmt\fP
+This relation allows for custom error message formatting. If a
+value is set, error messages will be formatted by substituting a
+normal error message for %M and an error code for %C in the value.
+.TP
+.B \fBextra_addresses\fP
+This allows a computer to use multiple local addresses, in order
+to allow Kerberos to work in a network that uses NATs while still
+using address\-restricted tickets. The addresses should be in a
+comma\-separated list. This option has no effect if
+\fBnoaddresses\fP is true.
+.TP
+.B \fBforwardable\fP
+If this flag is true, initial tickets will be forwardable by
+default, if allowed by the KDC. The default value is false.
+.TP
+.B \fBignore_acceptor_hostname\fP
+When accepting GSSAPI or krb5 security contexts for host\-based
+service principals, ignore any hostname passed by the calling
+application, and allow clients to authenticate to any service
+principal in the keytab matching the service name and realm name
+(if given). This option can improve the administrative
+flexibility of server applications on multihomed hosts, but could
+compromise the security of virtual hosting environments. The
+default value is false. New in release 1.10.
+.TP
+.B \fBk5login_authoritative\fP
+If this flag is true, principals must be listed in a local user\(aqs
+k5login file to be granted login access, if a \fI\&.k5login(5)\fP
+file exists. If this flag is false, a principal may still be
+granted login access through other mechanisms even if a k5login
+file exists but does not list the principal. The default value is
+true.
+.TP
+.B \fBk5login_directory\fP
+If set, the library will look for a local user\(aqs k5login file
+within the named directory, with a filename corresponding to the
+local username. If not set, the library will look for k5login
+files in the user\(aqs home directory, with the filename .k5login.
+For security reasons, .k5login files must be owned by
+the local user or by root.
+.TP
+.B \fBkcm_mach_service\fP
+On OS X only, determines the name of the bootstrap service used to
+contact the KCM daemon for the KCM credential cache type. If the
+value is \fB\-\fP, Mach RPC will not be used to contact the KCM
+daemon. The default value is \fBorg.h5l.kcm\fP\&.
+.TP
+.B \fBkcm_socket\fP
+Determines the path to the Unix domain socket used to access the
+KCM daemon for the KCM credential cache type. If the value is
+\fB\-\fP, Unix domain sockets will not be used to contact the KCM
+daemon. The default value is
+\fB/var/run/.heim_org.h5l.kcm\-socket\fP\&.
+.TP
+.B \fBkdc_default_options\fP
+Default KDC options (Xored for multiple values) when requesting
+initial tickets. By default it is set to 0x00000010
+(KDC_OPT_RENEWABLE_OK).
+.TP
+.B \fBkdc_timesync\fP
+Accepted values for this relation are 1 or 0. If it is nonzero,
+client machines will compute the difference between their time and
+the time returned by the KDC in the timestamps in the tickets and
+use this value to correct for an inaccurate system clock when
+requesting service tickets or authenticating to services. This
+corrective factor is only used by the Kerberos library; it is not
+used to change the system clock. The default value is 1.
+.TP
+.B \fBkdc_req_checksum_type\fP
+An integer which specifies the type of checksum to use for the KDC
+requests, for compatibility with very old KDC implementations.
+This value is only used for DES keys; other keys use the preferred
+checksum type for those keys.
+.sp
+The possible values and their meanings are as follows.
+.TS
+center;
+|l|l|.
+_
+T{
+1
+T} T{
+CRC32
+T}
+_
+T{
+2
+T} T{
+RSA MD4
+T}
+_
+T{
+3
+T} T{
+RSA MD4 DES
+T}
+_
+T{
+4
+T} T{
+DES CBC
+T}
+_
+T{
+7
+T} T{
+RSA MD5
+T}
+_
+T{
+8
+T} T{
+RSA MD5 DES
+T}
+_
+T{
+9
+T} T{
+NIST SHA
+T}
+_
+T{
+12
+T} T{
+HMAC SHA1 DES3
+T}
+_
+T{
+\-138
+T} T{
+Microsoft MD5 HMAC checksum type
+T}
+_
+.TE
+.TP
+.B \fBnoaddresses\fP
+If this flag is true, requests for initial tickets will not be
+made with address restrictions set, allowing the tickets to be
+used across NATs. The default value is true.
+.TP
+.B \fBpermitted_enctypes\fP
+Identifies all encryption types that are permitted for use in
+session key encryption. The default value for this tag is
+\fBaes256\-cts\-hmac\-sha1\-96 aes128\-cts\-hmac\-sha1\-96 des3\-cbc\-sha1 arcfour\-hmac\-md5 camellia256\-cts\-cmac camellia128\-cts\-cmac des\-cbc\-crc des\-cbc\-md5 des\-cbc\-md4\fP, but single\-DES encryption types will be implicitly
+removed from this list if the value of \fBallow_weak_crypto\fP is
+false.
+.TP
+.B \fBplugin_base_dir\fP
+If set, determines the base directory where krb5 plugins are
+located. The default value is the \fBkrb5/plugins\fP subdirectory
+of the krb5 library directory.
+.TP
+.B \fBpreferred_preauth_types\fP
+This allows you to set the preferred preauthentication types which
+the client will attempt before others which may be advertised by a
+KDC. The default value for this setting is "17, 16, 15, 14",
+which forces libkrb5 to attempt to use PKINIT if it is supported.
+.TP
+.B \fBproxiable\fP
+If this flag is true, initial tickets will be proxiable by
+default, if allowed by the KDC. The default value is false.
+.TP
+.B \fBrdns\fP
+If this flag is true, reverse name lookup will be used in addition
+to forward name lookup to canonicalizing hostnames for use in
+service principal names. If \fBdns_canonicalize_hostname\fP is set
+to false, this flag has no effect. The default value is true.
+.TP
+.B \fBrealm_try_domains\fP
+Indicate whether a host\(aqs domain components should be used to
+determine the Kerberos realm of the host. The value of this
+variable is an integer: \-1 means not to search, 0 means to try the
+host\(aqs domain itself, 1 means to also try the domain\(aqs immediate
+parent, and so forth. The library\(aqs usual mechanism for locating
+Kerberos realms is used to determine whether a domain is a valid
+realm, which may involve consulting DNS if \fBdns_lookup_kdc\fP is
+set. The default is not to search domain components.
+.TP
+.B \fBrenew_lifetime\fP
+(\fIduration\fP string.) Sets the default renewable lifetime
+for initial ticket requests. The default value is 0.
+.TP
+.B \fBsafe_checksum_type\fP
+An integer which specifies the type of checksum to use for the
+KRB\-SAFE requests. By default it is set to 8 (RSA MD5 DES). For
+compatibility with applications linked against DCE version 1.1 or
+earlier Kerberos libraries, use a value of 3 to use the RSA MD4
+DES instead. This field is ignored when its value is incompatible
+with the session key type. See the \fBkdc_req_checksum_type\fP
+configuration option for the possible values and their meanings.
+.TP
+.B \fBticket_lifetime\fP
+(\fIduration\fP string.) Sets the default lifetime for initial
+ticket requests. The default value is 1 day.
+.TP
+.B \fBudp_preference_limit\fP
+When sending a message to the KDC, the library will try using TCP
+before UDP if the size of the message is above
+\fBudp_preference_limit\fP\&. If the message is smaller than
+\fBudp_preference_limit\fP, then UDP will be tried before TCP.
+Regardless of the size, both protocols will be tried if the first
+attempt fails.
+.TP
+.B \fBverify_ap_req_nofail\fP
+If this flag is true, then an attempt to verify initial
+credentials will fail if the client machine does not have a
+keytab. The default value is false.
+.UNINDENT
+.SS [realms]
+.sp
+Each tag in the [realms] section of the file is the name of a Kerberos
+realm. The value of the tag is a subsection with relations that
+define the properties of that particular realm. For each realm, the
+following tags may be specified in the realm\(aqs subsection:
+.INDENT 0.0
+.TP
+.B \fBadmin_server\fP
+Identifies the host where the administration server is running.
+Typically, this is the master Kerberos server. This tag must be
+given a value in order to communicate with the \fIkadmind(8)\fP
+server for the realm.
+.TP
+.B \fBauth_to_local\fP
+This tag allows you to set a general rule for mapping principal
+names to local user names. It will be used if there is not an
+explicit mapping for the principal name that is being
+translated. The possible values are:
+.INDENT 7.0
+.TP
+.B \fBRULE:\fP\fIexp\fP
+The local name will be formulated from \fIexp\fP\&.
+.sp
+The format for \fIexp\fP is \fB[\fP\fIn\fP\fB:\fP\fIstring\fP\fB](\fP\fIregexp\fP\fB)s/\fP\fIpattern\fP\fB/\fP\fIreplacement\fP\fB/g\fP\&.
+The integer \fIn\fP indicates how many components the target
+principal should have. If this matches, then a string will be
+formed from \fIstring\fP, substituting the realm of the principal
+for \fB$0\fP and the \fIn\fP\(aqth component of the principal for
+\fB$n\fP (e.g., if the principal was \fBjohndoe/admin\fP then
+\fB[2:$2$1foo]\fP would result in the string
+\fBadminjohndoefoo\fP). If this string matches \fIregexp\fP, then
+the \fBs//[g]\fP substitution command will be run over the
+string. The optional \fBg\fP will cause the substitution to be
+global over the \fIstring\fP, instead of replacing only the first
+match in the \fIstring\fP\&.
+.TP
+.B \fBDEFAULT\fP
+The principal name will be used as the local user name. If
+the principal has more than one component or is not in the
+default realm, this rule is not applicable and the conversion
+will fail.
+.UNINDENT
+.sp
+For example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[realms]
+ ATHENA.MIT.EDU = {
+ auth_to_local = RULE:[2:$1](johndoe)s/^.*$/guest/
+ auth_to_local = RULE:[2:$1;$2](^.*;admin$)s/;admin$//
+ auth_to_local = RULE:[2:$2](^.*;root)s/^.*$/root/
+ auto_to_local = DEFAULT
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+would result in any principal without \fBroot\fP or \fBadmin\fP as the
+second component to be translated with the default rule. A
+principal with a second component of \fBadmin\fP will become its
+first component. \fBroot\fP will be used as the local name for any
+principal with a second component of \fBroot\fP\&. The exception to
+these two rules are any principals \fBjohndoe/*\fP, which will
+always get the local name \fBguest\fP\&.
+.TP
+.B \fBauth_to_local_names\fP
+This subsection allows you to set explicit mappings from principal
+names to local user names. The tag is the mapping name, and the
+value is the corresponding local user name.
+.TP
+.B \fBdefault_domain\fP
+This tag specifies the domain used to expand hostnames when
+translating Kerberos 4 service principals to Kerberos 5 principals
+(for example, when converting \fBrcmd.hostname\fP to
+\fBhost/hostname.domain\fP).
+.TP
+.B \fBhttp_anchors\fP
+When KDCs and kpasswd servers are accessed through HTTPS proxies, this tag
+can be used to specify the location of the CA certificate which should be
+trusted to issue the certificate for a proxy server. If left unspecified,
+the system\-wide default set of CA certificates is used.
+.sp
+The syntax for values is similar to that of values for the
+\fBpkinit_anchors\fP tag:
+.sp
+\fBFILE:\fP \fIfilename\fP
+.sp
+\fIfilename\fP is assumed to be the name of an OpenSSL\-style ca\-bundle file.
+.sp
+\fBDIR:\fP \fIdirname\fP
+.sp
+\fIdirname\fP is assumed to be an directory which contains CA certificates.
+All files in the directory will be examined; if they contain certificates
+(in PEM format), they will be used.
+.sp
+\fBENV:\fP \fIenvvar\fP
+.sp
+\fIenvvar\fP specifies the name of an environment variable which has been set
+to a value conforming to one of the previous values. For example,
+\fBENV:X509_PROXY_CA\fP, where environment variable \fBX509_PROXY_CA\fP has
+been set to \fBFILE:/tmp/my_proxy.pem\fP\&.
+.TP
+.B \fBkdc\fP
+The name or address of a host running a KDC for that realm. An
+optional port number, separated from the hostname by a colon, may
+be included. If the name or address contains colons (for example,
+if it is an IPv6 address), enclose it in square brackets to
+distinguish the colon from a port separator. For your computer to
+be able to communicate with the KDC for each realm, this tag must
+be given a value in each realm subsection in the configuration
+file, or there must be DNS SRV records specifying the KDCs.
+.TP
+.B \fBkpasswd_server\fP
+Points to the server where all the password changes are performed.
+If there is no such entry, the port 464 on the \fBadmin_server\fP
+host will be tried.
+.TP
+.B \fBmaster_kdc\fP
+Identifies the master KDC(s). Currently, this tag is used in only
+one case: If an attempt to get credentials fails because of an
+invalid password, the client software will attempt to contact the
+master KDC, in case the user\(aqs password has just been changed, and
+the updated database has not been propagated to the slave servers
+yet.
+.TP
+.B \fBv4_instance_convert\fP
+This subsection allows the administrator to configure exceptions
+to the \fBdefault_domain\fP mapping rule. It contains V4 instances
+(the tag name) which should be translated to some specific
+hostname (the tag value) as the second component in a Kerberos V5
+principal name.
+.TP
+.B \fBv4_realm\fP
+This relation is used by the krb524 library routines when
+converting a V5 principal name to a V4 principal name. It is used
+when the V4 realm name and the V5 realm name are not the same, but
+still share the same principal names and passwords. The tag value
+is the Kerberos V4 realm name.
+.UNINDENT
+.SS [domain_realm]
+.sp
+The [domain_realm] section provides a translation from a domain name
+or hostname to a Kerberos realm name. The tag name can be a host name
+or domain name, where domain names are indicated by a prefix of a
+period (\fB\&.\fP). The value of the relation is the Kerberos realm name
+for that particular host or domain. A host name relation implicitly
+provides the corresponding domain name relation, unless an explicit domain
+name relation is provided. The Kerberos realm may be
+identified either in the \fI\%realms\fP section or using DNS SRV records.
+Host names and domain names should be in lower case. For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[domain_realm]
+ crash.mit.edu = TEST.ATHENA.MIT.EDU
+ .dev.mit.edu = TEST.ATHENA.MIT.EDU
+ mit.edu = ATHENA.MIT.EDU
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+maps the host with the name \fBcrash.mit.edu\fP into the
+\fBTEST.ATHENA.MIT.EDU\fP realm. The second entry maps all hosts under the
+domain \fBdev.mit.edu\fP into the \fBTEST.ATHENA.MIT.EDU\fP realm, but not
+the host with the name \fBdev.mit.edu\fP\&. That host is matched
+by the third entry, which maps the host \fBmit.edu\fP and all hosts
+under the domain \fBmit.edu\fP that do not match a preceding rule
+into the realm \fBATHENA.MIT.EDU\fP\&.
+.sp
+If no translation entry applies to a hostname used for a service
+principal for a service ticket request, the library will try to get a
+referral to the appropriate realm from the client realm\(aqs KDC. If
+that does not succeed, the host\(aqs realm is considered to be the
+hostname\(aqs domain portion converted to uppercase, unless the
+\fBrealm_try_domains\fP setting in [libdefaults] causes a different
+parent domain to be used.
+.SS [capaths]
+.sp
+In order to perform direct (non\-hierarchical) cross\-realm
+authentication, configuration is needed to determine the
+authentication paths between realms.
+.sp
+A client will use this section to find the authentication path between
+its realm and the realm of the server. The server will use this
+section to verify the authentication path used by the client, by
+checking the transited field of the received ticket.
+.sp
+There is a tag for each participating client realm, and each tag has
+subtags for each of the server realms. The value of the subtags is an
+intermediate realm which may participate in the cross\-realm
+authentication. The subtags may be repeated if there is more then one
+intermediate realm. A value of "." means that the two realms share
+keys directly, and no intermediate realms should be allowed to
+participate.
+.sp
+Only those entries which will be needed on the client or the server
+need to be present. A client needs a tag for its local realm with
+subtags for all the realms of servers it will need to authenticate to.
+A server needs a tag for each realm of the clients it will serve, with
+a subtag of the server realm.
+.sp
+For example, \fBANL.GOV\fP, \fBPNL.GOV\fP, and \fBNERSC.GOV\fP all wish to
+use the \fBES.NET\fP realm as an intermediate realm. ANL has a sub
+realm of \fBTEST.ANL.GOV\fP which will authenticate with \fBNERSC.GOV\fP
+but not \fBPNL.GOV\fP\&. The [capaths] section for \fBANL.GOV\fP systems
+would look like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[capaths]
+ ANL.GOV = {
+ TEST.ANL.GOV = .
+ PNL.GOV = ES.NET
+ NERSC.GOV = ES.NET
+ ES.NET = .
+ }
+ TEST.ANL.GOV = {
+ ANL.GOV = .
+ }
+ PNL.GOV = {
+ ANL.GOV = ES.NET
+ }
+ NERSC.GOV = {
+ ANL.GOV = ES.NET
+ }
+ ES.NET = {
+ ANL.GOV = .
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The [capaths] section of the configuration file used on \fBNERSC.GOV\fP
+systems would look like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[capaths]
+ NERSC.GOV = {
+ ANL.GOV = ES.NET
+ TEST.ANL.GOV = ES.NET
+ TEST.ANL.GOV = ANL.GOV
+ PNL.GOV = ES.NET
+ ES.NET = .
+ }
+ ANL.GOV = {
+ NERSC.GOV = ES.NET
+ }
+ PNL.GOV = {
+ NERSC.GOV = ES.NET
+ }
+ ES.NET = {
+ NERSC.GOV = .
+ }
+ TEST.ANL.GOV = {
+ NERSC.GOV = ANL.GOV
+ NERSC.GOV = ES.NET
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+When a subtag is used more than once within a tag, clients will use
+the order of values to determine the path. The order of values is not
+important to servers.
+.SS [appdefaults]
+.sp
+Each tag in the [appdefaults] section names a Kerberos V5 application
+or an option that is used by some Kerberos V5 application[s]. The
+value of the tag defines the default behaviors for that application.
+.sp
+For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[appdefaults]
+ telnet = {
+ ATHENA.MIT.EDU = {
+ option1 = false
+ }
+ }
+ telnet = {
+ option1 = true
+ option2 = true
+ }
+ ATHENA.MIT.EDU = {
+ option2 = false
+ }
+ option2 = true
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The above four ways of specifying the value of an option are shown in
+order of decreasing precedence. In this example, if telnet is running
+in the realm EXAMPLE.COM, it should, by default, have option1 and
+option2 set to true. However, a telnet program in the realm
+\fBATHENA.MIT.EDU\fP should have \fBoption1\fP set to false and
+\fBoption2\fP set to true. Any other programs in ATHENA.MIT.EDU should
+have \fBoption2\fP set to false by default. Any programs running in
+other realms should have \fBoption2\fP set to true.
+.sp
+The list of specifiable options for each application may be found in
+that application\(aqs man pages. The application defaults specified here
+are overridden by those specified in the \fI\%realms\fP section.
+.SS [plugins]
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+\fI\%pwqual\fP interface
+.IP \(bu 2
+\fI\%kadm5_hook\fP interface
+.IP \(bu 2
+\fI\%clpreauth\fP and \fI\%kdcpreauth\fP interfaces
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+Tags in the [plugins] section can be used to register dynamic plugin
+modules and to turn modules on and off. Not every krb5 pluggable
+interface uses the [plugins] section; the ones that do are documented
+here.
+.sp
+New in release 1.9.
+.sp
+Each pluggable interface corresponds to a subsection of [plugins].
+All subsections support the same tags:
+.INDENT 0.0
+.TP
+.B \fBdisable\fP
+This tag may have multiple values. If there are values for this
+tag, then the named modules will be disabled for the pluggable
+interface.
+.TP
+.B \fBenable_only\fP
+This tag may have multiple values. If there are values for this
+tag, then only the named modules will be enabled for the pluggable
+interface.
+.TP
+.B \fBmodule\fP
+This tag may have multiple values. Each value is a string of the
+form \fBmodulename:pathname\fP, which causes the shared object
+located at \fIpathname\fP to be registered as a dynamic module named
+\fImodulename\fP for the pluggable interface. If \fIpathname\fP is not an
+absolute path, it will be treated as relative to the
+\fBplugin_base_dir\fP value from \fI\%[libdefaults]\fP\&.
+.UNINDENT
+.sp
+For pluggable interfaces where module order matters, modules
+registered with a \fBmodule\fP tag normally come first, in the order
+they are registered, followed by built\-in modules in the order they
+are documented below. If \fBenable_only\fP tags are used, then the
+order of those tags overrides the normal module order.
+.sp
+The following subsections are currently supported within the [plugins]
+section:
+.SS ccselect interface
+.sp
+The ccselect subsection controls modules for credential cache
+selection within a cache collection. In addition to any registered
+dynamic modules, the following built\-in modules exist (and may be
+disabled with the disable tag):
+.INDENT 0.0
+.TP
+.B \fBk5identity\fP
+Uses a .k5identity file in the user\(aqs home directory to select a
+client principal
+.TP
+.B \fBrealm\fP
+Uses the service realm to guess an appropriate cache from the
+collection
+.UNINDENT
+.SS pwqual interface
+.sp
+The pwqual subsection controls modules for the password quality
+interface, which is used to reject weak passwords when passwords are
+changed. The following built\-in modules exist for this interface:
+.INDENT 0.0
+.TP
+.B \fBdict\fP
+Checks against the realm dictionary file
+.TP
+.B \fBempty\fP
+Rejects empty passwords
+.TP
+.B \fBhesiod\fP
+Checks against user information stored in Hesiod (only if Kerberos
+was built with Hesiod support)
+.TP
+.B \fBprinc\fP
+Checks against components of the principal name
+.UNINDENT
+.SS kadm5_hook interface
+.sp
+The kadm5_hook interface provides plugins with information on
+principal creation, modification, password changes and deletion. This
+interface can be used to write a plugin to synchronize MIT Kerberos
+with another database such as Active Directory. No plugins are built
+in for this interface.
+.SS clpreauth and kdcpreauth interfaces
+.sp
+The clpreauth and kdcpreauth interfaces allow plugin modules to
+provide client and KDC preauthentication mechanisms. The following
+built\-in modules exist for these interfaces:
+.INDENT 0.0
+.TP
+.B \fBpkinit\fP
+This module implements the PKINIT preauthentication mechanism.
+.TP
+.B \fBencrypted_challenge\fP
+This module implements the encrypted challenge FAST factor.
+.TP
+.B \fBencrypted_timestamp\fP
+This module implements the encrypted timestamp mechanism.
+.UNINDENT
+.SS hostrealm interface
+.sp
+The hostrealm section (introduced in release 1.12) controls modules
+for the host\-to\-realm interface, which affects the local mapping of
+hostnames to realm names and the choice of default realm. The following
+built\-in modules exist for this interface:
+.INDENT 0.0
+.TP
+.B \fBprofile\fP
+This module consults the [domain_realm] section of the profile for
+authoritative host\-to\-realm mappings, and the \fBdefault_realm\fP
+variable for the default realm.
+.TP
+.B \fBdns\fP
+This module looks for DNS records for fallback host\-to\-realm
+mappings and the default realm. It only operates if the
+\fBdns_lookup_realm\fP variable is set to true.
+.TP
+.B \fBdomain\fP
+This module applies heuristics for fallback host\-to\-realm
+mappings. It implements the \fBrealm_try_domains\fP variable, and
+uses the uppercased parent domain of the hostname if that does not
+produce a result.
+.UNINDENT
+.SS localauth interface
+.sp
+The localauth section (introduced in release 1.12) controls modules
+for the local authorization interface, which affects the relationship
+between Kerberos principals and local system accounts. The following
+built\-in modules exist for this interface:
+.INDENT 0.0
+.TP
+.B \fBdefault\fP
+This module implements the \fBDEFAULT\fP type for \fBauth_to_local\fP
+values.
+.TP
+.B \fBrule\fP
+This module implements the \fBRULE\fP type for \fBauth_to_local\fP
+values.
+.TP
+.B \fBnames\fP
+This module looks for an \fBauth_to_local_names\fP mapping for the
+principal name.
+.TP
+.B \fBauth_to_local\fP
+This module processes \fBauth_to_local\fP values in the default
+realm\(aqs section, and applies the default method if no
+\fBauth_to_local\fP values exist.
+.TP
+.B \fBk5login\fP
+This module authorizes a principal to a local account according to
+the account\(aqs \fI\&.k5login(5)\fP file.
+.TP
+.B \fBan2ln\fP
+This module authorizes a principal to a local account if the
+principal name maps to the local account name.
+.UNINDENT
+.SH PKINIT OPTIONS
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+The following are PKINIT\-specific options. These values may
+be specified in [libdefaults] as global defaults, or within
+a realm\-specific subsection of [libdefaults], or may be
+specified as realm\-specific values in the [realms] section.
+A realm\-specific value overrides, not adds to, a generic
+[libdefaults] specification. The search order is:
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 1. 3
+realm\-specific subsection of [libdefaults]:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[libdefaults]
+ EXAMPLE.COM = {
+ pkinit_anchors = FILE:/usr/local/example.com.crt
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.IP 2. 3
+realm\-specific value in the [realms] section:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[realms]
+ OTHERREALM.ORG = {
+ pkinit_anchors = FILE:/usr/local/otherrealm.org.crt
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.IP 3. 3
+generic value in the [libdefaults] section:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[libdefaults]
+ pkinit_anchors = DIR:/usr/local/generic_trusted_cas/
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SS Specifying PKINIT identity information
+.sp
+The syntax for specifying Public Key identity, trust, and revocation
+information for PKINIT is as follows:
+.INDENT 0.0
+.TP
+.B \fBFILE:\fP\fIfilename\fP[\fB,\fP\fIkeyfilename\fP]
+This option has context\-specific behavior.
+.sp
+In \fBpkinit_identity\fP or \fBpkinit_identities\fP, \fIfilename\fP
+specifies the name of a PEM\-format file containing the user\(aqs
+certificate. If \fIkeyfilename\fP is not specified, the user\(aqs
+private key is expected to be in \fIfilename\fP as well. Otherwise,
+\fIkeyfilename\fP is the name of the file containing the private key.
+.sp
+In \fBpkinit_anchors\fP or \fBpkinit_pool\fP, \fIfilename\fP is assumed to
+be the name of an OpenSSL\-style ca\-bundle file.
+.TP
+.B \fBDIR:\fP\fIdirname\fP
+This option has context\-specific behavior.
+.sp
+In \fBpkinit_identity\fP or \fBpkinit_identities\fP, \fIdirname\fP
+specifies a directory with files named \fB*.crt\fP and \fB*.key\fP
+where the first part of the file name is the same for matching
+pairs of certificate and private key files. When a file with a
+name ending with \fB\&.crt\fP is found, a matching file ending with
+\fB\&.key\fP is assumed to contain the private key. If no such file
+is found, then the certificate in the \fB\&.crt\fP is not used.
+.sp
+In \fBpkinit_anchors\fP or \fBpkinit_pool\fP, \fIdirname\fP is assumed to
+be an OpenSSL\-style hashed CA directory where each CA cert is
+stored in a file named \fBhash\-of\-ca\-cert.#\fP\&. This infrastructure
+is encouraged, but all files in the directory will be examined and
+if they contain certificates (in PEM format), they will be used.
+.sp
+In \fBpkinit_revoke\fP, \fIdirname\fP is assumed to be an OpenSSL\-style
+hashed CA directory where each revocation list is stored in a file
+named \fBhash\-of\-ca\-cert.r#\fP\&. This infrastructure is encouraged,
+but all files in the directory will be examined and if they
+contain a revocation list (in PEM format), they will be used.
+.TP
+.B \fBPKCS12:\fP\fIfilename\fP
+\fIfilename\fP is the name of a PKCS #12 format file, containing the
+user\(aqs certificate and private key.
+.TP
+.B \fBPKCS11:\fP[\fBmodule_name=\fP]\fImodname\fP[\fB:slotid=\fP\fIslot\-id\fP][\fB:token=\fP\fItoken\-label\fP][\fB:certid=\fP\fIcert\-id\fP][\fB:certlabel=\fP\fIcert\-label\fP]
+All keyword/values are optional. \fImodname\fP specifies the location
+of a library implementing PKCS #11. If a value is encountered
+with no keyword, it is assumed to be the \fImodname\fP\&. If no
+module\-name is specified, the default is \fBopensc\-pkcs11.so\fP\&.
+\fBslotid=\fP and/or \fBtoken=\fP may be specified to force the use of
+a particular smard card reader or token if there is more than one
+available. \fBcertid=\fP and/or \fBcertlabel=\fP may be specified to
+force the selection of a particular certificate on the device.
+See the \fBpkinit_cert_match\fP configuration option for more ways
+to select a particular certificate to use for PKINIT.
+.TP
+.B \fBENV:\fP\fIenvvar\fP
+\fIenvvar\fP specifies the name of an environment variable which has
+been set to a value conforming to one of the previous values. For
+example, \fBENV:X509_PROXY\fP, where environment variable
+\fBX509_PROXY\fP has been set to \fBFILE:/tmp/my_proxy.pem\fP\&.
+.UNINDENT
+.SS PKINIT krb5.conf options
+.INDENT 0.0
+.TP
+.B \fBpkinit_anchors\fP
+Specifies the location of trusted anchor (root) certificates which
+the client trusts to sign KDC certificates. This option may be
+specified multiple times. These values from the config file are
+not used if the user specifies X509_anchors on the command line.
+.TP
+.B \fBpkinit_cert_match\fP
+Specifies matching rules that the client certificate must match
+before it is used to attempt PKINIT authentication. If a user has
+multiple certificates available (on a smart card, or via other
+media), there must be exactly one certificate chosen before
+attempting PKINIT authentication. This option may be specified
+multiple times. All the available certificates are checked
+against each rule in order until there is a match of exactly one
+certificate.
+.sp
+The Subject and Issuer comparison strings are the \fI\%RFC 2253\fP
+string representations from the certificate Subject DN and Issuer
+DN values.
+.sp
+The syntax of the matching rules is:
+.INDENT 7.0
+.INDENT 3.5
+[\fIrelation\-operator\fP]\fIcomponent\-rule\fP ...
+.UNINDENT
+.UNINDENT
+.sp
+where:
+.INDENT 7.0
+.TP
+.B \fIrelation\-operator\fP
+can be either \fB&&\fP, meaning all component rules must match,
+or \fB||\fP, meaning only one component rule must match. The
+default is \fB&&\fP\&.
+.TP
+.B \fIcomponent\-rule\fP
+can be one of the following. Note that there is no
+punctuation or whitespace between component rules.
+.INDENT 7.0
+.INDENT 3.5
+.nf
+\fB<SUBJECT>\fP\fIregular\-expression\fP
+\fB<ISSUER>\fP\fIregular\-expression\fP
+\fB<SAN>\fP\fIregular\-expression\fP
+\fB<EKU>\fP\fIextended\-key\-usage\-list\fP
+\fB<KU>\fP\fIkey\-usage\-list\fP
+.fi
+.sp
+.UNINDENT
+.UNINDENT
+.sp
+\fIextended\-key\-usage\-list\fP is a comma\-separated list of
+required Extended Key Usage values. All values in the list
+must be present in the certificate. Extended Key Usage values
+can be:
+.INDENT 7.0
+.IP \(bu 2
+pkinit
+.IP \(bu 2
+msScLogin
+.IP \(bu 2
+clientAuth
+.IP \(bu 2
+emailProtection
+.UNINDENT
+.sp
+\fIkey\-usage\-list\fP is a comma\-separated list of required Key
+Usage values. All values in the list must be present in the
+certificate. Key Usage values can be:
+.INDENT 7.0
+.IP \(bu 2
+digitalSignature
+.IP \(bu 2
+keyEncipherment
+.UNINDENT
+.UNINDENT
+.sp
+Examples:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+pkinit_cert_match = ||<SUBJECT>.*DoE.*<SAN>.*@EXAMPLE.COM
+pkinit_cert_match = &&<EKU>msScLogin,clientAuth<ISSUER>.*DoE.*
+pkinit_cert_match = <EKU>msScLogin,clientAuth<KU>digitalSignature
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBpkinit_eku_checking\fP
+This option specifies what Extended Key Usage value the KDC
+certificate presented to the client must contain. (Note that if
+the KDC certificate has the pkinit SubjectAlternativeName encoded
+as the Kerberos TGS name, EKU checking is not necessary since the
+issuing CA has certified this as a KDC certificate.) The values
+recognized in the krb5.conf file are:
+.INDENT 7.0
+.TP
+.B \fBkpKDC\fP
+This is the default value and specifies that the KDC must have
+the id\-pkinit\-KPKdc EKU as defined in \fI\%RFC 4556\fP\&.
+.TP
+.B \fBkpServerAuth\fP
+If \fBkpServerAuth\fP is specified, a KDC certificate with the
+id\-kp\-serverAuth EKU will be accepted. This key usage value
+is used in most commercially issued server certificates.
+.TP
+.B \fBnone\fP
+If \fBnone\fP is specified, then the KDC certificate will not be
+checked to verify it has an acceptable EKU. The use of this
+option is not recommended.
+.UNINDENT
+.TP
+.B \fBpkinit_dh_min_bits\fP
+Specifies the size of the Diffie\-Hellman key the client will
+attempt to use. The acceptable values are 1024, 2048, and 4096.
+The default is 2048.
+.TP
+.B \fBpkinit_identities\fP
+Specifies the location(s) to be used to find the user\(aqs X.509
+identity information. This option may be specified multiple
+times. Each value is attempted in order until identity
+information is found and authentication is attempted. Note that
+these values are not used if the user specifies
+\fBX509_user_identity\fP on the command line.
+.TP
+.B \fBpkinit_kdc_hostname\fP
+The presense of this option indicates that the client is willing
+to accept a KDC certificate with a dNSName SAN (Subject
+Alternative Name) rather than requiring the id\-pkinit\-san as
+defined in \fI\%RFC 4556\fP\&. This option may be specified multiple
+times. Its value should contain the acceptable hostname for the
+KDC (as contained in its certificate).
+.TP
+.B \fBpkinit_pool\fP
+Specifies the location of intermediate certificates which may be
+used by the client to complete the trust chain between a KDC
+certificate and a trusted anchor. This option may be specified
+multiple times.
+.TP
+.B \fBpkinit_require_crl_checking\fP
+The default certificate verification process will always check the
+available revocation information to see if a certificate has been
+revoked. If a match is found for the certificate in a CRL,
+verification fails. If the certificate being verified is not
+listed in a CRL, or there is no CRL present for its issuing CA,
+and \fBpkinit_require_crl_checking\fP is false, then verification
+succeeds.
+.sp
+However, if \fBpkinit_require_crl_checking\fP is true and there is
+no CRL information available for the issuing CA, then verification
+fails.
+.sp
+\fBpkinit_require_crl_checking\fP should be set to true if the
+policy is such that up\-to\-date CRLs must be present for every CA.
+.TP
+.B \fBpkinit_revoke\fP
+Specifies the location of Certificate Revocation List (CRL)
+information to be used by the client when verifying the validity
+of the KDC certificate presented. This option may be specified
+multiple times.
+.UNINDENT
+.SH PARAMETER EXPANSION
+.sp
+Starting with release 1.11, several variables, such as
+\fBdefault_keytab_name\fP, allow parameters to be expanded.
+Valid parameters are:
+.INDENT 0.0
+.INDENT 3.5
+.TS
+center;
+|l|l|.
+_
+T{
+%{TEMP}
+T} T{
+Temporary directory
+T}
+_
+T{
+%{uid}
+T} T{
+Unix real UID or Windows SID
+T}
+_
+T{
+%{euid}
+T} T{
+Unix effective user ID or Windows SID
+T}
+_
+T{
+%{USERID}
+T} T{
+Same as %{uid}
+T}
+_
+T{
+%{null}
+T} T{
+Empty string
+T}
+_
+T{
+%{LIBDIR}
+T} T{
+Installation library directory
+T}
+_
+T{
+%{BINDIR}
+T} T{
+Installation binary directory
+T}
+_
+T{
+%{SBINDIR}
+T} T{
+Installation admin binary directory
+T}
+_
+T{
+%{username}
+T} T{
+(Unix) Username of effective user ID
+T}
+_
+T{
+%{APPDATA}
+T} T{
+(Windows) Roaming application data for current user
+T}
+_
+T{
+%{COMMON_APPDATA}
+T} T{
+(Windows) Application data for all users
+T}
+_
+T{
+%{LOCAL_APPDATA}
+T} T{
+(Windows) Local application data for current user
+T}
+_
+T{
+%{SYSTEM}
+T} T{
+(Windows) Windows system folder
+T}
+_
+T{
+%{WINDOWS}
+T} T{
+(Windows) Windows folder
+T}
+_
+T{
+%{USERCONFIG}
+T} T{
+(Windows) Per\-user MIT krb5 config file directory
+T}
+_
+T{
+%{COMMONCONFIG}
+T} T{
+(Windows) Common MIT krb5 config file directory
+T}
+_
+.TE
+.UNINDENT
+.UNINDENT
+.SH SAMPLE KRB5.CONF FILE
+.sp
+Here is an example of a generic krb5.conf file:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+[libdefaults]
+ default_realm = ATHENA.MIT.EDU
+ dns_lookup_kdc = true
+ dns_lookup_realm = false
+
+[realms]
+ ATHENA.MIT.EDU = {
+ kdc = kerberos.mit.edu
+ kdc = kerberos\-1.mit.edu
+ kdc = kerberos\-2.mit.edu
+ admin_server = kerberos.mit.edu
+ master_kdc = kerberos.mit.edu
+ }
+ EXAMPLE.COM = {
+ kdc = kerberos.example.com
+ kdc = kerberos\-1.example.com
+ admin_server = kerberos.example.com
+ }
+
+[domain_realm]
+ mit.edu = ATHENA.MIT.EDU
+
+[capaths]
+ ATHENA.MIT.EDU = {
+ EXAMPLE.COM = .
+ }
+ EXAMPLE.COM = {
+ ATHENA.MIT.EDU = .
+ }
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH FILES
+.sp
+\fB/etc/krb5.conf\fP
+.SH SEE ALSO
+.sp
+syslog(3)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/krb5kdc.man b/src/man/krb5kdc.man
new file mode 100644
index 000000000000..873014650b27
--- /dev/null
+++ b/src/man/krb5kdc.man
@@ -0,0 +1,155 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KRB5KDC" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+krb5kdc \- Kerberos V5 KDC
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkrb5kdc\fP
+[\fB\-x\fP \fIdb_args\fP]
+[\fB\-d\fP \fIdbname\fP]
+[\fB\-k\fP \fIkeytype\fP]
+[\fB\-M\fP \fImkeyname\fP]
+[\fB\-p\fP \fIportnum\fP]
+[\fB\-m\fP]
+[\fB\-r\fP \fIrealm\fP]
+[\fB\-n\fP]
+[\fB\-w\fP \fInumworkers\fP]
+[\fB\-P\fP \fIpid_file\fP]
+[\fB\-T\fP \fItime_offset\fP]
+.SH DESCRIPTION
+.sp
+krb5kdc is the Kerberos version 5 Authentication Service and Key
+Distribution Center (AS/KDC).
+.SH OPTIONS
+.sp
+The \fB\-r\fP \fIrealm\fP option specifies the realm for which the server
+should provide service.
+.sp
+The \fB\-d\fP \fIdbname\fP option specifies the name under which the
+principal database can be found. This option does not apply to the
+LDAP database.
+.sp
+The \fB\-k\fP \fIkeytype\fP option specifies the key type of the master key
+to be entered manually as a password when \fB\-m\fP is given; the default
+is \fBdes\-cbc\-crc\fP\&.
+.sp
+The \fB\-M\fP \fImkeyname\fP option specifies the principal name for the
+master key in the database (usually \fBK/M\fP in the KDC\(aqs realm).
+.sp
+The \fB\-m\fP option specifies that the master database password should
+be fetched from the keyboard rather than from a stash file.
+.sp
+The \fB\-n\fP option specifies that the KDC does not put itself in the
+background and does not disassociate itself from the terminal. In
+normal operation, you should always allow the KDC to place itself in
+the background.
+.sp
+The \fB\-P\fP \fIpid_file\fP option tells the KDC to write its PID into
+\fIpid_file\fP after it starts up. This can be used to identify whether
+the KDC is still running and to allow init scripts to stop the correct
+process.
+.sp
+The \fB\-p\fP \fIportnum\fP option specifies the default UDP port numbers
+which the KDC should listen on for Kerberos version 5 requests, as a
+comma\-separated list. This value overrides the UDP port numbers
+specified in the \fIkdcdefaults\fP section of \fIkdc.conf(5)\fP, but
+may be overridden by realm\-specific values. If no value is given from
+any source, the default port is 88.
+.sp
+The \fB\-w\fP \fInumworkers\fP option tells the KDC to fork \fInumworkers\fP
+processes to listen to the KDC ports and process requests in parallel.
+The top level KDC process (whose pid is recorded in the pid file if
+the \fB\-P\fP option is also given) acts as a supervisor. The supervisor
+will relay SIGHUP signals to the worker subprocesses, and will
+terminate the worker subprocess if the it is itself terminated or if
+any other worker process exits.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+On operating systems which do not have \fIpktinfo\fP support,
+using worker processes will prevent the KDC from listening
+for UDP packets on network interfaces created after the KDC
+starts.
+.UNINDENT
+.UNINDENT
+.sp
+The \fB\-x\fP \fIdb_args\fP option specifies database\-specific arguments.
+See \fIDatabase Options\fP in \fIkadmin(1)\fP for
+supported arguments.
+.sp
+The \fB\-T\fP \fIoffset\fP option specifies a time offset, in seconds, which
+the KDC will operate under. It is intended only for testing purposes.
+.SH EXAMPLE
+.sp
+The KDC may service requests for multiple realms (maximum 32 realms).
+The realms are listed on the command line. Per\-realm options that can
+be specified on the command line pertain for each realm that follows
+it and are superseded by subsequent definitions of the same option.
+.sp
+For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+krb5kdc \-p 2001 \-r REALM1 \-p 2002 \-r REALM2 \-r REALM3
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+specifies that the KDC listen on port 2001 for REALM1 and on port 2002
+for REALM2 and REALM3. Additionally, per\-realm parameters may be
+specified in the \fIkdc.conf(5)\fP file. The location of this file
+may be specified by the \fBKRB5_KDC_PROFILE\fP environment variable.
+Per\-realm parameters specified in this file take precedence over
+options specified on the command line. See the \fIkdc.conf(5)\fP
+description for further details.
+.SH ENVIRONMENT
+.sp
+krb5kdc uses the following environment variables:
+.INDENT 0.0
+.IP \(bu 2
+\fBKRB5_CONFIG\fP
+.IP \(bu 2
+\fBKRB5_KDC_PROFILE\fP
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkdb5_util(8)\fP, \fIkdc.conf(5)\fP, \fIkrb5.conf(5)\fP,
+\fIkdb5_ldap_util(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/ksu.man b/src/man/ksu.man
new file mode 100644
index 000000000000..2a0328e8435c
--- /dev/null
+++ b/src/man/ksu.man
@@ -0,0 +1,461 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KSU" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+ksu \- Kerberized super-user
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBksu\fP
+[ \fItarget_user\fP ]
+[ \fB\-n\fP \fItarget_principal_name\fP ]
+[ \fB\-c\fP \fIsource_cache_name\fP ]
+[ \fB\-k\fP ]
+[ \fB\-r\fP time ]
+[ \fB\-pf\fP ]
+[ \fB\-l\fP \fIlifetime\fP ]
+[ \fB\-z | Z\fP ]
+[ \fB\-q\fP ]
+[ \fB\-e\fP \fIcommand\fP [ args ... ] ] [ \fB\-a\fP [ args ... ] ]
+.SH REQUIREMENTS
+.sp
+Must have Kerberos version 5 installed to compile ksu. Must have a
+Kerberos version 5 server running to use ksu.
+.SH DESCRIPTION
+.sp
+ksu is a Kerberized version of the su program that has two missions:
+one is to securely change the real and effective user ID to that of
+the target user, and the other is to create a new security context.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+For the sake of clarity, all references to and attributes of
+the user invoking the program will start with "source"
+(e.g., "source user", "source cache", etc.).
+.sp
+Likewise, all references to and attributes of the target
+account will start with "target".
+.UNINDENT
+.UNINDENT
+.SH AUTHENTICATION
+.sp
+To fulfill the first mission, ksu operates in two phases:
+authentication and authorization. Resolving the target principal name
+is the first step in authentication. The user can either specify his
+principal name with the \fB\-n\fP option (e.g., \fB\-n jqpublic@USC.EDU\fP)
+or a default principal name will be assigned using a heuristic
+described in the OPTIONS section (see \fB\-n\fP option). The target user
+name must be the first argument to ksu; if not specified root is the
+default. If \fB\&.\fP is specified then the target user will be the
+source user (e.g., \fBksu .\fP). If the source user is root or the
+target user is the source user, no authentication or authorization
+takes place. Otherwise, ksu looks for an appropriate Kerberos ticket
+in the source cache.
+.sp
+The ticket can either be for the end\-server or a ticket granting
+ticket (TGT) for the target principal\(aqs realm. If the ticket for the
+end\-server is already in the cache, it\(aqs decrypted and verified. If
+it\(aqs not in the cache but the TGT is, the TGT is used to obtain the
+ticket for the end\-server. The end\-server ticket is then verified.
+If neither ticket is in the cache, but ksu is compiled with the
+\fBGET_TGT_VIA_PASSWD\fP define, the user will be prompted for a
+Kerberos password which will then be used to get a TGT. If the user
+is logged in remotely and does not have a secure channel, the password
+may be exposed. If neither ticket is in the cache and
+\fBGET_TGT_VIA_PASSWD\fP is not defined, authentication fails.
+.SH AUTHORIZATION
+.sp
+This section describes authorization of the source user when ksu is
+invoked without the \fB\-e\fP option. For a description of the \fB\-e\fP
+option, see the OPTIONS section.
+.sp
+Upon successful authentication, ksu checks whether the target
+principal is authorized to access the target account. In the target
+user\(aqs home directory, ksu attempts to access two authorization files:
+\fI\&.k5login(5)\fP and .k5users. In the .k5login file each line
+contains the name of a principal that is authorized to access the
+account.
+.sp
+For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+jqpublic@USC.EDU
+jqpublic/secure@USC.EDU
+jqpublic/admin@USC.EDU
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The format of .k5users is the same, except the principal name may be
+followed by a list of commands that the principal is authorized to
+execute (see the \fB\-e\fP option in the OPTIONS section for details).
+.sp
+Thus if the target principal name is found in the .k5login file the
+source user is authorized to access the target account. Otherwise ksu
+looks in the .k5users file. If the target principal name is found
+without any trailing commands or followed only by \fB*\fP then the
+source user is authorized. If either .k5login or .k5users exist but
+an appropriate entry for the target principal does not exist then
+access is denied. If neither file exists then the principal will be
+granted access to the account according to the aname\->lname mapping
+rules. Otherwise, authorization fails.
+.SH EXECUTION OF THE TARGET SHELL
+.sp
+Upon successful authentication and authorization, ksu proceeds in a
+similar fashion to su. The environment is unmodified with the
+exception of USER, HOME and SHELL variables. If the target user is
+not root, USER gets set to the target user name. Otherwise USER
+remains unchanged. Both HOME and SHELL are set to the target login\(aqs
+default values. In addition, the environment variable \fBKRB5CCNAME\fP
+gets set to the name of the target cache. The real and effective user
+ID are changed to that of the target user. The target user\(aqs shell is
+then invoked (the shell name is specified in the password file). Upon
+termination of the shell, ksu deletes the target cache (unless ksu is
+invoked with the \fB\-k\fP option). This is implemented by first doing a
+fork and then an exec, instead of just exec, as done by su.
+.SH CREATING A NEW SECURITY CONTEXT
+.sp
+ksu can be used to create a new security context for the target
+program (either the target shell, or command specified via the \fB\-e\fP
+option). The target program inherits a set of credentials from the
+source user. By default, this set includes all of the credentials in
+the source cache plus any additional credentials obtained during
+authentication. The source user is able to limit the credentials in
+this set by using \fB\-z\fP or \fB\-Z\fP option. \fB\-z\fP restricts the copy
+of tickets from the source cache to the target cache to only the
+tickets where client == the target principal name. The \fB\-Z\fP option
+provides the target user with a fresh target cache (no creds in the
+cache). Note that for security reasons, when the source user is root
+and target user is non\-root, \fB\-z\fP option is the default mode of
+operation.
+.sp
+While no authentication takes place if the source user is root or is
+the same as the target user, additional tickets can still be obtained
+for the target cache. If \fB\-n\fP is specified and no credentials can
+be copied to the target cache, the source user is prompted for a
+Kerberos password (unless \fB\-Z\fP specified or \fBGET_TGT_VIA_PASSWD\fP
+is undefined). If successful, a TGT is obtained from the Kerberos
+server and stored in the target cache. Otherwise, if a password is
+not provided (user hit return) ksu continues in a normal mode of
+operation (the target cache will not contain the desired TGT). If the
+wrong password is typed in, ksu fails.
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+During authentication, only the tickets that could be
+obtained without providing a password are cached in in the
+source cache.
+.UNINDENT
+.UNINDENT
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-n\fP \fItarget_principal_name\fP
+Specify a Kerberos target principal name. Used in authentication
+and authorization phases of ksu.
+.sp
+If ksu is invoked without \fB\-n\fP, a default principal name is
+assigned via the following heuristic:
+.INDENT 7.0
+.IP \(bu 2
+Case 1: source user is non\-root.
+.sp
+If the target user is the source user the default principal name
+is set to the default principal of the source cache. If the
+cache does not exist then the default principal name is set to
+\fBtarget_user@local_realm\fP\&. If the source and target users are
+different and neither \fB~target_user/.k5users\fP nor
+\fB~target_user/.k5login\fP exist then the default principal name
+is \fBtarget_user_login_name@local_realm\fP\&. Otherwise, starting
+with the first principal listed below, ksu checks if the
+principal is authorized to access the target account and whether
+there is a legitimate ticket for that principal in the source
+cache. If both conditions are met that principal becomes the
+default target principal, otherwise go to the next principal.
+.INDENT 2.0
+.IP a. 3
+default principal of the source cache
+.IP b. 3
+target_user@local_realm
+.IP c. 3
+source_user@local_realm
+.UNINDENT
+.sp
+If a\-c fails try any principal for which there is a ticket in
+the source cache and that is authorized to access the target
+account. If that fails select the first principal that is
+authorized to access the target account from the above list. If
+none are authorized and ksu is configured with
+\fBPRINC_LOOK_AHEAD\fP turned on, select the default principal as
+follows:
+.sp
+For each candidate in the above list, select an authorized
+principal that has the same realm name and first part of the
+principal name equal to the prefix of the candidate. For
+example if candidate a) is \fBjqpublic@ISI.EDU\fP and
+\fBjqpublic/secure@ISI.EDU\fP is authorized to access the target
+account then the default principal is set to
+\fBjqpublic/secure@ISI.EDU\fP\&.
+.IP \(bu 2
+Case 2: source user is root.
+.sp
+If the target user is non\-root then the default principal name
+is \fBtarget_user@local_realm\fP\&. Else, if the source cache
+exists the default principal name is set to the default
+principal of the source cache. If the source cache does not
+exist, default principal name is set to \fBroot\e@local_realm\fP\&.
+.UNINDENT
+.UNINDENT
+.sp
+\fB\-c\fP \fIsource_cache_name\fP
+.INDENT 0.0
+.INDENT 3.5
+Specify source cache name (e.g., \fB\-c FILE:/tmp/my_cache\fP). If
+\fB\-c\fP option is not used then the name is obtained from
+\fBKRB5CCNAME\fP environment variable. If \fBKRB5CCNAME\fP is not
+defined the source cache name is set to \fBkrb5cc_<source uid>\fP\&.
+The target cache name is automatically set to \fBkrb5cc_<target
+uid>.(gen_sym())\fP, where gen_sym generates a new number such that
+the resulting cache does not already exist. For example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+krb5cc_1984.2
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \fB\-k\fP
+Do not delete the target cache upon termination of the target
+shell or a command (\fB\-e\fP command). Without \fB\-k\fP, ksu deletes
+the target cache.
+.TP
+.B \fB\-z\fP
+Restrict the copy of tickets from the source cache to the target
+cache to only the tickets where client == the target principal
+name. Use the \fB\-n\fP option if you want the tickets for other then
+the default principal. Note that the \fB\-z\fP option is mutually
+exclusive with the \fB\-Z\fP option.
+.TP
+.B \fB\-Z\fP
+Don\(aqt copy any tickets from the source cache to the target cache.
+Just create a fresh target cache, where the default principal name
+of the cache is initialized to the target principal name. Note
+that the \fB\-Z\fP option is mutually exclusive with the \fB\-z\fP
+option.
+.TP
+.B \fB\-q\fP
+Suppress the printing of status messages.
+.UNINDENT
+.sp
+Ticket granting ticket options:
+.INDENT 0.0
+.TP
+.B \fB\-l\fP \fIlifetime\fP \fB\-r\fP \fItime\fP \fB\-pf\fP
+The ticket granting ticket options only apply to the case where
+there are no appropriate tickets in the cache to authenticate the
+source user. In this case if ksu is configured to prompt users
+for a Kerberos password (\fBGET_TGT_VIA_PASSWD\fP is defined), the
+ticket granting ticket options that are specified will be used
+when getting a ticket granting ticket from the Kerberos server.
+.TP
+.B \fB\-l\fP \fIlifetime\fP
+(\fIduration\fP string.) Specifies the lifetime to be requested
+for the ticket; if this option is not specified, the default ticket
+lifetime (12 hours) is used instead.
+.TP
+.B \fB\-r\fP \fItime\fP
+(\fIduration\fP string.) Specifies that the \fBrenewable\fP option
+should be requested for the ticket, and specifies the desired
+total lifetime of the ticket.
+.TP
+.B \fB\-p\fP
+specifies that the \fBproxiable\fP option should be requested for
+the ticket.
+.TP
+.B \fB\-f\fP
+option specifies that the \fBforwardable\fP option should be
+requested for the ticket.
+.TP
+.B \fB\-e\fP \fIcommand\fP [\fIargs\fP ...]
+ksu proceeds exactly the same as if it was invoked without the
+\fB\-e\fP option, except instead of executing the target shell, ksu
+executes the specified command. Example of usage:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ksu bob \-e ls \-lag
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The authorization algorithm for \fB\-e\fP is as follows:
+.sp
+If the source user is root or source user == target user, no
+authorization takes place and the command is executed. If source
+user id != 0, and \fB~target_user/.k5users\fP file does not exist,
+authorization fails. Otherwise, \fB~target_user/.k5users\fP file
+must have an appropriate entry for target principal to get
+authorized.
+.sp
+The .k5users file format:
+.sp
+A single principal entry on each line that may be followed by a
+list of commands that the principal is authorized to execute. A
+principal name followed by a \fB*\fP means that the user is
+authorized to execute any command. Thus, in the following
+example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+jqpublic@USC.EDU ls mail /local/kerberos/klist
+jqpublic/secure@USC.EDU *
+jqpublic/admin@USC.EDU
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBjqpublic@USC.EDU\fP is only authorized to execute \fBls\fP,
+\fBmail\fP and \fBklist\fP commands. \fBjqpublic/secure@USC.EDU\fP is
+authorized to execute any command. \fBjqpublic/admin@USC.EDU\fP is
+not authorized to execute any command. Note, that
+\fBjqpublic/admin@USC.EDU\fP is authorized to execute the target
+shell (regular ksu, without the \fB\-e\fP option) but
+\fBjqpublic@USC.EDU\fP is not.
+.sp
+The commands listed after the principal name must be either a full
+path names or just the program name. In the second case,
+\fBCMD_PATH\fP specifying the location of authorized programs must
+be defined at the compilation time of ksu. Which command gets
+executed?
+.sp
+If the source user is root or the target user is the source user
+or the user is authorized to execute any command (\fB*\fP entry)
+then command can be either a full or a relative path leading to
+the target program. Otherwise, the user must specify either a
+full path or just the program name.
+.TP
+.B \fB\-a\fP \fIargs\fP
+Specify arguments to be passed to the target shell. Note that all
+flags and parameters following \-a will be passed to the shell,
+thus all options intended for ksu must precede \fB\-a\fP\&.
+.sp
+The \fB\-a\fP option can be used to simulate the \fB\-e\fP option if
+used as follows:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+\-a \-c [command [arguments]].
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fB\-c\fP is interpreted by the c\-shell to execute the command.
+.UNINDENT
+.SH INSTALLATION INSTRUCTIONS
+.sp
+ksu can be compiled with the following four flags:
+.INDENT 0.0
+.TP
+.B \fBGET_TGT_VIA_PASSWD\fP
+In case no appropriate tickets are found in the source cache, the
+user will be prompted for a Kerberos password. The password is
+then used to get a ticket granting ticket from the Kerberos
+server. The danger of configuring ksu with this macro is if the
+source user is logged in remotely and does not have a secure
+channel, the password may get exposed.
+.TP
+.B \fBPRINC_LOOK_AHEAD\fP
+During the resolution of the default principal name,
+\fBPRINC_LOOK_AHEAD\fP enables ksu to find principal names in
+the .k5users file as described in the OPTIONS section
+(see \fB\-n\fP option).
+.TP
+.B \fBCMD_PATH\fP
+Specifies a list of directories containing programs that users are
+authorized to execute (via .k5users file).
+.TP
+.B \fBHAVE_GETUSERSHELL\fP
+If the source user is non\-root, ksu insists that the target user\(aqs
+shell to be invoked is a "legal shell". \fIgetusershell(3)\fP is
+called to obtain the names of "legal shells". Note that the
+target user\(aqs shell is obtained from the passwd file.
+.UNINDENT
+.sp
+Sample configuration:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+KSU_OPTS = \-DGET_TGT_VIA_PASSWD \-DPRINC_LOOK_AHEAD \-DCMD_PATH=\(aq"/bin /usr/ucb /local/bin"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+ksu should be owned by root and have the set user id bit turned on.
+.sp
+ksu attempts to get a ticket for the end server just as Kerberized
+telnet and rlogin. Thus, there must be an entry for the server in the
+Kerberos database (e.g., \fBhost/nii.isi.edu@ISI.EDU\fP). The keytab
+file must be in an appropriate location.
+.SH SIDE EFFECTS
+.sp
+ksu deletes all expired tickets from the source cache.
+.SH AUTHOR OF KSU
+.sp
+GENNADY (ARI) MEDVINSKY
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kswitch.man b/src/man/kswitch.man
new file mode 100644
index 000000000000..d8d925cbceac
--- /dev/null
+++ b/src/man/kswitch.man
@@ -0,0 +1,79 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KSWITCH" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kswitch \- switch primary ticket cache
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkswitch\fP
+{\fB\-c\fP \fIcachename\fP|\fB\-p\fP \fIprincipal\fP}
+.SH DESCRIPTION
+.sp
+kswitch makes the specified credential cache the primary cache for the
+collection, if a cache collection is available.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-c\fP \fIcachename\fP
+Directly specifies the credential cache to be made primary.
+.TP
+.B \fB\-p\fP \fIprincipal\fP
+Causes the cache collection to be searched for a cache containing
+credentials for \fIprincipal\fP\&. If one is found, that collection is
+made primary.
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+kswitch uses the following environment variables:
+.INDENT 0.0
+.TP
+.B \fBKRB5CCNAME\fP
+Location of the default Kerberos 5 credentials (ticket) cache, in
+the form \fItype\fP:\fIresidual\fP\&. If no \fItype\fP prefix is present, the
+\fBFILE\fP type is assumed. The type of the default cache may
+determine the availability of a cache collection; for instance, a
+default cache of type \fBDIR\fP causes caches within the directory
+to be present in the collection.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB@CCNAME@\fP
+Default location of Kerberos 5 credentials cache
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkinit(1)\fP, \fIkdestroy(1)\fP, \fIklist(1)\fP), kerberos(1)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/ktutil.man b/src/man/ktutil.man
new file mode 100644
index 000000000000..6a119e7550ad
--- /dev/null
+++ b/src/man/ktutil.man
@@ -0,0 +1,173 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KTUTIL" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+ktutil \- Kerberos keytab file maintenance utility
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBktutil\fP
+.SH DESCRIPTION
+.sp
+The ktutil command invokes a command interface from which an
+administrator can read, write, or edit entries in a keytab or Kerberos
+V4 srvtab file.
+.SH COMMANDS
+.SS list
+.INDENT 0.0
+.INDENT 3.5
+\fBlist\fP
+.UNINDENT
+.UNINDENT
+.sp
+Displays the current keylist.
+.sp
+Alias: \fBl\fP
+.SS read_kt
+.INDENT 0.0
+.INDENT 3.5
+\fBread_kt\fP \fIkeytab\fP
+.UNINDENT
+.UNINDENT
+.sp
+Read the Kerberos V5 keytab file \fIkeytab\fP into the current keylist.
+.sp
+Alias: \fBrkt\fP
+.SS read_st
+.INDENT 0.0
+.INDENT 3.5
+\fBread_st\fP \fIsrvtab\fP
+.UNINDENT
+.UNINDENT
+.sp
+Read the Kerberos V4 srvtab file \fIsrvtab\fP into the current keylist.
+.sp
+Alias: \fBrst\fP
+.SS write_kt
+.INDENT 0.0
+.INDENT 3.5
+\fBwrite_kt\fP \fIkeytab\fP
+.UNINDENT
+.UNINDENT
+.sp
+Write the current keylist into the Kerberos V5 keytab file \fIkeytab\fP\&.
+.sp
+Alias: \fBwkt\fP
+.SS write_st
+.INDENT 0.0
+.INDENT 3.5
+\fBwrite_st\fP \fIsrvtab\fP
+.UNINDENT
+.UNINDENT
+.sp
+Write the current keylist into the Kerberos V4 srvtab file \fIsrvtab\fP\&.
+.sp
+Alias: \fBwst\fP
+.SS clear_list
+.INDENT 0.0
+.INDENT 3.5
+\fBclear_list\fP
+.UNINDENT
+.UNINDENT
+.sp
+Clear the current keylist.
+.sp
+Alias: \fBclear\fP
+.SS delete_entry
+.INDENT 0.0
+.INDENT 3.5
+\fBdelete_entry\fP \fIslot\fP
+.UNINDENT
+.UNINDENT
+.sp
+Delete the entry in slot number \fIslot\fP from the current keylist.
+.sp
+Alias: \fBdelent\fP
+.SS add_entry
+.INDENT 0.0
+.INDENT 3.5
+\fBadd_entry\fP {\fB\-key\fP|\fB\-password\fP} \fB\-p\fP \fIprincipal\fP
+\fB\-k\fP \fIkvno\fP \fB\-e\fP \fIenctype\fP
+.UNINDENT
+.UNINDENT
+.sp
+Add \fIprincipal\fP to keylist using key or password.
+.sp
+Alias: \fBaddent\fP
+.SS list_requests
+.INDENT 0.0
+.INDENT 3.5
+\fBlist_requests\fP
+.UNINDENT
+.UNINDENT
+.sp
+Displays a listing of available commands.
+.sp
+Aliases: \fBlr\fP, \fB?\fP
+.SS quit
+.INDENT 0.0
+.INDENT 3.5
+\fBquit\fP
+.UNINDENT
+.UNINDENT
+.sp
+Quits ktutil.
+.sp
+Aliases: \fBexit\fP, \fBq\fP
+.SH EXAMPLE
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ktutil: add_entry \-password \-p alice@BLEEP.COM \-k 1 \-e
+ aes128\-cts\-hmac\-sha1\-96
+Password for alice@BLEEP.COM:
+ktutil: add_entry \-password \-p alice@BLEEP.COM \-k 1 \-e
+ aes256\-cts\-hmac\-sha1\-96
+Password for alice@BLEEP.COM:
+ktutil: write_kt keytab
+ktutil:
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkadmin(1)\fP, \fIkdb5_util(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/kvno.man b/src/man/kvno.man
new file mode 100644
index 000000000000..4d510ca51f21
--- /dev/null
+++ b/src/man/kvno.man
@@ -0,0 +1,109 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "KVNO" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+kvno \- print key version numbers of Kerberos principals
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBkvno\fP
+[\fB\-c\fP \fIccache\fP]
+[\fB\-e\fP \fIetype\fP]
+[\fB\-q\fP]
+[\fB\-h\fP]
+[\fB\-P\fP]
+[\fB\-S\fP \fIsname\fP]
+[\fB\-U\fP \fIfor_user\fP]
+\fIservice1 service2\fP ...
+.SH DESCRIPTION
+.sp
+kvno acquires a service ticket for the specified Kerberos principals
+and prints out the key version numbers of each.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-c\fP \fIccache\fP
+Specifies the name of a credentials cache to use (if not the
+default)
+.TP
+.B \fB\-e\fP \fIetype\fP
+Specifies the enctype which will be requested for the session key
+of all the services named on the command line. This is useful in
+certain backward compatibility situations.
+.TP
+.B \fB\-q\fP
+Suppress printing output when successful. If a service ticket
+cannot be obtained, an error message will still be printed and
+kvno will exit with nonzero status.
+.TP
+.B \fB\-h\fP
+Prints a usage statement and exits.
+.TP
+.B \fB\-P\fP
+Specifies that the \fIservice1 service2\fP ... arguments are to be
+treated as services for which credentials should be acquired using
+constrained delegation. This option is only valid when used in
+conjunction with protocol transition.
+.TP
+.B \fB\-S\fP \fIsname\fP
+Specifies that the \fIservice1 service2\fP ... arguments are
+interpreted as hostnames, and the service principals are to be
+constructed from those hostnames and the service name \fIsname\fP\&.
+The service hostnames will be canonicalized according to the usual
+rules for constructing service principals.
+.TP
+.B \fB\-U\fP \fIfor_user\fP
+Specifies that protocol transition (S4U2Self) is to be used to
+acquire a ticket on behalf of \fIfor_user\fP\&. If constrained
+delegation is not requested, the service name must match the
+credentials cache client principal.
+.UNINDENT
+.SH ENVIRONMENT
+.sp
+kvno uses the following environment variable:
+.INDENT 0.0
+.TP
+.B \fBKRB5CCNAME\fP
+Location of the credentials (ticket) cache.
+.UNINDENT
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB@CCNAME@\fP
+Default location of the credentials cache
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIkinit(1)\fP, \fIkdestroy(1)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/sclient.man b/src/man/sclient.man
new file mode 100644
index 000000000000..1d5c4c5e7048
--- /dev/null
+++ b/src/man/sclient.man
@@ -0,0 +1,50 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "SCLIENT" "1" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+sclient \- sample Kerberos version 5 client
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBsclient\fP \fIremotehost\fP
+.SH DESCRIPTION
+.sp
+sclient is a sample application, primarily useful for testing
+purposes. It contacts a sample server \fIsserver(8)\fP and
+authenticates to it using Kerberos version 5 tickets, then displays
+the server\(aqs response.
+.SH SEE ALSO
+.sp
+\fIkinit(1)\fP, \fIsserver(8)\fP
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.
diff --git a/src/man/sserver.man b/src/man/sserver.man
new file mode 100644
index 000000000000..514128018c36
--- /dev/null
+++ b/src/man/sserver.man
@@ -0,0 +1,194 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "SSERVER" "8" " " "1.15.1" "MIT Kerberos"
+.SH NAME
+sserver \- sample Kerberos version 5 server
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBsserver\fP
+[ \fB\-p\fP \fIport\fP ]
+[ \fB\-S\fP \fIkeytab\fP ]
+[ \fIserver_port\fP ]
+.SH DESCRIPTION
+.sp
+sserver and \fIsclient(1)\fP are a simple demonstration client/server
+application. When sclient connects to sserver, it performs a Kerberos
+authentication, and then sserver returns to sclient the Kerberos
+principal which was used for the Kerberos authentication. It makes a
+good test that Kerberos has been successfully installed on a machine.
+.sp
+The service name used by sserver and sclient is sample. Hence,
+sserver will require that there be a keytab entry for the service
+\fBsample/hostname.domain.name@REALM.NAME\fP\&. This keytab is generated
+using the \fIkadmin(1)\fP program. The keytab file is usually
+installed as \fB@KTNAME@\fP\&.
+.sp
+The \fB\-S\fP option allows for a different keytab than the default.
+.sp
+sserver is normally invoked out of inetd(8), using a line in
+\fB/etc/inetd.conf\fP that looks like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+sample stream tcp nowait root /usr/local/sbin/sserver sserver
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Since \fBsample\fP is normally not a port defined in \fB/etc/services\fP,
+you will usually have to add a line to \fB/etc/services\fP which looks
+like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+sample 13135/tcp
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+When using sclient, you will first have to have an entry in the
+Kerberos database, by using \fIkadmin(1)\fP, and then you have to get
+Kerberos tickets, by using \fIkinit(1)\fP\&. Also, if you are running
+the sclient program on a different host than the sserver it will be
+connecting to, be sure that both hosts have an entry in /etc/services
+for the sample tcp port, and that the same port number is in both
+files.
+.sp
+When you run sclient you should see something like this:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+sendauth succeeded, reply is:
+reply len 32, contents:
+You are nlgilman@JIMI.MIT.EDU
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH COMMON ERROR MESSAGES
+.INDENT 0.0
+.IP 1. 3
+kinit returns the error:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+kinit: Client not found in Kerberos database while getting
+ initial credentials
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This means that you didn\(aqt create an entry for your username in the
+Kerberos database.
+.IP 2. 3
+sclient returns the error:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+unknown service sample/tcp; check /etc/services
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This means that you don\(aqt have an entry in /etc/services for the
+sample tcp port.
+.IP 3. 3
+sclient returns the error:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+connect: Connection refused
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This probably means you didn\(aqt edit /etc/inetd.conf correctly, or
+you didn\(aqt restart inetd after editing inetd.conf.
+.IP 4. 3
+sclient returns the error:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+sclient: Server not found in Kerberos database while using
+ sendauth
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This means that the \fBsample/hostname@LOCAL.REALM\fP service was not
+defined in the Kerberos database; it should be created using
+\fIkadmin(1)\fP, and a keytab file needs to be generated to make
+the key for that service principal available for sclient.
+.IP 5. 3
+sclient returns the error:
+.INDENT 3.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+sendauth rejected, error reply is:
+ "No such file or directory"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This probably means sserver couldn\(aqt find the keytab file. It was
+probably not installed in the proper directory.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fIsclient(1)\fP, services(5), inetd(8)
+.SH AUTHOR
+MIT
+.SH COPYRIGHT
+1985-2017, MIT
+.\" Generated by docutils manpage writer.
+.