.\" Copyright (c) 1997-2004 Kungliga Tekniska Högskolan .\" (Royal Institute of Technology, Stockholm, Sweden). .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" 3. Neither the name of the Institute nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $Id$ .\" .Dd April 14, 2005 .Dt KTUTIL 1 .Os HEIMDAL .Sh NAME .Nm ktutil .Nd manage Kerberos keytabs .Sh SYNOPSIS .Nm .Oo Fl k Ar keytab \*(Ba Xo .Fl Fl keytab= Ns Ar keytab .Xc .Oc .Op Fl v | Fl Fl verbose .Op Fl Fl version .Op Fl h | Fl Fl help .Ar command .Op Ar args .Sh DESCRIPTION .Nm is a program for managing keytabs. Supported options: .Bl -tag -width Ds .It Fl v , Fl Fl verbose Verbose output. .El .Pp .Ar command can be one of the following: .Bl -tag -width srvconvert .It Nm add Oo Fl p Ar principal Oc Oo Fl Fl principal= Ns Ar principal Oc \ Oo Fl V Ar kvno Oc Oo Fl Fl kvno= Ns Ar kvno Oc Oo Fl e Ar enctype Oc \ Oo Fl Fl keepold | Fl Fl keepallold | Fl Fl pruneall Oc \ Oo Fl Fl enctype= Ns Ar enctype Oc Oo Fl w Ar password Oc \ Oo Fl Fl password= Ns Ar password Oc Oo Fl r Oc Oo Fl Fl random Oc \ Oo Fl s Oc Oo Fl Fl no-salt Oc Oo Fl H Oc Op Fl Fl hex Adds a key to the keytab. Options that are not specified will be prompted for. This requires that you know the password or the hex key of the principal to add; if what you really want is to add a new principal to the keytab, you should consider the .Ar get command, which talks to the kadmin server. .It Nm change Oo Fl r Ar realm Oc Oo Fl Fl realm= Ns Ar realm Oc \ Oo Fl Fl keepold | Fl Fl keepallold | Fl Fl pruneall Oc \ Oo Fl Fl enctype= Ns Ar enctype Oc \ Oo Fl Fl a Ar host Oc Oo Fl Fl admin-server= Ns Ar host Oc \ Oo Fl Fl s Ar port Oc Op Fl Fl server-port= Ns Ar port Update one or several keys to new versions. By default, use the admin server for the realm of a keytab entry. Otherwise it will use the values specified by the options. .Pp If no principals are given, all the ones in the keytab are updated. .It Nm copy Oo Fl Fl copy-duplicates Oc Ar keytab-src Ar keytab-dest Copies all the entries from .Ar keytab-src to .Ar keytab-dest . Because entries already in .Ar keytab-dest are kept, this command functions to merge keytabs. Entries for the same principal, key version number, and encryption type in the .Ar keytab-src that are also in the .Ar keytab-dest will not be copied to the .Ar keytab-dest unless the .Fl Fl copy-duplicates option is given. .It Nm get Oo Fl p Ar admin principal Oc \ Oo Fl Fl principal= Ns Ar admin principal Oc Oo Fl e Ar enctype Oc \ Oo Fl Fl no-create Oc \ Oo Fl Fl no-change-keys Oc \ Oo Fl Fl keepold | Fl Fl keepallold | Fl Fl pruneall Oc \ Oo Fl Fl enctypes= Ns Ar enctype Oc Oo Fl r Ar realm Oc \ Oo Fl Fl realm= Ns Ar realm Oc Oo Fl a Ar admin server Oc \ Oo Fl Fl admin-server= Ns Ar admin server Oc Oo Fl s Ar server port Oc \ Oo Fl Fl server-port= Ns Ar server port Oc Ar principal ... .Pp For each .Ar principal , get a the principal's keys from the KDC via the kadmin protocol, creating the principal if it doesn't exist (unless .Fl Fl no-create is given), and changing its keys to new random keys (unless .Fl Fl no-change-keys is given). .Pp If no .Ar realm is specified, the realm to operate on is taken from the first principal. .It Nm import Oo JSON-FILE Oc Read an array of keytab entries in a JSON file and copy them to the keytab. Use the .Nm list command with its .Fl Fl json option and .Fl Fl keys option to export a keytab. .It Nm list Oo Fl Fl keys Oc Op Fl Fl timestamp Oo Op Fl Fl json Oc List the keys stored in the keytab. Use the .Fl Fl json and .Fl Fl keys options to export a keytab as JSON for importing with the .Nm import command. .It Nm remove Oo Fl p Ar principal Oc Oo Fl Fl principal= Ns Ar principal Oc \ Oo Fl V kvno Oc Oo Fl Fl kvno= Ns Ar kvno Oc Oo Fl e enctype Oc \ Oo Fl Fl enctype= Ns Ar enctype Oc Removes the specified key or keys. Not specifying a .Ar kvno removes keys with any version number. Not specifying an .Ar enctype removes keys of any type. .It Nm merge Oo Fl Fl copy-duplicates Oc Ar keytab-src Ar keytab-dest An alias for the .Nm copy command. .It Nm rename Ar from-principal Ar to-principal Renames all entries for the .Ar from-principal in the keytab .Ar from-principal to .Ar to-principal . .It Nm purge Op Fl Fl age= Ns Ar age Removes all old versions of a key for which there is a newer version that is at least .Ar age (default one week) old. Note that this does not update the KDC database. The .Xr kadmin 1 command has a .Nm prune command that can do this on the KDC side. .El .Sh ENVIRONMENT .Bl -tag -width Ds .It Ev KRB5_KTNAME Specifies the default keytab. .It Ev KRB5_CONFIG The file name of .Pa krb5.conf , the default being .Pa /etc/krb5.conf . .El .Sh KEYTAB NAMING The syntax for the value of the .Ql KRB5_KTNAME environment variable and .Oo Fl k Ar keytab \*(Ba Xo .Fl Fl keytab= Ns Ar keytab .Xc .Oc options is .Ql TYPE:name where the TYPE is one of .Ql FILE , .Ql HDBGET , .Ql HDB , or .Ql ANY , and the name syntax is specific to the keytab type. .Pp For the FILE keytab type the name is the path to a file whose format is the well-known keytab file format used by MIT Kerberos, Heimdal, Java, and others. .Pp For the HDB and HDBGET keytab types the name syntax is .Ql [][:mkey=] where the first path is the path to the HDB and the second path is the path to the master key file. Note that to use the HDB and HDBGET keytab types in a program linked with Heimdal libraries one first load the .Ql libhdb library and then register their keytab methods using .Xr krb5_kt_register 3 . Note also that .Nm ktutil does not load and register the HDB and HDBGET keytab types at this time. .Pp The ANY keytab type name syntax is a sequence of other keytab names (including their TYPE: prefix) separated by commas. Note that there is no escape sequence for commas in keytab names. .Sh SEE ALSO .Xr kadmin 1 .Xr kinit 1 .Xr krb5_kt_register 3