]> git.pld-linux.org Git - packages/pam.git/blob - pam-mkhomedir-notfound.patch
4f36bf4bc691115fa78402690df0a9b41c84e468
[packages/pam.git] / pam-mkhomedir-notfound.patch
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>
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
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  
60 @@ -94,7 +97,16 @@
61          opt->umask = *argv+6;
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);
71 +        else
72 +           pam_syslog(pamh, LOG_ERR, "unknown parameter for \"create\" option: %s", *argv + 9);
73        } else {
74          pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
75        }
76     }
77 @@ -235,7 +235,12 @@
78        return PAM_SUCCESS;
79     }
80  
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;
86 +   else
87 +      return PAM_SUCCESS;
88  }
89  
90  /* Ignore */
This page took 0.055415 seconds and 2 git commands to generate.