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

FreeBSD Manual Pages

  
 
  

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.
     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.
     sbsize		size		    Maximum permitted socketbuffer size.
     vmemoryuse 	size		    Maximum permitted total VM usage per
					    process.
     stacksize		size		    Maximum stack size limit.
     pseudoterminals	number		    Maximum number of pseudo-terminals.
     swapuse		size		    Maximum swap space size limit.
     umtxp		number		    Maximum  number  of   process-shared
					    pthread locks.
     pipebuf		size		    Maximum size of pipe buffers.

     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 ports 15.quarterly     September 25, 2025		   LOGIN.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=login.conf&sektion=5&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help