1 diff -urN Linux-PAM-0.99.7.1.orig/modules/pam_mkhomedir/pam_mkhomedir.8.xml Linux-PAM-0.99.7.1/modules/pam_mkhomedir/pam_mkhomedir.8.xml
2 --- Linux-PAM-0.99.7.1.orig/modules/pam_mkhomedir/pam_mkhomedir.8.xml 2006-05-30 15:03:09.000000000 +0200
3 +++ Linux-PAM-0.99.7.1/modules/pam_mkhomedir/pam_mkhomedir.8.xml 2007-02-03 22:09:37.942620000 +0100
5 umask=<replaceable>mode</replaceable>
8 + notfound=[<replaceable>create</replaceable>|<replaceable>deny</replaceable>|<replaceable>ignore</replaceable>]
11 skel=<replaceable>skeldir</replaceable>
18 + <option>notfound=[<replaceable>create</replaceable>|<replaceable>deny</replaceable>|<replaceable>ignore</replaceable>]</option>
22 + What to do if home directory is not found or it is not a directory.
23 + <replaceable>create</replaceable> - default, make home directory;
24 + <replaceable>deny</replaceable> - deny access;
25 + <replaceable>ignore</replaceable> - do nothing
32 <option>skel=<replaceable>/path/to/skel/directory</replaceable></option>
35 --- Linux-PAM-1.2.0/modules/pam_mkhomedir/pam_mkhomedir.c~ 2015-04-30 12:15:42.000000000 +0300
36 +++ Linux-PAM-1.2.0/modules/pam_mkhomedir/pam_mkhomedir.c 2015-04-30 12:16:09.350939182 +0300
38 #define MAX_FD_NO 10000
40 /* argument parsing */
41 -#define MKHOMEDIR_DEBUG 020 /* be verbose about things */
42 -#define MKHOMEDIR_QUIET 040 /* keep quiet about things */
43 +#define MKHOMEDIR_DEBUG 0x10 /* be verbose about things */
44 +#define MKHOMEDIR_QUIET 0x20 /* keep quiet about things */
45 +/* what to do, if home directory does not exist? */
46 +#define HOMEDIR_CREATE 0x40 /* create it */
47 +#define HOMEDIR_DENY 0x80 /* deny access */
52 _pam_parse (const pam_handle_t *pamh, int flags, int argc, const char **argv,
56 + opt->ctrl = HOMEDIR_CREATE;
58 opt->skeldir = "/etc/skel";
62 } else if (!strncmp(*argv,"skel=",5)) {
63 opt->skeldir = *argv+5;
64 + } else if (!strncmp(*argv,"notfound=",9)) {
65 + if (!strcmp(*argv + 9, "create"))
66 + opt->ctrl = (opt->ctrl | HOMEDIR_CREATE) & ~HOMEDIR_DENY;
67 + else if (!strcmp(*argv + 9, "deny"))
68 + opt->ctrl = (opt->ctrl | HOMEDIR_DENY) & ~HOMEDIR_CREATE;
69 + else if (!strcmp(*argv + 9, "ignore"))
70 + opt->ctrl &= ~(HOMEDIR_CREATE | HOMEDIR_DENY);
72 + pam_syslog(pamh, LOG_ERR, "unknown parameter for \"create\" option: %s", *argv + 9);
74 pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
81 - return create_homedir(pamh, &opt, user, pwd->pw_dir);
82 + if (opt.ctrl & HOMEDIR_CREATE)
83 + return create_homedir(pamh, &opt, user, pwd->pw_dir);
84 + else if (opt.ctrl & HOMEDIR_DENY)
85 + return PAM_PERM_DENIED;