]> git.pld-linux.org Git - packages/pam.git/blame - pam-mkhomedir-notfound.patch
- updated to 1.4.0
[packages/pam.git] / pam-mkhomedir-notfound.patch
CommitLineData
515bf399
JR
1diff -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 */
This page took 0.093927 seconds and 4 git commands to generate.