                   pam_limits — PAM module to limit resources

════════════════════════════════════════════════════════════════════════════════

DESCRIPTION

The pam_limits PAM module sets limits on the system resources that can be
obtained in a user-session. Users of uid=0 are affected by this limits, too.

By default limits are taken from the /etc/security/limits.conf config file. Then
individual *.conf files from the /etc/security/limits.d/ directory are read. The
files are parsed one after another in the order of "C" locale. The effect of the
individual files is the same as if all the files were concatenated together in
the order of parsing. If a config file is explicitly specified with a module
option then the files in the above directory are not parsed.

By default limits are taken from the /etc/security/limits.conf config file or,
if that one is not present, the file %vendordir%/security/limits.conf. Then
individual *.conf files from the /etc/security/limits.d/ and
%vendordir%/security/limits.d directories are read. If
/etc/security/limits.d/@filename@.conf exists, then
%vendordir%/security/limits.d/@filename@.conf will not be used. All
limits.d/*.conf files are sorted by their @filename@.conf in lexicographic order
regardless of which of the directories they reside in. The effect of the
individual files is the same as if all the files were concatenated together in
the order of parsing. If a config file is explicitly specified with the config
option the files in the above directories are not parsed.

The module must not be called by a multithreaded application.

If Linux PAM is compiled with audit support the module will report when it
denies access based on limit of maximum number of concurrent login sessions.

OPTIONS

conf=/path/to/limits.conf

        Indicate an alternative limits.conf style configuration file to override
        the default.

debug

        Print debug information.

set_all

        Set the limits for which no value is specified in the configuration file
        to the one from the process with the PID 1. Please note that if the init
        process is systemd these limits will not be the kernel default limits
        and this option should not be used.

utmp_early

        Some broken applications actually allocate a utmp entry for the user
        before the user is admitted to the system. If some of the services you
        are configuring PAM for do this, you can selectively use this module
        argument to compensate for this behavior and at the same time maintain
        system-wide consistency with a single limits.conf file.

noaudit

        Do not report exceeded maximum logins count to the audit subsystem.

EXAMPLES

These are some example lines which might be specified in
/etc/security/limits.conf.

*               soft    core            0
*               hard    nofile          512
@student        hard    nproc           20
@faculty        soft    nproc           20
@faculty        hard    nproc           50
ftp             hard    nproc           0
@student        -       maxlogins       4
@student        -       nonewprivs      1
:123            hard    cpu             5000
@500:           soft    cpu             10000
600:700         hard    locks           10

INITIAL
BEFORE_HTML
BEFORE_HEAD
IN_HEAD
IN_HEAD
GENERIC_RCDATA
GENERIC_RCDATA
GENERIC_RCDATA
GENERIC_RCDATA
IN_HEAD
IN_HEAD
AFTER_HEAD
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
IN_BODY
AFTER_BODY
AFTER_AFTER_BODY
AFTER_AFTER_BODY
