]>
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> | |
62d0b58d ER |
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 | |
515bf399 JR |
37 | @@ -61,8 +61,11 @@ |
38 | #define MAX_FD_NO 10000 | |
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; | |
51 | @@ -75,7 +78,7 @@ | |
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 | ||
bad83ca9 | 60 | @@ -94,7 +97,16 @@ |
515bf399 JR |
61 | opt->umask = *argv+6; |
62 | } else if (!strncmp(*argv,"skel=",5)) { | |
63 | opt->skeldir = *argv+5; | |
64 | + } else if (!strncmp(*argv,"notfound=",9)) { | |
515bf399 JR |
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); | |
71 | + else | |
72 | + pam_syslog(pamh, LOG_ERR, "unknown parameter for \"create\" option: %s", *argv + 9); | |
bad83ca9 | 73 | } else { |
515bf399 JR |
74 | pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv); |
75 | } | |
76 | } | |
62d0b58d | 77 | @@ -235,7 +235,12 @@ |
515bf399 JR |
78 | return PAM_SUCCESS; |
79 | } | |
80 | ||
62d0b58d | 81 | - return create_homedir(pamh, &opt, user, pwd->pw_dir); |
57fed07b | 82 | + if (opt.ctrl & HOMEDIR_CREATE) |
62c4d422 | 83 | + return create_homedir(pamh, &opt, user, pwd->pw_dir); |
57fed07b | 84 | + else if (opt.ctrl & HOMEDIR_DENY) |
515bf399 JR |
85 | + return PAM_PERM_DENIED; |
86 | + else | |
87 | + return PAM_SUCCESS; | |
88 | } | |
89 | ||
90 | /* Ignore */ |