]>
Commit | Line | Data |
---|---|---|
515bf399 JR |
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 | |
4 | @@ -29,6 +29,9 @@ | |
5 | umask=<replaceable>mode</replaceable> | |
6 | </arg> | |
7 | <arg choice="opt"> | |
8 | + notfound=[<replaceable>create</replaceable>|<replaceable>deny</replaceable>|<replaceable>ignore</replaceable>] | |
9 | + </arg> | |
10 | + <arg choice="opt"> | |
11 | skel=<replaceable>skeldir</replaceable> | |
12 | </arg> | |
13 | </cmdsynopsis> | |
14 | @@ -82,6 +94,20 @@ | |
15 | ||
16 | <varlistentry> | |
17 | <term> | |
18 | + <option>notfound=[<replaceable>create</replaceable>|<replaceable>deny</replaceable>|<replaceable>ignore</replaceable>]</option> | |
19 | + </term> | |
20 | + <listitem> | |
21 | + <para> | |
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 | |
26 | + </para> | |
27 | + </listitem> | |
28 | + </varlistentry> | |
29 | + | |
30 | + <varlistentry> | |
31 | + <term> | |
32 | <option>skel=<replaceable>/path/to/skel/directory</replaceable></option> | |
33 | </term> | |
34 | <listitem> | |
be652228 JB |
35 | --- Linux-PAM-1.4.0/modules/pam_mkhomedir/pam_mkhomedir.c.orig 2020-06-08 12:17:27.000000000 +0200 |
36 | +++ Linux-PAM-1.4.0/modules/pam_mkhomedir/pam_mkhomedir.c 2020-08-25 19:45:06.233402760 +0200 | |
37 | @@ -53,8 +53,11 @@ | |
38 | #include "pam_inline.h" | |
515bf399 JR |
39 | |
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 */ | |
48 | ||
49 | struct options_t { | |
50 | int ctrl; | |
be652228 | 51 | @@ -67,7 +70,7 @@ |
515bf399 JR |
52 | _pam_parse (const pam_handle_t *pamh, int flags, int argc, const char **argv, |
53 | options_t *opt) | |
54 | { | |
55 | - opt->ctrl = 0; | |
56 | + opt->ctrl = HOMEDIR_CREATE; | |
57 | opt->umask = "0022"; | |
58 | opt->skeldir = "/etc/skel"; | |
59 | ||
be652228 JB |
60 | @@ -88,6 +91,15 @@ |
61 | opt->umask = str; | |
62 | } else if ((str = pam_str_skip_prefix(*argv, "skel=")) != NULL) { | |
63 | opt->skeldir = str; | |
64 | + } else if ((str = pam_str_skip_prefix(*argv, "notfound=")) != NULL) { | |
65 | + if (!strcmp(str, "create")) | |
515bf399 | 66 | + opt->ctrl = (opt->ctrl | HOMEDIR_CREATE) & ~HOMEDIR_DENY; |
be652228 | 67 | + else if (!strcmp(str, "deny")) |
515bf399 | 68 | + opt->ctrl = (opt->ctrl | HOMEDIR_DENY) & ~HOMEDIR_CREATE; |
be652228 | 69 | + else if (!strcmp(str, "ignore")) |
515bf399 JR |
70 | + opt->ctrl &= ~(HOMEDIR_CREATE | HOMEDIR_DENY); |
71 | + else | |
be652228 | 72 | + pam_syslog(pamh, LOG_ERR, "unknown parameter for \"create\" option: %s", str); |
bad83ca9 | 73 | } else { |
515bf399 JR |
74 | pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv); |
75 | } | |
be652228 | 76 | @@ -221,7 +233,12 @@ |
515bf399 JR |
77 | return PAM_SUCCESS; |
78 | } | |
79 | ||
62d0b58d | 80 | - return create_homedir(pamh, &opt, user, pwd->pw_dir); |
57fed07b | 81 | + if (opt.ctrl & HOMEDIR_CREATE) |
62c4d422 | 82 | + return create_homedir(pamh, &opt, user, pwd->pw_dir); |
57fed07b | 83 | + else if (opt.ctrl & HOMEDIR_DENY) |
515bf399 JR |
84 | + return PAM_PERM_DENIED; |
85 | + else | |
86 | + return PAM_SUCCESS; | |
87 | } | |
88 | ||
89 | /* Ignore */ |