]> git.pld-linux.org Git - packages/pam.git/blob - pam-mkhomedir-notfound.patch
- updated to 1.4.0
[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.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"
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 @@ -67,7 +70,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 @@ -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"))
66 +           opt->ctrl = (opt->ctrl | HOMEDIR_CREATE) & ~HOMEDIR_DENY;
67 +        else if (!strcmp(str, "deny"))
68 +           opt->ctrl = (opt->ctrl | HOMEDIR_DENY) & ~HOMEDIR_CREATE;
69 +        else if (!strcmp(str, "ignore"))
70 +           opt->ctrl &= ~(HOMEDIR_CREATE | HOMEDIR_DENY);
71 +        else
72 +           pam_syslog(pamh, LOG_ERR, "unknown parameter for \"create\" option: %s", str);
73        } else {
74          pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
75        }
76 @@ -221,7 +233,12 @@
77        return PAM_SUCCESS;
78     }
79  
80 -   return create_homedir(pamh, &opt, user, pwd->pw_dir);
81 +   if (opt.ctrl & HOMEDIR_CREATE)
82 +      return create_homedir(pamh, &opt, user, pwd->pw_dir);
83 +   else if (opt.ctrl & HOMEDIR_DENY)
84 +      return PAM_PERM_DENIED;
85 +   else
86 +      return PAM_SUCCESS;
87  }
88  
89  /* Ignore */
This page took 0.097778 seconds and 3 git commands to generate.