~ubuntu-branches/ubuntu/maverick/samba/maverick-security

« back to all changes in this revision

Viewing changes to docs/htmldocs/Samba3-HOWTO/pam.html

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2010-01-29 06:16:15 UTC
  • mfrom: (0.27.9 upstream) (0.34.4 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100129061615-37hs6xqpsdhjq3ld
Tags: 2:3.4.5~dfsg-1ubuntu1
* Merge from debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/smb.conf:
    - Add "(Samba, Ubuntu)" to server string.
    - Comment out the default [homes] share, and add a comment about "valid users = %s"
      to show users how to restrict access to \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are allowed to create
      public shares in additon to authenticated ones.
    - add map to guest = Bad user, maps bad username to gues access.
  + debian/samba-common.conf:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/mksambapasswd.awk:
    - Do not add user with UID less than 1000 to smbpasswd.
  + debian/control: 
    - Make libswbclient0 replace/conflict with hardy's likewise-open.
    - Don't build against ctdb, since its not in main yet.
  + debian/rules:
    - Enable "native" PIE hardening.
    - Add BIND_NOW to maximize benefit of RELRO hardening.
  + Add ufw integration:
    - Created debian/samba.ufw.profile.
    - debian/rules, debian/samba.dirs, debian/samba.files: install
  + Add apoort hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + debian/rules, debian/samba.if-up: allow "NetworkManager" as a recognized address
    family... it's obviously /not/ an address family, but it's what gets
    sent when using NM, so we'll cope for now.  (LP: #462169). Taken from karmic-proposed.
  + debian/control: Recommend keyutils for smbfs (LP: #493565)
  + Dropped patches:
    - debian/patches/security-CVE-2009-3297.patch: No longer needed
    - debian/patches/fix-too-many-open-files.patch: No longer needed

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�28.�PAM-Based Distributed Authentication</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="The Official Samba 3.4.x HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part�III.�Advanced Configuration"><link rel="prev" href="ProfileMgmt.html" title="Chapter�27.�Desktop Profile Management"><link rel="next" href="integrate-ms-networks.html" title="Chapter�29.�Integrating MS Windows Networks with Samba"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter�28.�PAM-Based Distributed Authentication</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ProfileMgmt.html">Prev</a>�</td><th width="60%" align="center">Part�III.�Advanced Configuration</th><td width="20%" align="right">�<a accesskey="n" href="integrate-ms-networks.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="pam"></a>Chapter�28.�PAM-Based Distributed Authentication</h2></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="orgname">Samba Team</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jht@samba.org">jht@samba.org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Stephen</span> <span class="surname">Langasek</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:vorlon@netexpress.net">vorlon@netexpress.net</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">May 31, 2003</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="pam.html#id2665180">Features and Benefits</a></span></dt><dt><span class="sect1"><a href="pam.html#id2665810">Technical Discussion</a></span></dt><dd><dl><dt><span class="sect2"><a href="pam.html#id2665864">PAM Configuration Syntax</a></span></dt><dt><span class="sect2"><a href="pam.html#id2666875">Example System Configurations</a></span></dt><dt><span class="sect2"><a href="pam.html#id2667181">smb.conf PAM Configuration</a></span></dt><dt><span class="sect2"><a href="pam.html#id2667262">Remote CIFS Authentication Using winbindd.so</a></span></dt><dt><span class="sect2"><a href="pam.html#id2667365">Password Synchronization Using pam_smbpass.so</a></span></dt></dl></dd><dt><span class="sect1"><a href="pam.html#id2667759">Common Errors</a></span></dt><dd><dl><dt><span class="sect2"><a href="pam.html#id2667770">pam_winbind Problem</a></span></dt><dt><span class="sect2"><a href="pam.html#id2667868">Winbind Is Not Resolving Users and Groups</a></span></dt></dl></dd></dl></div><p>
2
 
<a class="indexterm" name="id2665104"></a>
3
 
<a class="indexterm" name="id2665111"></a>
4
 
<a class="indexterm" name="id2665117"></a>
5
 
<a class="indexterm" name="id2665124"></a>
 
1
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�28.�PAM-Based Distributed Authentication</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="The Official Samba 3.4.x HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part�III.�Advanced Configuration"><link rel="prev" href="ProfileMgmt.html" title="Chapter�27.�Desktop Profile Management"><link rel="next" href="integrate-ms-networks.html" title="Chapter�29.�Integrating MS Windows Networks with Samba"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter�28.�PAM-Based Distributed Authentication</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ProfileMgmt.html">Prev</a>�</td><th width="60%" align="center">Part�III.�Advanced Configuration</th><td width="20%" align="right">�<a accesskey="n" href="integrate-ms-networks.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter�28.�PAM-Based Distributed Authentication"><div class="titlepage"><div><div><h2 class="title"><a name="pam"></a>Chapter�28.�PAM-Based Distributed Authentication</h2></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jht@samba.org">jht@samba.org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Stephen</span> <span class="surname">Langasek</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:vorlon@netexpress.net">vorlon@netexpress.net</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">May 31, 2003</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="pam.html#id2671238">Features and Benefits</a></span></dt><dt><span class="sect1"><a href="pam.html#id2671868">Technical Discussion</a></span></dt><dd><dl><dt><span class="sect2"><a href="pam.html#id2671922">PAM Configuration Syntax</a></span></dt><dt><span class="sect2"><a href="pam.html#id2672928">Example System Configurations</a></span></dt><dt><span class="sect2"><a href="pam.html#id2673234"><code class="filename">smb.conf</code> PAM Configuration</a></span></dt><dt><span class="sect2"><a href="pam.html#id2673315">Remote CIFS Authentication Using <code class="filename">winbindd.so</code></a></span></dt><dt><span class="sect2"><a href="pam.html#id2673418">Password Synchronization Using <code class="filename">pam_smbpass.so</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="pam.html#id2673812">Common Errors</a></span></dt><dd><dl><dt><span class="sect2"><a href="pam.html#id2673824">pam_winbind Problem</a></span></dt><dt><span class="sect2"><a href="pam.html#id2673922">Winbind Is Not Resolving Users and Groups</a></span></dt></dl></dd></dl></div><p>
 
2
<a class="indexterm" name="id2671162"></a>
 
3
<a class="indexterm" name="id2671169"></a>
 
4
<a class="indexterm" name="id2671176"></a>
 
5
<a class="indexterm" name="id2671182"></a>
6
6
This chapter should help you to deploy Winbind-based authentication on any PAM-enabled
7
7
UNIX/Linux system. Winbind can be used to enable user-level application access authentication
8
8
from any MS Windows NT domain, MS Windows 200x Active Directory-based
9
9
domain, or any Samba-based domain environment. It will also help you to configure PAM-based local host access
10
10
controls that are appropriate to your Samba configuration.
11
11
</p><p>
12
 
<a class="indexterm" name="id2665142"></a>
13
 
<a class="indexterm" name="id2665148"></a>
 
12
<a class="indexterm" name="id2671200"></a>
 
13
<a class="indexterm" name="id2671207"></a>
14
14
In addition to knowing how to configure Winbind into PAM, you will learn generic PAM management
15
15
possibilities and in particular how to deploy tools like <code class="filename">pam_smbpass.so</code> to your advantage.
16
 
</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
 
16
</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
17
17
The use of Winbind requires more than PAM configuration alone.
18
18
Please refer to <a class="link" href="winbind.html" title="Chapter�24.�Winbind: Use of Domain Accounts">Winbind: Use of Domain Accounts</a>, for further information regarding Winbind.
19
 
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2665180"></a>Features and Benefits</h2></div></div></div><p>
20
 
<a class="indexterm" name="id2665188"></a>
21
 
<a class="indexterm" name="id2665194"></a>
22
 
<a class="indexterm" name="id2665201"></a>
23
 
<a class="indexterm" name="id2665208"></a>
24
 
<a class="indexterm" name="id2665217"></a>
25
 
<a class="indexterm" name="id2665224"></a>
26
 
<a class="indexterm" name="id2665231"></a>
27
 
<a class="indexterm" name="id2665237"></a>
 
19
</p></div><div class="sect1" title="Features and Benefits"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2671238"></a>Features and Benefits</h2></div></div></div><p>
 
20
<a class="indexterm" name="id2671246"></a>
 
21
<a class="indexterm" name="id2671252"></a>
 
22
<a class="indexterm" name="id2671259"></a>
 
23
<a class="indexterm" name="id2671266"></a>
 
24
<a class="indexterm" name="id2671275"></a>
 
25
<a class="indexterm" name="id2671282"></a>
 
26
<a class="indexterm" name="id2671289"></a>
 
27
<a class="indexterm" name="id2671296"></a>
28
28
A number of UNIX systems (e.g., Sun Solaris), as well as the xxxxBSD family and Linux,
29
29
now utilize the Pluggable Authentication Modules (PAM) facility to provide all authentication, 
30
30
authorization, and resource control services. Prior to the introduction of PAM, a decision
33
33
Such a choice would involve provision of alternatives to programs such as <code class="literal">login</code>, 
34
34
<code class="literal">passwd</code>, <code class="literal">chown</code>, and so on.
35
35
</p><p>
36
 
<a class="indexterm" name="id2665279"></a>
37
 
<a class="indexterm" name="id2665286"></a>
38
 
<a class="indexterm" name="id2665293"></a>
39
 
<a class="indexterm" name="id2665300"></a>
 
36
<a class="indexterm" name="id2671337"></a>
 
37
<a class="indexterm" name="id2671344"></a>
 
38
<a class="indexterm" name="id2671351"></a>
 
39
<a class="indexterm" name="id2671358"></a>
40
40
PAM provides a mechanism that disconnects these security programs from the underlying
41
41
authentication/authorization infrastructure. PAM is configured by making appropriate modifications to one file,
42
42
<code class="filename">/etc/pam.conf</code> (Solaris), or by editing individual control files that are
43
43
located in <code class="filename">/etc/pam.d</code>.
44
44
</p><p>
45
 
<a class="indexterm" name="id2665326"></a>
46
 
<a class="indexterm" name="id2665333"></a>
 
45
<a class="indexterm" name="id2671384"></a>
 
46
<a class="indexterm" name="id2671391"></a>
47
47
On PAM-enabled UNIX/Linux systems, it is an easy matter to configure the system to use any
48
48
authentication backend so long as the appropriate dynamically loadable library modules
49
49
are available for it. The backend may be local to the system or may be centralized on a
51
51
</p><p>
52
52
PAM support modules are available for:
53
53
</p><div class="variablelist"><dl><dt><span class="term"><code class="filename">/etc/passwd</code></span></dt><dd><p>
54
 
<a class="indexterm" name="id2665363"></a>
55
 
<a class="indexterm" name="id2665370"></a>
56
 
<a class="indexterm" name="id2665377"></a>
57
 
<a class="indexterm" name="id2665384"></a>
58
 
<a class="indexterm" name="id2665390"></a>
59
 
<a class="indexterm" name="id2665397"></a>
 
54
<a class="indexterm" name="id2671421"></a>
 
55
<a class="indexterm" name="id2671428"></a>
 
56
<a class="indexterm" name="id2671435"></a>
 
57
<a class="indexterm" name="id2671442"></a>
 
58
<a class="indexterm" name="id2671449"></a>
 
59
<a class="indexterm" name="id2671455"></a>
60
60
                There are several PAM modules that interact with this standard UNIX user database. The most common are called
61
61
                <code class="filename">pam_unix.so</code>, <code class="filename">pam_unix2.so</code>, <code class="filename">pam_pwdb.so</code> and
62
62
                <code class="filename">pam_userdb.so</code>.
63
63
                </p></dd><dt><span class="term">Kerberos</span></dt><dd><p>
64
 
<a class="indexterm" name="id2665440"></a>
65
 
<a class="indexterm" name="id2665447"></a>
66
 
<a class="indexterm" name="id2665453"></a>
67
 
<a class="indexterm" name="id2665460"></a>
68
 
<a class="indexterm" name="id2665467"></a>
 
64
<a class="indexterm" name="id2671498"></a>
 
65
<a class="indexterm" name="id2671505"></a>
 
66
<a class="indexterm" name="id2671512"></a>
 
67
<a class="indexterm" name="id2671518"></a>
 
68
<a class="indexterm" name="id2671525"></a>
69
69
                The <code class="filename">pam_krb5.so</code> module allows the use of any Kerberos-compliant server.
70
70
                This tool is used to access MIT Kerberos, Heimdal Kerberos, and potentially
71
71
                Microsoft Active Directory (if enabled).
72
72
                </p></dd><dt><span class="term">LDAP</span></dt><dd><p>
73
 
<a class="indexterm" name="id2665493"></a>
74
 
<a class="indexterm" name="id2665500"></a>
75
 
<a class="indexterm" name="id2665506"></a>
76
 
<a class="indexterm" name="id2665513"></a>
77
 
<a class="indexterm" name="id2665520"></a>
78
 
<a class="indexterm" name="id2665527"></a>
 
73
<a class="indexterm" name="id2671551"></a>
 
74
<a class="indexterm" name="id2671558"></a>
 
75
<a class="indexterm" name="id2671564"></a>
 
76
<a class="indexterm" name="id2671571"></a>
 
77
<a class="indexterm" name="id2671578"></a>
 
78
<a class="indexterm" name="id2671585"></a>
79
79
                The <code class="filename">pam_ldap.so</code> module allows the use of any LDAP v2- or v3-compatible backend
80
80
                server. Commonly used LDAP backend servers include OpenLDAP v2.0 and v2.1,
81
81
                Sun ONE iDentity server, Novell eDirectory server, and Microsoft Active Directory.
82
82
                </p></dd><dt><span class="term">NetWare Bindery</span></dt><dd><p>
83
 
<a class="indexterm" name="id2665554"></a>
84
 
<a class="indexterm" name="id2665561"></a>
85
 
<a class="indexterm" name="id2665568"></a>
86
 
<a class="indexterm" name="id2665575"></a>
 
83
<a class="indexterm" name="id2671612"></a>
 
84
<a class="indexterm" name="id2671619"></a>
 
85
<a class="indexterm" name="id2671626"></a>
 
86
<a class="indexterm" name="id2671633"></a>
87
87
                The <code class="filename">pam_ncp_auth.so</code> module allows authentication off any bindery-enabled
88
88
                NetWare Core Protocol-based server.
89
89
                </p></dd><dt><span class="term">SMB Password</span></dt><dd><p>
90
 
<a class="indexterm" name="id2665600"></a>
91
 
<a class="indexterm" name="id2665607"></a>
92
 
<a class="indexterm" name="id2665614"></a>
 
90
<a class="indexterm" name="id2671658"></a>
 
91
<a class="indexterm" name="id2671665"></a>
 
92
<a class="indexterm" name="id2671672"></a>
93
93
                This module, called <code class="filename">pam_smbpass.so</code>, allows user authentication of
94
94
                the passdb backend that is configured in the Samba <code class="filename">smb.conf</code> file.
95
95
                </p></dd><dt><span class="term">SMB Server</span></dt><dd><p>
96
 
<a class="indexterm" name="id2665645"></a>
97
 
<a class="indexterm" name="id2665652"></a>
 
96
<a class="indexterm" name="id2671703"></a>
 
97
<a class="indexterm" name="id2671710"></a>
98
98
                The <code class="filename">pam_smb_auth.so</code> module is the original MS Windows networking authentication
99
99
                tool. This module has been somewhat outdated by the Winbind module.
100
100
                </p></dd><dt><span class="term">Winbind</span></dt><dd><p>
101
 
<a class="indexterm" name="id2665677"></a>
102
 
<a class="indexterm" name="id2665684"></a>
103
 
<a class="indexterm" name="id2665691"></a>
104
 
<a class="indexterm" name="id2665698"></a>
 
101
<a class="indexterm" name="id2671735"></a>
 
102
<a class="indexterm" name="id2671742"></a>
 
103
<a class="indexterm" name="id2671749"></a>
 
104
<a class="indexterm" name="id2671756"></a>
105
105
                The <code class="filename">pam_winbind.so</code> module allows Samba to obtain authentication from any
106
106
                MS Windows domain controller. It can just as easily be used to authenticate
107
107
                users for access to any PAM-enabled application.
108
108
                </p></dd><dt><span class="term">RADIUS</span></dt><dd><p>
109
 
<a class="indexterm" name="id2665724"></a>
 
109
<a class="indexterm" name="id2671782"></a>
110
110
                There is a PAM RADIUS (Remote Access Dial-In User Service) authentication
111
111
                module. In most cases, administrators need to locate the source code
112
112
                for this tool and compile and install it themselves. RADIUS protocols are
113
113
                used by many routers and terminal servers.
114
114
                </p></dd></dl></div><p>
115
 
<a class="indexterm" name="id2665743"></a>
116
 
<a class="indexterm" name="id2665750"></a>
 
115
<a class="indexterm" name="id2671802"></a>
 
116
<a class="indexterm" name="id2671808"></a>
117
117
Of the modules listed, Samba provides the <code class="filename">pam_smbpasswd.so</code> and the
118
118
<code class="filename">pam_winbind.so</code> modules alone.
119
119
</p><p>
120
 
<a class="indexterm" name="id2665774"></a>
121
 
<a class="indexterm" name="id2665781"></a>
122
 
<a class="indexterm" name="id2665788"></a>
123
 
<a class="indexterm" name="id2665795"></a>
 
120
<a class="indexterm" name="id2671832"></a>
 
121
<a class="indexterm" name="id2671839"></a>
 
122
<a class="indexterm" name="id2671846"></a>
 
123
<a class="indexterm" name="id2671853"></a>
124
124
Once configured, these permit a remarkable level of flexibility in the location and use
125
125
of distributed Samba domain controllers that can provide wide-area network bandwidth,
126
126
efficient authentication services for PAM-capable systems. In effect, this allows the
127
127
deployment of centrally managed and maintained distributed authentication from a
128
128
single-user account database.
129
 
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2665810"></a>Technical Discussion</h2></div></div></div><p>
130
 
<a class="indexterm" name="id2665818"></a>
131
 
<a class="indexterm" name="id2665825"></a>
132
 
<a class="indexterm" name="id2665832"></a>
133
 
<a class="indexterm" name="id2665839"></a>
 
129
</p></div><div class="sect1" title="Technical Discussion"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2671868"></a>Technical Discussion</h2></div></div></div><p>
 
130
<a class="indexterm" name="id2671876"></a>
 
131
<a class="indexterm" name="id2671883"></a>
 
132
<a class="indexterm" name="id2671890"></a>
 
133
<a class="indexterm" name="id2671897"></a>
134
134
PAM is designed to provide system administrators with a great deal of flexibility in
135
135
configuration of the privilege-granting applications of their system. The local
136
136
configuration of system security controlled by PAM is contained in one of two places:
137
137
either the single system file <code class="filename">/etc/pam.conf</code> or the
138
138
<code class="filename">/etc/pam.d/</code> directory.
139
 
</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2665864"></a>PAM Configuration Syntax</h3></div></div></div><p>
140
 
<a class="indexterm" name="id2665872"></a>
141
 
<a class="indexterm" name="id2665879"></a>
 
139
</p><div class="sect2" title="PAM Configuration Syntax"><div class="titlepage"><div><div><h3 class="title"><a name="id2671922"></a>PAM Configuration Syntax</h3></div></div></div><p>
 
140
<a class="indexterm" name="id2671930"></a>
 
141
<a class="indexterm" name="id2671937"></a>
142
142
In this section we discuss the correct syntax of and generic options respected by entries to these files.
143
143
PAM-specific tokens in the configuration file are case insensitive. The module paths, however, are case
144
144
sensitive, since they indicate a file's name and reflect the case dependence of typical file systems.  The
145
145
case sensitivity of the arguments to any given module is defined for each module in turn.
146
146
</p><p>
147
147
In addition to the lines described below, there are two special characters provided for the convenience
148
 
of the system administrator: comments are preceded by a &#8220;<span class="quote">#</span>&#8221; and extend to the next end-of-line; also,
149
 
module specification lines may be extended with a &#8220;<span class="quote">\</span>&#8221;-escaped newline. 
 
148
of the system administrator: comments are preceded by a <span class="quote">&#8220;<span class="quote">#</span>&#8221;</span> and extend to the next end-of-line; also,
 
149
module specification lines may be extended with a <span class="quote">&#8220;<span class="quote">\</span>&#8221;</span>-escaped newline. 
150
150
</p><p>
151
 
<a class="indexterm" name="id2665910"></a>
152
 
<a class="indexterm" name="id2665917"></a>
 
151
<a class="indexterm" name="id2671968"></a>
 
152
<a class="indexterm" name="id2671975"></a>
153
153
If the PAM authentication module (loadable link library file) is located in the
154
154
default location, then it is not necessary to specify the path. In the case of
155
155
Linux, the default location is <code class="filename">/lib/security</code>. If the module
157
157
</p><pre class="programlisting">
158
158
auth  required  /other_path/pam_strange_module.so
159
159
</pre><p>
160
 
</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2665943"></a>Anatomy of <code class="filename">/etc/pam.d</code> Entries</h4></div></div></div><p>
 
160
</p><div class="sect3" title="Anatomy of /etc/pam.d Entries"><div class="titlepage"><div><div><h4 class="title"><a name="id2672001"></a>Anatomy of <code class="filename">/etc/pam.d</code> Entries</h4></div></div></div><p>
161
161
The remaining information in this subsection was taken from the documentation of the Linux-PAM
162
162
project. For more information on PAM, see 
163
163
<a class="ulink" href="http://ftp.kernel.org/pub/linux/libs/pam/" target="_top">the Official Linux-PAM home page</a>.
164
164
</p><p>
165
 
<a class="indexterm" name="id2665969"></a>
 
165
<a class="indexterm" name="id2672027"></a>
166
166
A general configuration line of the <code class="filename">/etc/pam.conf</code> file has the following form:
167
167
</p><pre class="programlisting">
168
168
service-name   module-type   control-flag   module-path   args
172
172
way of configuring Linux-PAM is via the contents of the <code class="filename">/etc/pam.d/</code> directory.
173
173
Once we have explained the meaning of the tokens, we describe this method.
174
174
</p><div class="variablelist"><dl><dt><span class="term">service-name</span></dt><dd><p>
175
 
<a class="indexterm" name="id2666014"></a>
176
 
<a class="indexterm" name="id2666021"></a>
177
 
<a class="indexterm" name="id2666027"></a>
 
175
<a class="indexterm" name="id2672072"></a>
 
176
<a class="indexterm" name="id2672079"></a>
 
177
<a class="indexterm" name="id2672086"></a>
178
178
                The name of the service associated with this entry. Frequently, the service-name is the conventional
179
179
                name of the given application  for example, <code class="literal">ftpd</code>, <code class="literal">rlogind</code> and
180
180
                <code class="literal">su</code>, and so on.
185
185
                entries are ignored.
186
186
                </p></dd><dt><span class="term">module-type</span></dt><dd><p>
187
187
                One of (currently) four types of module. The four types are as follows:
188
 
                </p><div class="itemizedlist"><ul type="disc"><li><p>
189
 
<a class="indexterm" name="id2666095"></a>
190
 
<a class="indexterm" name="id2666102"></a>
 
188
                </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
 
189
<a class="indexterm" name="id2672154"></a>
 
190
<a class="indexterm" name="id2672160"></a>
191
191
                        <em class="parameter"><code>auth:</code></em> This module type provides two aspects of authenticating the user.
192
192
                        It establishes that the user is who he or she claims to be by instructing the application
193
193
                        to prompt the user for a password or other means of identification. Second, the module can
194
194
                        grant group membership (independently of the <code class="filename">/etc/groups</code> file)
195
195
                        or other privileges through its credential-granting properties.
196
 
                        </p></li><li><p>
197
 
<a class="indexterm" name="id2666131"></a>
198
 
<a class="indexterm" name="id2666138"></a>
 
196
                        </p></li><li class="listitem"><p>
 
197
<a class="indexterm" name="id2672190"></a>
 
198
<a class="indexterm" name="id2672196"></a>
199
199
                        <em class="parameter"><code>account:</code></em> This module performs non-authentication-based account management.
200
200
                        It is typically used to restrict/permit access to a service based on the time of day, currently
201
201
                        available system resources (maximum number of users), or perhaps the location of the user 
202
 
                        login. For example, the &#8220;<span class="quote">root</span>&#8221; login may be permitted only on the console.
203
 
                        </p></li><li><p>
204
 
<a class="indexterm" name="id2666165"></a>
 
202
                        login. For example, the <span class="quote">&#8220;<span class="quote">root</span>&#8221;</span> login may be permitted only on the console.
 
203
                        </p></li><li class="listitem"><p>
 
204
<a class="indexterm" name="id2672223"></a>
205
205
                        <em class="parameter"><code>session:</code></em> Primarily, this module is associated with doing things that need
206
206
                        to be done for the user before and after he or she can be given service. Such things include logging
207
207
                        information concerning the opening and closing of some data exchange with a user, mounting
208
208
                        directories, and so on.
209
 
                        </p></li><li><p>
210
 
<a class="indexterm" name="id2666192"></a>
 
209
                        </p></li><li class="listitem"><p>
 
210
<a class="indexterm" name="id2672245"></a>
211
211
                        <em class="parameter"><code>password:</code></em> This last module type is required for updating the authentication
212
212
                        token associated with the user. Typically, there is one module for each
213
 
                        &#8220;<span class="quote">challenge/response</span>&#8221; authentication <em class="parameter"><code>(auth)</code></em> module type.
 
213
                        <span class="quote">&#8220;<span class="quote">challenge/response</span>&#8221;</span> authentication <em class="parameter"><code>(auth)</code></em> module type.
214
214
                        </p></li></ul></div></dd><dt><span class="term">control-flag</span></dt><dd><p>
215
215
                The control-flag is used to indicate how the PAM library will react to the success or failure of the
216
216
                module it is associated with. Since modules can be stacked (modules of the same type execute in series,
221
221
                <code class="filename">/etc/pam.conf</code> file; earlier entries are executed before later ones.
222
222
                As of Linux-PAM v0.60, this control-flag can be defined with one of two syntaxes.
223
223
                </p><p>
224
 
<a class="indexterm" name="id2666256"></a>
225
 
<a class="indexterm" name="id2666263"></a>
226
 
<a class="indexterm" name="id2666270"></a>
227
 
<a class="indexterm" name="id2666277"></a>
 
224
<a class="indexterm" name="id2672309"></a>
 
225
<a class="indexterm" name="id2672316"></a>
 
226
<a class="indexterm" name="id2672323"></a>
 
227
<a class="indexterm" name="id2672330"></a>
228
228
                The simpler (and historical) syntax for the control-flag is a single keyword defined to indicate the
229
229
                severity of concern associated with the success or failure of a specific module. There are four such
230
230
                keywords: <em class="parameter"><code>required</code></em>, <em class="parameter"><code>requisite</code></em>,
231
231
                <em class="parameter"><code>sufficient</code></em>, and <em class="parameter"><code>optional</code></em>.
232
232
                </p><p>
233
233
                The Linux-PAM library interprets these keywords in the following manner:
234
 
                </p><div class="itemizedlist"><ul type="disc"><li><p>
 
234
                </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
235
235
                        <em class="parameter"><code>required:</code></em> This indicates that the success of the module is required for the
236
236
                        module-type facility to succeed. Failure of this module will not be apparent to the user until all
237
237
                        of the remaining modules (of the same module-type) have been executed.
238
 
                        </p></li><li><p>
 
238
                        </p></li><li class="listitem"><p>
239
239
                        <em class="parameter"><code>requisite:</code></em> Like required, except that if such a module returns a
240
240
                        failure, control is directly returned to the application. The return value is that associated with
241
241
                        the first required or requisite module to fail. This flag can be used to protect against the
243
243
                        conceivable that such behavior might inform an attacker of valid accounts on a system. This
244
244
                        possibility should be weighed against the not insignificant concerns of exposing a sensitive
245
245
                        password in a hostile environment.
246
 
                        </p></li><li><p>
 
246
                        </p></li><li class="listitem"><p>
247
247
                        <em class="parameter"><code>sufficient:</code></em> The success of this module is deemed <em class="parameter"><code>sufficient</code></em> to satisfy
248
248
                        the Linux-PAM library that this module-type has succeeded in its purpose. In the event that no
249
 
                        previous required module has failed, no more &#8220;<span class="quote">stacked</span>&#8221; modules of this type are invoked.
 
249
                        previous required module has failed, no more <span class="quote">&#8220;<span class="quote">stacked</span>&#8221;</span> modules of this type are invoked.
250
250
                        (In this case, subsequent required modules are not invoked). A failure of this module is not deemed
251
251
                        as fatal to satisfying the application that this module-type has succeeded.
252
 
                        </p></li><li><p>
 
252
                        </p></li><li class="listitem"><p>
253
253
            <em class="parameter"><code>optional:</code></em> As its name suggests, this control-flag marks the module as not
254
254
                        being critical to the success or failure of the user's application for service. In general,
255
255
                        Linux-PAM ignores such a module when determining if the module stack will succeed or fail.
283
283
                current module-type will be skipped. In this way, the administrator can develop a moderately sophisticated
284
284
                stack of modules with a number of different paths of execution. Which path is taken can be determined by the
285
285
                reactions of individual modules.
286
 
                </p><div class="itemizedlist"><ul type="disc"><li><p>
 
286
                </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
287
287
                        <em class="parameter"><code>ignore:</code></em> When used with a stack of modules, the module's return status will not
288
288
                        contribute to the return code the application obtains.
289
 
                        </p></li><li><p>
 
289
                        </p></li><li class="listitem"><p>
290
290
            <em class="parameter"><code>bad:</code></em> This action indicates that the return code should be thought of as indicative
291
291
                        of the module failing. If this module is the first in the stack to fail, its status value will be used
292
292
                        for that of the whole stack.
293
 
                        </p></li><li><p>
 
293
                        </p></li><li class="listitem"><p>
294
294
            <em class="parameter"><code>die:</code></em> Equivalent to bad with the side effect of terminating the module stack and
295
295
                        PAM immediately returning to the application.
296
 
                        </p></li><li><p>
 
296
                        </p></li><li class="listitem"><p>
297
297
           <em class="parameter"><code>ok:</code></em> This tells PAM that the administrator thinks this return code should
298
298
                        contribute directly to the return code of the full stack of modules. In other words, if the former
299
299
                        state of the stack would lead to a return of PAM_SUCCESS, the module's return code will override
300
300
                        this value. Note, if the former state of the stack holds some value that is indicative of a module's
301
301
                        failure, this <em class="parameter"><code>ok</code></em> value will not be used to override that value.
302
 
                        </p></li><li><p>
 
302
                        </p></li><li class="listitem"><p>
303
303
            <em class="parameter"><code>done:</code></em> Equivalent to <em class="parameter"><code>ok</code></em> with the side effect of terminating the module stack and
304
304
                        PAM immediately returning to the application.
305
 
                        </p></li><li><p>
 
305
                        </p></li><li class="listitem"><p>
306
306
           <em class="parameter"><code>reset:</code></em> Clears all memory of the state of the module stack and starts again with
307
307
                        the next stacked module.
308
308
                        </p></li></ul></div><p>
310
310
                <em class="parameter"><code>sufficient</code></em>; and <em class="parameter"><code>optional</code></em>, have an equivalent expression in terms
311
311
                of the [...] syntax. They are as follows:
312
312
                </p><p>
313
 
                </p><div class="itemizedlist"><ul type="disc"><li><p>
 
313
                </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
314
314
                        <em class="parameter"><code>required</code></em> is equivalent to <em class="parameter"><code>[success=ok new_authtok_reqd=ok ignore=ignore default=bad]</code></em>.
315
 
                        </p></li><li><p>
 
315
                        </p></li><li class="listitem"><p>
316
316
                        <em class="parameter"><code>requisite</code></em> is equivalent to <em class="parameter"><code>[success=ok new_authtok_reqd=ok ignore=ignore default=die]</code></em>.
317
 
                        </p></li><li><p>
 
317
                        </p></li><li class="listitem"><p>
318
318
                        <em class="parameter"><code>sufficient</code></em> is equivalent to <em class="parameter"><code>[success=done  new_authtok_reqd=done  default=ignore]</code></em>.
319
 
                        </p></li><li><p>
 
319
                        </p></li><li class="listitem"><p>
320
320
                        <em class="parameter"><code>optional</code></em> is equivalent to <em class="parameter"><code>[success=ok new_authtok_reqd=ok default=ignore]</code></em>.
321
321
                        </p></li></ul></div><p>
322
322
                </p><p>
328
328
                mode for legacy applications.
329
329
                </p></dd><dt><span class="term">module-path</span></dt><dd><p>
330
330
                The pathname of the dynamically loadable object file; the pluggable module itself. If the first character of the
331
 
                module path is &#8220;<span class="quote">/</span>&#8221;, it is assumed to be a complete path. If this is not the case, the given module path is appended
 
331
                module path is <span class="quote">&#8220;<span class="quote">/</span>&#8221;</span>, it is assumed to be a complete path. If this is not the case, the given module path is appended
332
332
                to the default module path: <code class="filename">/lib/security</code> (but see the previous notes).
333
333
                </p><p>
334
334
                The arguments are a list of tokens that are passed to the module when it is invoked, much like arguments to a typical
340
340
                </p><pre class="programlisting">
341
341
squid auth required pam_mysql.so user=passwd_query passwd=mada \
342
342
db=eminence [query=select user_name from internet_service where \
343
 
user_name=&#8220;<span class="quote">%u</span>&#8221; and password=PASSWORD(&#8220;<span class="quote">%p</span>&#8221;) and service=&#8220;<span class="quote">web_proxy</span>&#8221;]
 
343
user_name=<span class="quote">&#8220;<span class="quote">%u</span>&#8221;</span> and password=PASSWORD(<span class="quote">&#8220;<span class="quote">%p</span>&#8221;</span>) and service=<span class="quote">&#8220;<span class="quote">web_proxy</span>&#8221;</span>]
344
344
</pre><p>
345
 
                When using this convention, you can include &#8220;<span class="quote">[</span>&#8221; characters inside the string, and if you wish to have a &#8220;<span class="quote">]</span>&#8221;
346
 
                character inside the string that will survive the argument parsing, you should use &#8220;<span class="quote">\[</span>&#8221;. In other words,
 
345
                When using this convention, you can include <span class="quote">&#8220;<span class="quote">[</span>&#8221;</span> characters inside the string, and if you wish to have a <span class="quote">&#8220;<span class="quote">]</span>&#8221;</span>
 
346
                character inside the string that will survive the argument parsing, you should use <span class="quote">&#8220;<span class="quote">\[</span>&#8221;</span>. In other words,
347
347
                </p><pre class="programlisting">
348
348
[..[..\]..]    --&gt;   ..[..]..
349
349
</pre><p>
350
350
                Any line in one of the configuration files that is not formatted correctly will generally tend (erring on the
351
351
                side of caution) to make the authentication process fail. A corresponding error is written to the system log files
352
352
                with a call to syslog(3). 
353
 
                </p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2666875"></a>Example System Configurations</h3></div></div></div><p>
 
353
                </p></dd></dl></div></div></div><div class="sect2" title="Example System Configurations"><div class="titlepage"><div><div><h3 class="title"><a name="id2672928"></a>Example System Configurations</h3></div></div></div><p>
354
354
The following is an example <code class="filename">/etc/pam.d/login</code> configuration file. 
355
355
This example had all options uncommented and is probably not usable 
356
356
because it stacks many conditions before allowing successful completion 
357
357
of the login process. Essentially, all conditions can be disabled 
358
358
by commenting them out, except the calls to <code class="filename">pam_pwdb.so</code>.
359
 
</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2666901"></a>PAM: Original Login Config</h4></div></div></div><p>
 
359
</p><div class="sect3" title="PAM: Original Login Config"><div class="titlepage"><div><div><h4 class="title"><a name="id2672954"></a>PAM: Original Login Config</h4></div></div></div><p>
360
360
        </p><pre class="programlisting">
361
361
#%PAM-1.0
362
 
# The PAM configuration file for the &#8220;<span class="quote">login</span>&#8221; service
 
362
# The PAM configuration file for the <span class="quote">&#8220;<span class="quote">login</span>&#8221;</span> service
363
363
#
364
364
auth         required    pam_securetty.so
365
365
auth         required    pam_nologin.so
373
373
# password   required    pam_cracklib.so retry=3
374
374
password     required    pam_pwdb.so shadow md5
375
375
</pre><p>
376
 
</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2666929"></a>PAM: Login Using <code class="filename">pam_smbpass</code></h4></div></div></div><p>
 
376
</p></div><div class="sect3" title="PAM: Login Using pam_smbpass"><div class="titlepage"><div><div><h4 class="title"><a name="id2672982"></a>PAM: Login Using <code class="filename">pam_smbpass</code></h4></div></div></div><p>
377
377
PAM allows use of replaceable modules. Those available on a sample system include:
378
378
</p><p><code class="prompt">$</code><strong class="userinput"><code>/bin/ls /lib/security</code></strong>
379
379
</p><pre class="programlisting">
411
411
</p><p>
412
412
        </p><pre class="programlisting">
413
413
#%PAM-1.0
414
 
# The PAM configuration file for the &#8220;<span class="quote">login</span>&#8221; service
 
414
# The PAM configuration file for the <span class="quote">&#8220;<span class="quote">login</span>&#8221;</span> service
415
415
#
416
416
auth        required    pam_smbpass.so nodelay
417
417
account     required    pam_smbpass.so nodelay
423
423
</p><p>
424
424
        </p><pre class="programlisting">
425
425
#%PAM-1.0
426
 
# The PAM configuration file for the &#8220;<span class="quote">samba</span>&#8221; service
 
426
# The PAM configuration file for the <span class="quote">&#8220;<span class="quote">samba</span>&#8221;</span> service
427
427
#
428
428
auth       required     pam_pwdb.so nullok nodelay shadow audit
429
429
account    required     pam_pwdb.so audit nodelay
438
438
</p><p>
439
439
                </p><pre class="programlisting">
440
440
#%PAM-1.0
441
 
# The PAM configuration file for the &#8220;<span class="quote">samba</span>&#8221; service
 
441
# The PAM configuration file for the <span class="quote">&#8220;<span class="quote">samba</span>&#8221;</span> service
442
442
#
443
443
auth       required     pam_smbpass.so nodelay
444
444
account    required     pam_pwdb.so audit nodelay
445
445
session    required     pam_pwdb.so nodelay
446
446
password   required     pam_smbpass.so nodelay smbconf=/etc/samba.d/smb.conf
447
447
</pre><p>
448
 
</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>PAM allows stacking of authentication mechanisms. It is 
 
448
</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>PAM allows stacking of authentication mechanisms. It is 
449
449
also possible to pass information obtained within one PAM module through 
450
450
to the next module in the PAM stack. Please refer to the documentation for 
451
451
your particular system implementation for details regarding the specific 
456
456
on the basis that it allows for easier administration. As with all issues in 
457
457
life, though, every decision has trade-offs, so you may want to examine the 
458
458
PAM documentation for further helpful information.
459
 
</p></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2667181"></a><code class="filename">smb.conf</code> PAM Configuration</h3></div></div></div><p>
 
459
</p></div></div></div><div class="sect2" title="smb.conf PAM Configuration"><div class="titlepage"><div><div><h3 class="title"><a name="id2673234"></a><code class="filename">smb.conf</code> PAM Configuration</h3></div></div></div><p>
460
460
There is an option in <code class="filename">smb.conf</code> called <a class="link" href="smb.conf.5.html#OBEYPAMRESTRICTIONS" target="_top">obey pam restrictions</a>.
461
461
The following is from the online help for this option in SWAT:
462
462
</p><div class="blockquote"><blockquote class="blockquote"><p>
466
466
ignores PAM for authentication in the case of <a class="link" href="smb.conf.5.html#ENCRYPTPASSWORDS" target="_top">encrypt passwords = yes</a>. 
467
467
The reason is that PAM modules cannot support the challenge/response authentication mechanism needed in the presence of SMB 
468
468
password encryption. 
469
 
</p><p>Default: <a class="link" href="smb.conf.5.html#OBEYPAMRESTRICTIONS" target="_top">obey pam restrictions = no</a></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2667262"></a>Remote CIFS Authentication Using <code class="filename">winbindd.so</code></h3></div></div></div><p>
 
469
</p><p>Default: <a class="link" href="smb.conf.5.html#OBEYPAMRESTRICTIONS" target="_top">obey pam restrictions = no</a></p></blockquote></div></div><div class="sect2" title="Remote CIFS Authentication Using winbindd.so"><div class="titlepage"><div><div><h3 class="title"><a name="id2673315"></a>Remote CIFS Authentication Using <code class="filename">winbindd.so</code></h3></div></div></div><p>
470
470
All operating systems depend on the provision of user credentials acceptable to the platform.
471
471
UNIX requires the provision of a user identifier (UID) as well as a group identifier (GID).
472
472
These are both simple integer numbers that are obtained from a password backend such
489
489
database that can also be used by all PAM-aware (e.g., Linux) programs and applications. This arrangement can have
490
490
particularly potent advantages compared with the use of Microsoft Active Directory Service (ADS) insofar as
491
491
the reduction of wide-area network authentication traffic.
492
 
</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>
 
492
</p><div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>
493
493
The RID to UNIX ID database is the only location where the user and group  mappings are 
494
494
stored by <code class="literal">winbindd</code>. If this file is deleted or corrupted, there is no way for <code class="literal">winbindd</code>
495
495
to determine which user and group IDs correspond to Windows NT user and group RIDs.
496
 
</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2667365"></a>Password Synchronization Using <code class="filename">pam_smbpass.so</code></h3></div></div></div><p>
 
496
</p></div></div><div class="sect2" title="Password Synchronization Using pam_smbpass.so"><div class="titlepage"><div><div><h3 class="title"><a name="id2673418"></a>Password Synchronization Using <code class="filename">pam_smbpass.so</code></h3></div></div></div><p>
497
497
<code class="filename">pam_smbpass</code> is a PAM module that can be used on conforming systems to
498
498
keep the <code class="filename">smbpasswd</code> (Samba password) database in sync with the UNIX
499
499
password file. PAM is an API supported
506
506
recommended that you use <code class="filename">pam_winbind</code> instead.
507
507
</p><p>
508
508
Options recognized by this module are shown in <a class="link" href="pam.html#smbpassoptions" title="Table�28.1.�Options recognized by pam_smbpass">next table</a>.
509
 
</p><div class="table"><a name="smbpassoptions"></a><p class="title"><b>Table�28.1.�Options recognized by <em class="parameter"><code>pam_smbpass</code></em></b></p><div class="table-contents"><table summary="Options recognized by pam_smbpass" border="1"><colgroup><col align="left"><col align="justify"></colgroup><tbody><tr><td align="left">debug</td><td align="justify">Log more debugging info.</td></tr><tr><td align="left">audit</td><td align="justify">Like debug, but also logs unknown usernames.</td></tr><tr><td align="left">use_first_pass</td><td align="justify">Do not prompt the user for passwords; take them from PAM_ items instead.</td></tr><tr><td align="left">try_first_pass</td><td align="justify">Try to get the password from a previous PAM module; fall back to prompting the user.</td></tr><tr><td align="left">use_authtok</td><td align="justify">Like try_first_pass, but *fail* if the new PAM_AUTHTOK has not been previously set (intended for stacking password modules only).</td></tr><tr><td align="left">not_set_pass</td><td align="justify">Do not make passwords used by this module available to other modules.</td></tr><tr><td align="left">nodelay</td><td align="justify">dDo not insert ~1-second delays on authentication failure.</td></tr><tr><td align="left">nullok</td><td align="justify">Null passwords are allowed.</td></tr><tr><td align="left">nonull</td><td align="justify">Null passwords are not allowed. Used to override the Samba configuration.</td></tr><tr><td align="left">migrate</td><td align="justify">Only meaningful in an &#8220;<span class="quote">auth</span>&#8221; context; used to update smbpasswd file with a password used for successful authentication.</td></tr><tr><td align="left">smbconf=<em class="replaceable"><code>file</code></em></td><td align="justify">Specify an alternate path to the <code class="filename">smb.conf</code> file.</td></tr></tbody></table></div></div><p><br class="table-break">
 
509
</p><div class="table"><a name="smbpassoptions"></a><p class="title"><b>Table�28.1.�Options recognized by <em class="parameter"><code>pam_smbpass</code></em></b></p><div class="table-contents"><table summary="Options recognized by pam_smbpass" border="1"><colgroup><col align="left"><col align="justify"></colgroup><tbody><tr><td align="left">debug</td><td align="justify">Log more debugging info.</td></tr><tr><td align="left">audit</td><td align="justify">Like debug, but also logs unknown usernames.</td></tr><tr><td align="left">use_first_pass</td><td align="justify">Do not prompt the user for passwords; take them from PAM_ items instead.</td></tr><tr><td align="left">try_first_pass</td><td align="justify">Try to get the password from a previous PAM module; fall back to prompting the user.</td></tr><tr><td align="left">use_authtok</td><td align="justify">Like try_first_pass, but *fail* if the new PAM_AUTHTOK has not been previously set (intended for stacking password modules only).</td></tr><tr><td align="left">not_set_pass</td><td align="justify">Do not make passwords used by this module available to other modules.</td></tr><tr><td align="left">nodelay</td><td align="justify">dDo not insert ~1-second delays on authentication failure.</td></tr><tr><td align="left">nullok</td><td align="justify">Null passwords are allowed.</td></tr><tr><td align="left">nonull</td><td align="justify">Null passwords are not allowed. Used to override the Samba configuration.</td></tr><tr><td align="left">migrate</td><td align="justify">Only meaningful in an <span class="quote">&#8220;<span class="quote">auth</span>&#8221;</span> context; used to update smbpasswd file with a password used for successful authentication.</td></tr><tr><td align="left">smbconf=<em class="replaceable"><code>file</code></em></td><td align="justify">Specify an alternate path to the <code class="filename">smb.conf</code> file.</td></tr></tbody></table></div></div><p><br class="table-break">
510
510
</p><p>
511
511
The following are examples of the use of <code class="filename">pam_smbpass.so</code> in the format of the Linux
512
512
<code class="filename">/etc/pam.d/</code> files structure. Those wishing to implement this
513
513
tool on other platforms will need to adapt this appropriately.
514
 
</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2667584"></a>Password Synchronization Configuration</h4></div></div></div><p>
 
514
</p><div class="sect3" title="Password Synchronization Configuration"><div class="titlepage"><div><div><h4 class="title"><a name="id2673638"></a>Password Synchronization Configuration</h4></div></div></div><p>
515
515
The following is a sample PAM configuration that shows the use of pam_smbpass to make
516
516
sure <code class="filename">private/smbpasswd</code> is kept in sync when <code class="filename">/etc/passwd (/etc/shadow)</code>
517
517
is changed. It is useful when an expired password might be changed by an
528
528
password   requisite    pam_unix.so shadow md5 use_authtok try_first_pass
529
529
password   required     pam_smbpass.so nullok use_authtok try_first_pass
530
530
session    required     pam_unix.so
531
 
</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2667630"></a>Password Migration Configuration</h4></div></div></div><p>
 
531
</pre></div><div class="sect3" title="Password Migration Configuration"><div class="titlepage"><div><div><h4 class="title"><a name="id2673683"></a>Password Migration Configuration</h4></div></div></div><p>
532
532
The following PAM configuration shows the use of <code class="filename">pam_smbpass</code> to migrate
533
533
from plaintext to encrypted passwords for Samba. Unlike other methods,
534
534
this can be used for users who have never connected to Samba shares:
548
548
password   requisite   pam_unix.so shadow md5 use_authtok try_first_pass
549
549
password   optional    pam_smbpass.so nullok use_authtok try_first_pass
550
550
session    required    pam_unix.so
551
 
</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2667678"></a>Mature Password Configuration</h4></div></div></div><p>
 
551
</pre></div><div class="sect3" title="Mature Password Configuration"><div class="titlepage"><div><div><h4 class="title"><a name="id2673732"></a>Mature Password Configuration</h4></div></div></div><p>
552
552
The following is a sample PAM configuration for a mature <code class="filename">smbpasswd</code> installation.
553
553
<code class="filename">private/smbpasswd</code> is fully populated, and we consider it an error if
554
554
the SMB password does not exist or does not match the UNIX password.
564
564
password   requisite    pam_unix.so shadow md5 use_authtok try_first_pass
565
565
password   required     pam_smbpass.so use_authtok use_first_pass
566
566
session    required     pam_unix.so
567
 
</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2667718"></a>Kerberos Password Integration Configuration</h4></div></div></div><p>
 
567
</pre></div><div class="sect3" title="Kerberos Password Integration Configuration"><div class="titlepage"><div><div><h4 class="title"><a name="id2673771"></a>Kerberos Password Integration Configuration</h4></div></div></div><p>
568
568
The following is a sample PAM configuration that shows <em class="parameter"><code>pam_smbpass</code></em> used together with
569
569
<em class="parameter"><code>pam_krb5</code></em>. This could be useful on a Samba PDC that is also a member of
570
570
a Kerberos realm.
581
581
password   optional    pam_smbpass.so nullok use_authtok try_first_pass
582
582
password   required    pam_krb5.so use_authtok try_first_pass
583
583
session    required    pam_krb5.so
584
 
</pre></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2667759"></a>Common Errors</h2></div></div></div><p>
 
584
</pre></div></div></div><div class="sect1" title="Common Errors"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2673812"></a>Common Errors</h2></div></div></div><p>
585
585
PAM can be fickle and sensitive to configuration glitches. Here we look at a few cases from
586
586
the Samba mailing list.
587
 
</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2667770"></a>pam_winbind Problem</h3></div></div></div><p>
 
587
</p><div class="sect2" title="pam_winbind Problem"><div class="titlepage"><div><div><h3 class="title"><a name="id2673824"></a>pam_winbind Problem</h3></div></div></div><p>
588
588
        A user reported, <span class="emphasis"><em>I have the following PAM configuration</em></span>:
589
589
        </p><p>
590
590
</p><pre class="programlisting">
598
598
password required /lib/security/pam_stack.so service=system-auth
599
599
</pre><p>
600
600
</p><p>
601
 
        <span class="emphasis"><em>When I open a new console with [ctrl][alt][F1], I can't log in with my user &#8220;<span class="quote">pitie.</span>&#8221;
602
 
        I have tried with user &#8220;<span class="quote">scienceu\pitie</span>&#8221; also.</em></span>
 
601
        <span class="emphasis"><em>When I open a new console with [ctrl][alt][F1], I can't log in with my user <span class="quote">&#8220;<span class="quote">pitie.</span>&#8221;</span>
 
602
        I have tried with user <span class="quote">&#8220;<span class="quote">scienceu\pitie</span>&#8221;</span> also.</em></span>
603
603
        </p><p>
604
604
        The problem may lie with the inclusion of <em class="parameter"><code>pam_stack.so
605
605
        service=system-auth</code></em>. That file often contains a lot of stuff that may
608
608
        <code class="filename">/etc/pam.d/system-auth</code> and copy only what you need from it into your
609
609
        <code class="filename">/etc/pam.d/login</code> file. Alternatively, if you want all services to use
610
610
        Winbind, you can put the Winbind-specific stuff in <code class="filename">/etc/pam.d/system-auth</code>.
611
 
        </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2667868"></a>Winbind Is Not Resolving Users and Groups</h3></div></div></div><p>
612
 
        &#8220;<span class="quote">
 
611
        </p></div><div class="sect2" title="Winbind Is Not Resolving Users and Groups"><div class="titlepage"><div><div><h3 class="title"><a name="id2673922"></a>Winbind Is Not Resolving Users and Groups</h3></div></div></div><p>
 
612
        <span class="quote">&#8220;<span class="quote">
613
613
        My <code class="filename">smb.conf</code> file is correctly configured. I have specified 
614
614
        <a class="link" href="smb.conf.5.html#IDMAPUID" target="_top">idmap uid = 12000</a> 
615
615
        and <a class="link" href="smb.conf.5.html#IDMAPGID" target="_top">idmap gid = 3000-3500,</a>
616
616
        and <code class="literal">winbind</code> is running. When I do the following it all works fine.
617
 
        </span>&#8221;
 
617
        </span>&#8221;</span>
618
618
        </p><pre class="screen">
619
619
<code class="prompt">root# </code><strong class="userinput"><code>wbinfo -u</code></strong>
620
620
MIDEARTH\maryo
636
636
...
637
637
maryo:x:15000:15003:Mary Orville:/home/MIDEARTH/maryo:/bin/false
638
638
</pre><p>
639
 
        &#8220;<span class="quote">
 
639
        <span class="quote">&#8220;<span class="quote">
640
640
        But this command fails:
641
 
        </span>&#8221;
 
641
        </span>&#8221;</span>
642
642
</p><pre class="screen">
643
643
<code class="prompt">root# </code><strong class="userinput"><code>chown maryo a_file</code></strong>
644
644
chown: 'maryo': invalid user
645
645
</pre><p>
646
 
        &#8220;<span class="quote">This is driving me nuts! What can be wrong?</span>&#8221;
 
646
        <span class="quote">&#8220;<span class="quote">This is driving me nuts! What can be wrong?</span>&#8221;</span>
647
647
        </p><p>
648
648
        Your system is likely running <code class="literal">nscd</code>, the name service
649
649
        caching daemon. Shut it down, do not restart it! You will find your problem resolved.