home | help
LOGIN.CONF(5)		       File Formats Manual		   LOGIN.CONF(5)

NAME
     login.conf -- login class capability database

SYNOPSIS
     /etc/login.conf, ~/.login_conf

DESCRIPTION
     login.conf  contains  various attributes and capabilities of login classes.
     A login class (an optional annotation against each record in the  user  ac-
     count database, /etc/master.passwd) determines session accounting, resource
     limits  and  user	environment settings.  It is used by various programs in
     the system to set up a user's login environment and to enforce policy,  ac-
     counting  and  administrative  restrictions.  It also provides the means by
     which users are able to be authenticated to the system and the types of au-
     thentication available.  Attributes in addition to the ones described  here
     are available with third-party packages.

     A	special  record  "default"  in the system user class capability database
     /etc/login.conf is used automatically for any non-root user without a valid
     login class in /etc/master.passwd.  A user with a uid of 0 without a  valid
     login class will use the record "root" if it exists, or "default" if not.

     Users  may  individually create a file called .login_conf in their home di-
     rectory using the same format, consisting of a single entry with  a  record
     id  of "me".  If present, this file is used by login(1) to set user-defined
     environment settings which override those specified in the system login ca-
     pabilities database.  Only a subset of login capabilities may  be	overrid-
     den,  typically  those which do not involve authentication, resource limits
     and accounting.

     Records in a class capabilities database consist of a number of colon-sepa-
     rated fields.  The first entry for each record gives one or more names that
     a record is to be known by, each separated by a '|' character.   The  first
     name is the most common abbreviation.  The last name given should be a long
     name  that  is more descriptive of the capability entry, and all others are
     synonyms.	All names but the last should be in lower case	and  contain  no
     blanks;  the  last  name  may  contain upper case characters and blanks for
     readability.

     Note that since a colon (`:') is used to  separate  capability  entries,  a
     `\c'  escape sequence must be used to embed a literal colon in the value or
     name of a capability.

     The default /etc/login.conf shipped with FreeBSD is an out of the box  con-
     figuration.   Whenever  changes  to this, or the user's ~/.login_conf, file
     are made, the modifications will not be picked up until cap_mkdb(1) is used
     to compile the file into a database.  This database file will  have  a  .db
     extension and is accessed through cgetent(3).  See getcap(3) for a more in-
     depth description of the format of a capability database.

CAPABILITIES
     Fields  within each record in the database follow the getcap(3) conventions
     for boolean, type string `=' and type numeric `#', although type numeric is
     deprecated in favour of the string format and either form is accepted for a
     numeric datum.  Values fall into the following categories:

     bool     If the name is present, then the boolean value is true; otherwise,
	      it is false

     file     Path name to a data file

     program  Path name to an executable file

     list     A list of values (or pairs  of  values)  separated  by  commas  or
	      spaces

     path     A space or comma separated list of path names, following the usual
	      csh conventions (leading tilde with and without username being ex-
	      panded to home directories etc.)

     number   A numeric value, either decimal (default), hexadecimal (with lead-
	      ing  0x),  or octal (with a leading 0).  With a numeric type, only
	      one numeric value is allowed.  Numeric types may also be specified
	      in string format (i.e., the capability tag  being  delimited  from
	      the  value by '=' instead of '#').  Whichever method is used, then
	      all records in the database must use the same method to allow val-
	      ues to be correctly overridden in interpolated records.  A numeric
	      value may be infinite.

     size     A number which expresses a size.	The default interpretation of  a
	      value  is  the number of bytes, but a suffix may specify alternate
	      units:
		    b	  explicitly selects 512-byte blocks
		    k	  selects kilobytes (1024 bytes)
		    m	  specifies a multiplier of 1 megabyte (1048576 bytes),
		    g	  specifies units of gigabytes, and
		    t	  represents terabytes.
	      A size value is a numeric quantity and case of the suffix  is  not
	      significant.   Concatenated  values  are	added  together.  A size
	      value may be infinite.

     time     A period of time, by default in seconds.	A prefix may  specify  a
	      different unit:
		    y	  indicates the number of 365 day years,
		    w	  indicates the number of weeks,
		    d	  the number of days,
		    h	  the number of hours,
		    m	  the number of minutes, and
		    s	  the number of seconds.
	      Concatenated  values are added together.	For example, 2 hours and
	      40 minutes may be written either as 9600s, 160m or 2h40m.  A  time
	      value may be infinite.

     "infinity",  "inf",  "unlimited", "unlimit," and -1 are considered infinite
     values.

     The usual convention to interpolate capability entries  using  the  special
     tc=value notation may be used.

     Default  values  are specified in the `Default' column.  If there is no de-
     fault, the value is inherited from the process setting up the  login  envi-
     ronment.

RESOURCE LIMITS
     Name		Type	  Default   Description
     coredumpsize	size		    Maximum coredump size limit.
     cputime		time		    CPU usage limit.
     datasize		size		    Maximum data size limit.
     filesize		size		    Maximum file size limit.
     kqueues		number		    Maximum   number   of  kernel  event
					    queues.
     maxproc		number		    Maximum number of processes.
     memorylocked	size		    Maximum locked in core  memory  size
					    limit.
     memoryuse		size		    Maximum  of  core  memory  use  size
					    limit.
     openfiles		number		    Maximum number  of	open  files  per
					    process.
     pipebuf		size		    Maximum size of pipe buffers.
     pseudoterminals	number		    Maximum number of pseudo-terminals.
     sbsize		size		    Maximum permitted socketbuffer size.
     stacksize		size		    Maximum stack size limit.
     swapuse		size		    Maximum swap space size limit.
     umtxp		number		    Maximum   number  of  process-shared
					    pthread locks.
     vmemoryuse 	size		    Maximum permitted total VM usage per
					    process.

     These resource limit entries actually specify both the maximum and  current
     limits  (see  getrlimit(2)).   The current (soft) limit is the one normally
     used, although the user is permitted to increase the current limit  to  the
     maximum  (hard) limit.  The maximum and current limits may be specified in-
     dividually by appending a -max or -cur to the capability name.

ENVIRONMENT
     Name	      Type	Default 	 Description
     charset	      string			 Set   $MM_CHARSET   environment
						 variable   to	 the   specified
						 value.
     cpumask	      string			 List of cpus to bind  the  user
						 to.  The  syntax is the same as
						 for   the   -l   argument    of
						 cpuset(1)     or    the    word
						 `default'.  If set to `default'
						 no action is taken.
     hushlogin	      bool	false		 Same as having  a  ~/.hushlogin
						 file.
     ignorenologin    bool	false		 Login not prevented by nologin.
     ftp-chroot       bool	false		 Limit FTP access with chroot(2)
						 to  the  HOME	directory of the
						 user.	See ftpd(8) for details.
     label	      string			 Default MAC policy; see  macla-
						 bel(7).
     lang	      string			 Set  $LANG environment variable
						 to the specified value.
     mail	      string			 Set $MAIL environment	variable
						 to the specified value.
     manpath	      path			 Default  search  path	for man-
						 pages.
     nocheckmail      bool	false		 Display mail status at login.
     nologin	      file			 If the file exists it	will  be
						 displayed and the login session
						 will be terminated.
     path	      path	/bin /usr/bin	 Default search path.
     priority	      number	0		 Initial priority level. A value
						 in  the  nice	range (-20 to 20
						 included), extended below  with
						 the  32 real-time class priori-
						 ties (so -52 maps to priority 0
						 in the real-time class, -51  to
						 1,  and  so  on until -21 which
						 maps to 31; see rtprio(1))  and
						 above	with  the  32 idle class
						 priorities (so 21 maps to  pri-
						 ority	0  in the idle class, 22
						 to 1, and so on until 52  which
						 maps  to  31;	see  idprio(1)).
						 Special  value  `inherit'  pre-
						 vents resetting the priority.
     requirehome       bool	 false		  Require a valid home directory
						 to login.
     setenv	      list			 A comma-separated list of envi-
						 ronment variables and values to
						 which they are to be set.  Val-
						 ues containing commas	must  be
						 quoted.
     shell	      prog			 Session shell to execute rather
						 than the shell specified in the
						 passwd  file.	 The SHELL envi-
						 ronment variable  will  contain
						 the   shell  specified  in  the
						 password file.
     term	      string			 Default terminal  type  if  not
						 able  to  determine  from other
						 means.
     timezone	      string			 Default value of  $TZ	environ-
						 ment variable.
     umask	      number			 Initial  umask.  Should  always
						 have a leading 0 to ensure  oc-
						 tal   interpretation.	 Special
						 value `inherit' explicitly  in-
						 dicates   not	 to  change  the
						 umask.
     welcome	      file	/etc/motd	 File  containing  welcome  mes-
						 sage.

AUTHENTICATION
     Name	      Type	Default   Description
     copyright	      file		  File	containing  additional copyright
					  information
     host.allow       list		  List of  remote  host  wildcards  from
					  which users in the class may access.
     host.deny	      list		  List	of  remote  host  wildcards from
					  which users in the class may	not  ac-
					  cess.
     login_prompt     string		  The login prompt given by login(1)
     login-backoff    number	3	  The  number  of login attempts allowed
					  before the backoff delay  is	inserted
					  after  each  subsequent  attempt.  The
					  backoff delay is the number  of  tries
					  above  login-backoff	multiplied  by 5
					  seconds.
     login-retries    number	10	  The number of login  attempts  allowed
					  before the login fails.
     passwd_format    string	sha512	  The  encryption  format  that  new  or
					  changed  passwords  will  use.   Valid
					  values  include  "des",  "md5", "blf",
					  "sha256" and	"sha512";  see	crypt(3)
					  for  details.   NIS  clients	using  a
					  non-FreeBSD NIS server should probably
					  use "des".
     passwd_prompt    string		  The password prompt presented  by  lo-
					  gin(1)
     passwordtime     time		  Used by passwd(1) to set next password
					  expiry date.
     times.allow       list		   List of time periods during which lo-
					  gins are allowed.
     times.deny       list		  List of time periods during which  lo-
					  gins are disallowed.
     ttys.allow       list		  List of ttys and ttygroups which users
					  in the class may use for access.
     ttys.deny	      list		  List of ttys and ttygroups which users
					  in the class may not use for access.
     warnexpire       time		  Advance notice for pending account ex-
					  piry.
     warnpassword     time		  Advance  notice  for	pending password
					  expiry.

     These fields are intended to be used by passwd(1) and other programs in the
     login authentication system.

     Capabilities that set environment variables are scanned for  both	`~'  and
     `$'  characters, which are substituted for a user's home directory and name
     respectively.  To pass these  characters  literally  into	the  environment
     variable, escape the character by preceding it with a backslash '\'.

     The  host.allow  and  host.deny  entries are comma separated lists used for
     checking remote access to the system, and consist of a  list  of  hostnames
     and/or IP addresses against which remote network logins are checked.  Items
     in these lists may contain wildcards in the form used by shell programs for
     wildcard  matching (See fnmatch(3) for details on the implementation).  The
     check on hosts is made against both the remote  system's  Internet  address
     and  hostname  (if  available).   If both lists are empty or not specified,
     then logins from any remote host are allowed.  If host.allow  contains  one
     or  more  hosts, then only remote systems matching any of the items in that
     list are allowed to log in.  If host.deny contains one or more hosts,  then
     a login from any matching hosts will be disallowed.

     The times.allow and times.deny entries consist of a comma-separated list of
     time periods during which the users in a class are allowed to be logged in.
     These  are  expressed  as one or more day codes followed by a start and end
     times expressed in 24 hour format, separated by a hyphen or dash.	For  ex-
     ample,  MoThSa0200-1300 translates to Monday, Thursday and Saturday between
     the hours of 2 am and 1 p.m..  If both of these time lists are empty, users
     in the class are allowed access at any time.  If times.allow is  specified,
     then  logins  are	only allowed during the periods given.	If times.deny is
     specified, then logins are denied during the periods given,  regardless  of
     whether one of the periods specified in times.allow applies.

     Note that login(1) enforces only that the actual login falls within periods
     allowed  by  these entries.  Further enforcement over the life of a session
     requires a separate daemon to monitor transitions from an allowed period to
     a non-allowed one.

     The ttys.allow and ttys.deny entries contain a comma-separated list of  tty
     devices (without the /dev/ prefix) that a user in a class may use to access
     the  system,  and/or  a list of ttygroups (See getttyent(3) and ttys(5) for
     information on ttygroups).  If neither entry exists, then the choice of lo-
     gin device used by the user is unrestricted.  If only ttys.allow is  speci-
     fied, then the user is restricted only to ttys in the given group or device
     list.   If only ttys.deny is specified, then the user is prevented from us-
     ing the specified devices or devices in the group.  If both lists are given
     and are non-empty, the user is  restricted  to  those  devices  allowed  by
     ttys.allow that are not available by ttys.deny.

     The  minpasswordlen  and  minpasswordcase facilities for enforcing restric-
     tions on password quality, which used to be supported by  login.conf,  have
     been superseded by the pam_passwdqc(8) PAM module.

RESERVED CAPABILITIES
     The  following capabilities are reserved for the purposes indicated and may
     be supported by third-party software.  They are not implemented in the base
     system.

     Name	       Type	 Default   Description
     accounted	       bool	 false	   Enable session  time  accounting  for
					   all users in this class.
     auth	       list	 passwd    Allowed  authentication  styles.  The
					   first item is the default style.
     auth-type	       list		   Allowed authentication styles for the
					   authentication type.
     autodelete        time		   Time after  expiry  when  account  is
					   auto-deleted.
     bootfull	       bool	 false	   Enable  'boot  only	if  ttygroup  is
					   full' strategy when terminating  ses-
					   sions.
     daytime	       time		   Maximum login time per day.
     expireperiod      time		   Time for expiry allocation.
     graceexpire       time		   Grace days for expired account.
     gracetime	       time		   Additional grace login time allowed.
     host.accounted    list		   List  of  remote  host wildcards from
					   which  login  sessions  will  be  ac-
					   counted.
     host.exempt	list		    List  of  remote host wildcards from
					   which login session accounting is ex-
					   empted.
     idletime	       time		   Maximum idle time before logout.
     minpasswordlen    number	 6	   The minimum length a  local	password
					   may be.
     mixpasswordcase   bool	 true	   Whether  passwd(1) will warn the user
					   if an all lower case password is  en-
					   tered.
     monthtime	       time		   Maximum login time per month.
     refreshtime       time		   New time allowed on account refresh.
     refreshperiod     str		   How often account time is refreshed.
     sessiontime       time		   Maximum login time per session.
     sessionlimit      number		   Maximum  number  of	concurrent login
					   sessions on ttys in any group.
     ttys.accounted    list		   List of ttys and ttygroups for  which
					   login accounting is active.
     ttys.exempt       list		   List  of ttys and ttygroups for which
					   login accounting is exempt.
     warntime	       time		   Advance notice  for	pending  out-of-
					   time.
     weektime	       time		   Maximum login time per week.

     The  ttys.accounted  and  ttys.exempt fields operate in a similar manner to
     ttys.allow  and  ttys.deny  as  explained	above.	  Similarly   with   the
     host.accounted and host.exempt lists.

SEE ALSO
     cap_mkdb(1),  login(1),  chroot(2),  getcap(3), getttyent(3), login_cap(3),
     login_class(3),	       pam(3),		  passwd(5),		ttys(5),
     ftpd(8)(ports/ftp/freebsd-ftpd), pam_passwdqc(8)

HISTORY
     The file login.conf first appeared in FreeBSD 2.1.5.

FreeBSD 15.1 STABLE		  May 27, 2026			   LOGIN.CONF(5)

home | help