Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
K5START(1)			     kstart			      K5START(1)

NAME
     k5start - Obtain and optionally keep active a Kerberos ticket

SYNOPSIS
     k5start [-abFhLnPqstvx] [-c child pid file] [-f keytab]
	 [-g group] [-H minutes] [-I service instance]
	 [-i client instance] [-K minutes] [-k ticket cache]
	 [-l time string] [-m mode] [-o owner]
	 [-p pid file] [-r service realm] [-S service name]
	 [-u client principal] [principal [command ...]]

     k5start -U -f keytab [-abFhLnPqstvx] [-c child pid file]
	 [-g group] [-H minutes] [-I service instance]
	 [-K minutes] [-k ticket cache] [-l time string]
	 [-m mode] [-o owner] [-p pid file]
	 [-r service realm] [-S service name] [command ...]

DESCRIPTION
     k5start obtains and caches an initial Kerberos ticket-granting ticket for a
     principal.   k5start can be used as an alternative to kinit, but it is pri-
     marily intended to be used by programs that want to use a keytab to  obtain
     Kerberos  credentials,  such  as a web server that needs to authenticate to
     another service such as an LDAP server.

     Normally, the principal for which to give tickets should  be  specified  as
     the first argument.  principal may be either just a principal name (includ-
     ing  the  optional  instance) or a full principal and realm string.  The -u
     and -i options can be used as an alternative mechanism for  specifying  the
     principal, but generally aren't as convenient.  If no principal is given as
     either  the  first  argument  or  the argument to the -u option, the client
     principal defaults to the Unix username of the user running k5start in  the
     default local realm.

     Optionally,  a command may be given on the command line of k5start.  If so,
     that command is run after Kerberos authentication (and running aklog if de-
     sired), with the appropriate environment variables set to point it  to  the
     right ticket cache.  k5start will then continue running, waking up periodi-
     cally  to	refresh credentials slightly before they would expire, until the
     command completes.  (The frequency with which it wakes up to  refresh  cre-
     dentials can still be controlled with the -K option.)  To run in this mode,
     the  principal  must either be specified as a regular command-line argument
     or via the -U option; the -u and -i options  may  not  be	used.	Also,  a
     keytab must be specified with -f to run a specific command.

     The  command  will  not be run using the shell, so if you want to use shell
     metacharacters in the command with their special meaning, give "sh -c  com-
     mand" as the command to run and quote command.

     If  the  command  contains  command-line options (like "-c"), put -- on the
     command line before the beginning of the command to  tell	k5start  to  not
     parse those options as its own.

     When running a command, k5start propagates HUP, TERM, INT, and QUIT signals
     to  the  child  process  and does not exit when those signals are received.
     (If the propagated signal causes the child process to  exit,  k5start  will
     then exit.)  This allows k5start to react properly when run under a command
     supervision  system such as runit(8) or svscan(8) that uses signals to con-
     trol supervised commands, and to run interactive commands that  should  re-
     ceive Ctrl-C.

     If  a running k5start receives an ALRM signal, it immediately refreshes the
     ticket cache regardless of whether it is in danger of expiring.

     If k5start is run with a command or the -K flag and  the  -x  flag  is  not
     given,  it  will  keep trying even if the initial authentication fails.  It
     will retry the initial authentication immediately and then with exponential
     backoff to once per minute, and keep trying until	authentication	succeeds
     or  it is killed.	The command, if any, will not be started until authenti-
     cation succeeds.

OPTIONS
     -a  When run with either the -K flag or a	command,  always  renew  tickets
	 each time k5start wakes up.  Without this option, k5start will only try
	 to  renew a ticket as often as necessary to prevent the ticket from ex-
	 piring.  With this option, k5start will renew tickets according to  the
	 interval specified with the -K flag.

	 This  behavior  probably  should  have been the default behavior of -K.
	 The default was not changed to avoid changes for  existing  users,  but
	 for new applications, consider always using -a with -K.

	 This  option is important if another program is manipulating the ticket
	 cache that k5start is using.  For example, if another program is  auto-
	 matically  renewing a ticket more frequently than k5start, then k5start
	 will never see a ticket that is close to expiring and	will  therefore,
	 by  default,  never  try  to renew the ticket.  This means that k5start
	 will also never renew AFS tokens, even if  the  -t  option  was  given,
	 since	k5start  only  renews  AFS tokens after it successfully renews a
	 ticket.  If this option is specified in such a situation, k5start  will
	 renew its ticket every time it checks the ticket, so AFS tokens will be
	 renewed.

	 This  argument is only valid in combination with either -K or a command
	 to run.

     -b  After starting, detach from the controlling terminal  and  run  in  the
	 background.   This  option only makes sense in combination with -K or a
	 command that k5start will be running and can only be used if  a  keytab
	 is  specified	with -f.  k5start will not background itself until after
	 it has tried authenticating once, so that any initial	errors	will  be
	 reported,  but  it will then redirect output to /dev/null and no subse-
	 quent errors will be reported.

	 If this flag is given, k5start will also  change  directories	to  "/".
	 All  paths (such as to a command to run or a PID file) should therefore
	 be given as absolute, not relative, paths.

	 If used in conjunction with a command to run, that  command  will  also
	 run  in  the  background  and will also have its input and output redi-
	 rected to /dev/null.  It will have to report any errors via some  other
	 mechanism for the errors to be seen.

	 Note that on Mac OS X, the default ticket cache type is per-session and
	 using	the  -b  flag will disassociate k5start from the existing ticket
	 cache.  When using -b in conjunction with -K on Mac OS X, you	probably
	 also  want  to use the -k flag to specify a ticket cache file and force
	 the use of a file cache.

	 When using this option, consider also using -L to report k5start errors
	 to syslog.

     -c child pid file
	 Save the process ID (PID) of the child process  into  child  pid  file.
	 child	pid  file  is  created if it doesn't exist and overwritten if it
	 does exist.  This option is only allowed when a command  was  given  on
	 the  command  line  and  is most useful in conjunction with -b to allow
	 management of the running child process.

	 Note that, when used with -b, the PID file is written out after k5start
	 is backgrounded and changes its working directory  to	/,  so	relative
	 paths	for  the  PID  file will be relative to / (probably not what you
	 want).

     -F  Do not get forwardable tickets even if the local configuration says  to
	 get  forwardable  tickets  by default.  Without this flag, k5start does
	 whatever the library default is.

     -f keytab
	 Authenticate using the keytab keytab rather than asking for a password.
	 A key for the client principal must be present in keytab.

     -g group
	 After creating the ticket cache, change its group ownership  to  group,
	 which	may be either the name of a group or a numeric group ID.  Ticket
	 caches are created with 0600 permissions by default, so this will  have
	 no useful effect unless used with -m.

     -H minutes
	 Check	for a happy ticket, defined as one that has a remaining lifetime
	 of at least minutes minutes.  If such a ticket is found, do not attempt
	 authentication.  Instead, just run the command (if one  was  specified)
	 or exit immediately with status 0 (if none was).  Otherwise, try to ob-
	 tain a new ticket and then run the command, if any.

	 If  -H is used with -t, the external program will always be run even if
	 a ticket with a sufficient remaining lifetime was found.

	 If -H is used with -K, k5start will not exit immediately.  Instead, the
	 specified remaining lifetime will replace the default value of two min-
	 utes, meaning that k5start will ensure, each time it wakes up, that the
	 ticket has a remaining lifetime of the minutes argument.   This  is  an
	 alternative  to -a to ensure that tickets always have a certain minimal
	 amount of lifetime remaining.

     -h  Display a usage message and exit.

     -I service instance
	 The instance portion of the service principal.  The default is the  de-
	 fault	realm  of the machine.	Note that unlike the client principal, a
	 non-default service principal must be specified with  -I  and	-S;  one
	 cannot provide the instance portion as part of the argument to -S.

     -i client instance
	 Specifies  the  instance portion of the principal.  This option doesn't
	 make sense except in combination with -u.  Note that the  instance  can
	 be  specified	as part of username through the normal convention of ap-
	 pending a slash and then the instance, so one never has to use this op-
	 tion.

     -K minutes
	 Run in daemon mode to keep a ticket alive  indefinitely.   The  program
	 reawakens  after  minutes minutes, checks if the ticket will expire be-
	 fore or less than two minutes after the next scheduled check, and  gets
	 a  new  ticket  if needed.  (In other words, it ensures that the ticket
	 will always have a remaining lifetime of at least two minutes.)  If the
	 -H flag is also given, the lifetime specified by it  replaces	the  two
	 minute default.

	 If  this  option  is  not  given but a command was given on the command
	 line, the default interval is 60 minutes (1 hour).

	 If an error occurs in refreshing the ticket cache, the wake-up interval
	 will be shortened to one minute and the operation retried at  that  in-
	 terval for as long as the error persists.

     -k ticket cache
	 Use  ticket  cache  as the ticket cache rather than the contents of the
	 environment variable KRB5CCNAME or the library default.   ticket  cache
	 may  be  any  ticket cache identifier recognized by the underlying Ker-
	 beros libraries.  This generally supports a path to  a  file,	with  or
	 without  a  leading  "FILE:"  string, but may also support other ticket
	 cache types.

	 If any of -o, -g, or -m are given, ticket cache must be either a simple
	 path to a file or start with "FILE:" or "WRFILE:".

     -L  Report messages to syslog as well as to standard output or standard er-
	 ror.  All messages will be logged with  facility  LOG_DAEMON.	 Regular
	 messages  that  are  displayed on standard output are logged with level
	 LOG_NOTICE.  Errors that don't cause k5start to  terminate  are  logged
	 with level LOG_WARNING.  Fatal errors are logged with level LOG_ERR.

	 This is useful when debugging problems in combination with -b.

     -l time string
	 Set  the ticket lifetime.  time string should be in a format recognized
	 by the Kerberos libraries for specifying  times,  such  as  "10h"  (ten
	 hours) or "10m" (ten minutes).  Known units are "s", "m", "h", and "d".
	 For more information, see kinit(1).

     -m mode
	 After	creating  the ticket cache, change its file permissions to mode,
	 which must be a file mode in octal (640 or 444, for example).

	 Setting a mode that does not allow k5start to	read  or  write  to  the
	 ticket  cache will cause k5start to fail and exit when using the -K op-
	 tion or running a command.

     -n  Ignored,  present  for  option  compatibility	with  the   now-obsolete
	 k4start.

     -o owner
	 After	creating  the ticket cache, change its ownership to owner, which
	 may be either the name of a user or a numeric user ID.  If owner is the
	 name of a user and -g was not also given, also change the group  owner-
	 ship of the ticket cache to the default group for that user.

     -P  Do  not  get  proxiable tickets even if the local configuration says to
	 get proxiable tickets by default.   Without  this  flag,  k5start  does
	 whatever the library default is.

     -p pid file
	 Save the process ID (PID) of the running k5start process into pid file.
	 pid  file is created if it doesn't exist and overwritten if it does ex-
	 ist.  This option is most useful in conjunction with -b to  allow  man-
	 agement of the running k5start daemon.

	 Note  that, when used with -b the PID file is written out after k5start
	 is backgrounded and changes its working directory  to	/,  so	relative
	 paths	for  the  PID  file will be relative to / (probably not what you
	 want).

     -q  Quiet.  Suppresses the printing of the initial  banner  message  saying
	 what  Kerberos  principal tickets are being obtained for, and also sup-
	 presses the password prompt when the -s option is given.

     -r service realm
	 The realm for the service principal.  This defaults to the default  lo-
	 cal realm.

     -S service name
	 Specifies  the principal for which k5start is getting a service ticket.
	 The default value is "krbtgt",  to  obtain  a	ticket-granting  ticket.
	 This  option  (along with -I) may be used if one only needs access to a
	 single service.  Note that unlike the client principal,  a  non-default
	 service  principal  must  be  specified with both -S and -I; one cannot
	 provide the instance portion as part of the argument to -S.

     -s  Read the password from standard input.  This bypasses the normal  pass-
	 word  prompt,	which means echo isn't suppressed and input isn't forced
	 to be from the controlling terminal.  Most uses of this  option  are  a
	 security risk.  You normally want to use a keytab and the -f option in-
	 stead.

     -t  Run  an  external  program after getting a ticket.  The intended use of
	 this is to run aklog to get a token.  If the environment variable AKLOG
	 (or KINIT_PROG for backward compatibility) is	set,  it  overrides  the
	 compiled-in default.

	 If  a	command  was  given on the command line, k5start will attempt to
	 isolate the AFS credentials for that command from the invoking process.
	 There are two possible ways in which this is done.

	 First, if k5start has been built with AFS setpag() support and  AFS  is
	 available,  k5start  will  create a new PAG before running the external
	 program.

	 Otherwise, if either k5start was not built with AFS setpag() support or
	 AFS is not available, but  the  Linux	kafs  module  is  available  and
	 k5start  was  built with libkeyutils support, it will create a new ses-
	 sion keyring and link it to the current user keyring before running the
	 external program.

	 If neither of these conditions are true, k5start will run the	external
	 program  without  doing any credential isolation, which may also affect
	 the credentials of the invoking process.

     -U  Rather than requiring the authentication principal be given on the com-
	 mand line, read it from the keytab specified with  -f.   The  principal
	 will be taken from the first entry in the keytab.  -f must be specified
	 if this option is used.

	 When  -U is given, k5start will not expect a principal name to be given
	 on the command line, and any arguments after the options will be  taken
	 as a command to run.

     -u client principal
	 This  specifies  the  principal  to  obtain credentials as.  The entire
	 principal may be specified here, or alternatively just the  first  por-
	 tion  may  be	specified with this flag and the instance specified with
	 -i.

	 Note that there's normally no reason to use this flag rather than  sim-
	 ply giving the principal on the command line as the first regular argu-
	 ment.

     -v  Be  verbose.  This will print out a bit of additional information about
	 what is being attempted and what the results are.

     -x  Exit immediately on any error.  Normally, when  running  a  command  or
	 when  run with the -K option, k5start keeps running even if it fails to
	 refresh the ticket cache and will try again at the next check interval.
	 With this option, k5start will instead exit.

EXIT STATUS
     The program exits with status 0 if it successfully gets a ticket or  has  a
     happy ticket (see -H).  If k5start runs aklog or some other program k5start
     returns  the exit status of that program if it exits normally.  If the pro-
     gram exits abnormally due to a signal, k5start will exit with a  status  of
     128 plus the signal number.  (This matches the behavior of bash.)

EXAMPLE
     Use  the /etc/krb5.keytab keytab to obtain a ticket granting ticket for the
     principal host/example.com, putting the ticket cache  in  /tmp/service.tkt.
     The lifetime is 10 hours and the program wakes up every 10 minutes to check
     if the ticket is about to expire.

	 k5start -k /tmp/service.tkt -f /etc/krb5.keytab -K 10 -l 10h \
	     host/example.com

     Do  the  same,  but  using  the  default  ticket  cache and run the command
     /usr/local/bin/auth-backup.  k5start will continue running until  the  com-
     mand finishes.  If the initial authentication fails, keep trying, and don't
     start  the  command  until  it  succeeds.	This could be used during system
     startup for a command that must have valid  tickets  before  starting,  and
     tolerates having k5start start before the network is completely set up.

	 k5start -f /etc/krb5.keytab -K 10 -l 10h host/example.com \
	     /usr/local/bin/auth-backup

     Shows the permissions of the temporary cache file created by k5start:

	 k5start -f /etc/krb5.keytab host/example.com \
	     -- sh -c 'ls -l $KRB5CCNAME'

     Notice the "--" before the command to keep k5start from parsing the "-c" as
     its own option.

     Do the same thing, but determine the principal from the keytab:

	 k5start -f /etc/krb5.keytab -U -- sh -c 'ls -l $KRB5CCNAME'

     Note that no principal is given before the command.

     Starts  k5start  as  a daemon using the Debian start-stop-daemon management
     program.  This is the sort of line that one could put into  a  Debian  init
     script:

	 start-stop-daemon --start --pidfile /var/run/k5start.pid \
	     --exec /usr/local/bin/k5start -- -b -p /var/run/k5start.pid \
	     -f /etc/krb5.keytab host/example.com

     This uses /var/run/k5start.pid as the PID file and obtains host/example.com
     tickets from the system keytab file.  k5start would then be stopped with:

	 start-stop-daemon --stop --pidfile /var/run/k5start.pid
	 rm -f /var/run/k5start.pid

     This  code  could	be  added  to an init script for Apache, for example, to
     start a k5start process alongside Apache to  manage  its  Kerberos  creden-
     tials.

ENVIRONMENT
     If  the  environment  variable  AKLOG is set, its value will be used as the
     program to run with -t rather than the default complied into  k5start.   If
     AKLOG  is	not  set  and KINIT_PROG is set, its value will be used instead.
     KINIT_PROG is honored for backward compatibility but its use is not  recom-
     mended due to its confusing name.

     If  no  ticket  file (with -k) or command is specified on the command line,
     k5start will use the environment variable KRB5CCNAME to determine the loca-
     tion of the the ticket granting ticket.  If either a command  is  specified
     or  the  -k  option  is used, KRB5CCNAME will be set to point to the ticket
     file before running the aklog program or any command given on  the  command
     line.

FILES
     The  default  ticket  cache  is  determined  by the underlying Kerberos li-
     braries.  The default path for aklog is determined at build time, and  will
     normally be whichever of aklog or afslog is found in the user's path.

     If  a command is specified and -k was not given, k5start will create a tem-
     porary ticket cache file of the form "/tmp/krb5cc_%d_%s" where  %d  is  the
     UID k5start is running as and %s is a random string.

AUTHORS
     k5start  was  based  on  the k4start code written by Robert Morgan.  It was
     ported to Kerberos v5 by Booker C. Bense.	Additional cleanup  and  current
     maintenance are done by Russ Allbery <eagle@eyrie.org>.

     Implementations  of  -b and -p and the example for a Debian init script are
     based on code contributed by Navid Golpayegani.

COPYRIGHT AND LICENSE
     Copyright 2015, 2021 Russ Allbery <eagle@eyrie.org>

     Copyright 2002, 2004-2012, 2014 The Board of Trustees of the  Leland  Stan-
     ford Junior University

     Copying  and  distribution  of this file, with or without modification, are
     permitted in any medium without royalty provided the copyright  notice  and
     this  notice  are	preserved.  This file is offered as-is, without any war-
     ranty.

     SPDX-License-Identifier: FSFAP

SEE ALSO
     kinit(1), krenew(1)

     This program is part of kstart.  The current version is available from  its
     web site at <https://www.eyrie.org/~eagle/software/kstart/>.

4.3				   2021-08-31			      K5START(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=k5start&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help