{
    "content": [
        {
            "type": "text",
            "text": "# pam_extrausers (man)\n\n## NAME\n\npamextrausers - Module for libnss-extrausers authentication\n\n## SYNOPSIS\n\npamextrausers.so [...]\n\n## DESCRIPTION\n\nThis is similar to the standard Unix authentication module pamunix. But instead of using\n/etc/passwd and /etc/shadow, it uses /var/lib/extrausers/passwd and\n/var/lib/extrausers/shadow.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **OPTIONS** (12 subsections)\n- **MODULE TYPES PROVIDED**\n- **RETURN VALUES**\n- **EXAMPLES**\n- **SEE ALSO**\n- **AUTHOR**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "pam_extrausers",
        "section": "",
        "mode": "man",
        "summary": "pamextrausers - Module for libnss-extrausers authentication",
        "synopsis": "pamextrausers.so [...]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [
            "An example usage for /etc/pam.d/common-password would be:",
            "password        [success=2 default=ignore]      pamextrausers.so obscure sha512",
            "password        [success=1 default=ignore]      pamunix.so obscure sha512",
            "# here's the fallback if no module succeeds",
            "password        requisite                       pamdeny.so",
            "# prime the stack with a positive return value if there isn't one already;",
            "# this avoids us returning an error just because nothing sets a success code",
            "# since the modules above will each just jump around",
            "password        required                        pampermit.so",
            "# and here are more per-package modules (the \"Additional\" block)",
            "password        optional        pamgnomekeyring.so",
            "password        optional        pamecryptfs.so"
        ],
        "see_also": [
            {
                "name": "login.defs",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/login.defs/5/json"
            },
            {
                "name": "pam.conf",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/pam.conf/5/json"
            },
            {
                "name": "pam.d",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/pam.d/5/json"
            },
            {
                "name": "pam",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/pam/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 24,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "debug",
                        "lines": 2
                    },
                    {
                        "name": "audit",
                        "lines": 2
                    },
                    {
                        "name": "nullok",
                        "lines": 19
                    },
                    {
                        "name": "nodelay",
                        "lines": 13
                    },
                    {
                        "name": "nis",
                        "lines": 7
                    },
                    {
                        "name": "shadow",
                        "lines": 2
                    },
                    {
                        "name": "md5",
                        "lines": 2
                    },
                    {
                        "name": "bigcrypt",
                        "lines": 2
                    },
                    {
                        "name": "sha256",
                        "lines": 3
                    },
                    {
                        "name": "sha512",
                        "lines": 3
                    },
                    {
                        "name": "blowfish",
                        "lines": 14
                    },
                    {
                        "name": "obscure",
                        "lines": 25
                    }
                ]
            },
            {
                "name": "MODULE TYPES PROVIDED",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "RETURN VALUES",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "EXAMPLES",
                "lines": 16,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 5,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "pamextrausers - Module for libnss-extrausers authentication\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "pamextrausers.so [...]\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "This is similar to the standard Unix authentication module pamunix. But instead of using\n/etc/passwd and /etc/shadow, it uses /var/lib/extrausers/passwd and\n/var/lib/extrausers/shadow.\n\nThe account component performs the task of establishing the status of the user's account and\npassword based on the following shadow elements: expire, lastchange, maxchange, minchange,\nwarnchange. In the case of the latter, it may offer advice to the user on changing their\npassword or, through the PAMAUTHTOKENREQD return, delay giving service to the user until\nthey have established a new password. The entries listed above are documented in the\nshadow(5) manual page. Should the user's record not contain one or more of these entries, the\ncorresponding shadow check is not performed.\n\nThe authentication component performs the task of checking the users credentials (password).\nThe default action of this module is to not permit the user access to a service if their\nofficial password is blank.\n\nThe password component of this module performs the task of updating the user's password. The\ndefault encryption hash is taken from the ENCRYPTMETHOD variable from /etc/login.defs\n\nThe session component of this module logs when a user logins or leave the system.\n\nRemaining arguments, supported by others functions of this module, are silently ignored.\nOther arguments are logged as errors through syslog(3).\n",
                "subsections": []
            },
            "OPTIONS": {
                "content": "",
                "subsections": [
                    {
                        "name": "debug",
                        "content": "Turns on debugging via syslog(3).\n"
                    },
                    {
                        "name": "audit",
                        "content": "A little more extreme than debug.\n"
                    },
                    {
                        "name": "nullok",
                        "content": "The default action of this module is to not permit the user access to a service if their\nofficial password is blank. The nullok argument overrides this default and allows any\nuser with a blank password to access the service.\n\nnulloksecure\nThe default action of this module is to not permit the user access to a service if their\nofficial password is blank. The nulloksecure argument overrides this default and allows\nany user with a blank password to access the service as long as the value of PAMTTY is\nset to one of the values found in /etc/securetty.\n\ntryfirstpass\nBefore prompting the user for their password, the module first tries the previous stacked\nmodule's password in case that satisfies this module as well.\n\nusefirstpass\nThe argument usefirstpass forces the module to use a previous stacked modules password\nand will never prompt the user - if no password is available or the password is not\nappropriate, the user will be denied access.\n"
                    },
                    {
                        "name": "nodelay",
                        "content": "This argument can be used to discourage the authentication component from requesting a\ndelay should the authentication as a whole fail. The default action is for the module to\nrequest a delay-on-failure of the order of two second.\n\nuseauthtok\nWhen password changing enforce the module to set the new password to the one provided by\na previously stacked password module (this is used in the example of the stacking of the\npamcracklib module documented below).\n\nnotsetpass\nThis argument is used to inform the module that it is not to pay attention to/make\navailable the old or new passwords from/to other (stacked) password modules.\n"
                    },
                    {
                        "name": "nis",
                        "content": "NIS RPC is used for setting new passwords.\n\nremember=n\nThe last n passwords for each user are saved in /etc/security/opasswd in order to force\npassword change history and keep the user from alternating between the same password too\nfrequently. Instead of this option the pampwhistory module should be used.\n"
                    },
                    {
                        "name": "shadow",
                        "content": "Try to maintain a shadow based system.\n"
                    },
                    {
                        "name": "md5",
                        "content": "When a user changes their password next, encrypt it with the MD5 algorithm.\n"
                    },
                    {
                        "name": "bigcrypt",
                        "content": "When a user changes their password next, encrypt it with the DEC C2 algorithm.\n"
                    },
                    {
                        "name": "sha256",
                        "content": "When a user changes their password next, encrypt it with the SHA256 algorithm. If the\nSHA256 algorithm is not known to the crypt(3) function, fall back to MD5.\n"
                    },
                    {
                        "name": "sha512",
                        "content": "When a user changes their password next, encrypt it with the SHA512 algorithm. If the\nSHA512 algorithm is not known to the crypt(3) function, fall back to MD5.\n"
                    },
                    {
                        "name": "blowfish",
                        "content": "When a user changes their password next, encrypt it with the blowfish algorithm. If the\nblowfish algorithm is not known to the crypt(3) function, fall back to MD5.\n\nrounds=n\nSet the optional number of rounds of the SHA256, SHA512 and blowfish password hashing\nalgorithms to n.\n\nbrokenshadow\nIgnore errors reading shadow information for users in the account management module.\n\nminlen=n\nSet a minimum password length of n characters. The default value is 6. The maximum for\nDES crypt-based passwords is 8 characters.\n"
                    },
                    {
                        "name": "obscure",
                        "content": "Enable some extra checks on password strength. These checks are based on the \"obscure\"\nchecks in the original shadow package. The behavior is similar to the pamcracklib\nmodule, but for non-dictionary-based checks. The following checks are implemented:\n\nPalindrome\nVerifies that the new password is not a palindrome of (i.e., the reverse of) the\nprevious one.\n\nCase Change Only\nVerifies that the new password isn't the same as the old one with a change of case.\n\nSimilar\nVerifies that the new password isn't too much like the previous one.\n\nSimple\nIs the new password too simple? This is based on the length of the password and the\nnumber of different types of characters (alpha, numeric, etc.) used.\n\nRotated\nIs the new password a rotated version of the old password? (E.g., \"billy\" and\n\"illyb\")\n\n\nInvalid arguments are logged with syslog(3).\n"
                    }
                ]
            },
            "MODULE TYPES PROVIDED": {
                "content": "All module types (account, auth, password and session) are provided.\n",
                "subsections": []
            },
            "RETURN VALUES": {
                "content": "PAMIGNORE\nIgnore this module.\n",
                "subsections": []
            },
            "EXAMPLES": {
                "content": "An example usage for /etc/pam.d/common-password would be:\n\npassword        [success=2 default=ignore]      pamextrausers.so obscure sha512\npassword        [success=1 default=ignore]      pamunix.so obscure sha512\n# here's the fallback if no module succeeds\npassword        requisite                       pamdeny.so\n# prime the stack with a positive return value if there isn't one already;\n# this avoids us returning an error just because nothing sets a success code\n# since the modules above will each just jump around\npassword        required                        pampermit.so\n# and here are more per-package modules (the \"Additional\" block)\npassword        optional        pamgnomekeyring.so\npassword        optional        pamecryptfs.so\n\n\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "login.defs(5), pam.conf(5), pam.d(5), pam(7)\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "pamextrausers was written by various people.\n\n\n\nLinux-PAM Manual                             07/22/2014                            PAMEXTRAUSERS(8)",
                "subsections": []
            }
        }
    }
}