See, I really can write documentation when I put my mind to it...
authorAndrew Bartlett <abartlet@samba.org>
Sat, 25 Sep 2004 00:20:54 +0000 (00:20 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 25 Sep 2004 00:20:54 +0000 (00:20 +0000)
This updates the ntlm_auth manpage to detail some of the new helper
prototcols, and updates the winbind manpage to reflect some of the
changes over it's life.

Jelmer - you might want to look over this, and check if it's all
really valid docbook, but 'make manapges' works for me.

Andrew Bartlett

manpages/ntlm_auth.1.xml
manpages/winbindd.8.xml

index 61fcaa8408dfefb39320fc23db91c92bcd373abd..ae03fd35d99188136b6d0aaa69bb5937a574c597 100644 (file)
@@ -35,7 +35,8 @@
        users using NT/LM authentication. It returns 0 if the users is authenticated
        successfully and 1 if access was denied. ntlm_auth uses winbind to access 
        the user and authentication data for a domain.  This utility 
-       is only indended to be used by other programs (currently squid).
+       is only indended to be used by other programs (currently
+       Squid).
        </para>
 </refsect1>
 
                 <filename>winbindd_privileged</filename> in
                <filename>$LOCKDIR</filename>.  The protocol used is
                described here: <ulink
-               url="http://devel.squid-cache.org/ntlm/squid_helper_protocol.html">http://devel.squid-cache.org/ntlm/squid_helper_protocol.html</ulink>
+               url="http://devel.squid-cache.org/ntlm/squid_helper_protocol.html">http://devel.squid-cache.org/ntlm/squid_helper_protocol.html</ulink>.
+               This protocol has been extended to allow the
+               NTLMSSP Negotiate packet to be included as an argument
+               to the <command>YR</command> command. (Thus avoiding
+               loss of information in the protocol exchange).
                 </para>
                 </listitem>
              </varlistentry>
                 </para>
                 </listitem>
                </varlistentry>
+
+               <varlistentry>
+                               <term>ntlm-server-1</term>
+               <listitem><para>
+                Server-side helper protocol, intended for use by a
+               RADIUS server or the 'winbind' plugin for pppd, for
+               the provision of MSCHAP and MSCHAPv2 authentication.  
+                </para>
+               <para>This protocol consists of lines in for form:
+                <command>Parameter: value</command> and <command>Paramter::
+                Base64-encode value</command>.  The presence of a single
+                period <command>.</command> indicates that one side has
+                finished supplying data to the other.  (Which in turn
+                could cause the helper to authenticate the
+                user). </para>
+
+               <para>Curently implemented parameters from the
+               external program to the helper are:</para>
+               <variablelist>
+                 <varlistentry>
+                 <term>Username</term>
+                 
+                <listitem><para>The username, expected to be in
+                Samba's <smbconfoption><name>unix charset</name></smbconfoption>.
+                </para>
+
+                     <para><example>Username: bob</example></para>
+                     <para><example>Username:: Ym9i</example></para>
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>Username</term>
+                <listitem><para>The user's domain, expected to be in
+                Samba's <smbconfoption><name>unix charset</name></smbconfoption>.
+                </para>
+
+                     <para><example>Domain: WORKGROUP</example></para>
+                     <para><example>Domain:: V09SS0dST1VQ</example></para>
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>Full-Username</term>
+                <listitem><para>The fully qualified username, expected to be in
+                Samba's <smbconfoption><name>unix
+                charset</name></smbconfoption> and qualified with the
+                <smbconfoption><name>winbind separator</name></smbconfoption>.
+                </para>
+
+                     <para><example>Full-Username: WORKGROUP\bob</example></para>
+                     <para><example>Full-Username:: V09SS0dST1VQYm9i</example></para>
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>LANMAN-Challenge</term>
+                 
+                <listitem><para>The 8 byte <command>LANMAN Challenge</command> value,
+                generated randomly by the server, or (in cases such as
+                MSCHAPv2) generated in some way by both the server and
+                the client.
+                </para>        
+                     <para><example>LANMAN-Challege: 0102030405060708</example></para>
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>LANMAN-Response</term>
+                 
+                <listitem><para>The 24 byte <command>LANMAN Response</command> value,
+                calculated from the user's password and the supplied
+                <command>LANMAN Challenge</command>.  Typically, this
+                is provided over the network by a client wishing to authenticate.
+                </para>        
+                     <para><example>LANMAN-Response: 010203040506070809101112131415161718192021222324</example></para>
+
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>NT-Response</term>
+                <listitem><para>The >= 24 byte <command>NT Response</command>
+                calculated from the user's password and the supplied
+                <command>LANMAN Challenge</command>.  Typically, this is 
+                provided over the network by a client wishing to authenticate.
+                 </para>       
+                     <para><example>NT-Response: 010203040506070809101112131415161718192021222324</example></para>
+
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>Password</term>
+                <listitem><para>The user's password.  This would be
+                provided by a network client, if the helper is being
+                used in a legacy situation that exposes plaintext
+                passwords in this way.
+                 </para>       
+                     <para><example>Password: samba2</example></para>
+                     <para><example>Password:: c2FtYmEy</example></para>
+
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>Request-User-Session-Key</term>
+                <listitem><para>Apon sucessful authenticaiton, return
+                the user session key associated with the login.
+                 </para>       
+                     <para><example>Request-User-Session-Key: Yes</example></para>
+
+                   </listitem></varlistentry>
+
+                 <varlistentry>
+                 <term>Request-LanMan-Session-Key</term>
+                <listitem><para>Apon sucessful authenticaiton, return
+                the LANMAN session key associated with the login.
+                 </para>       
+                     <para><example>Request-LanMan-Session-Key: Yes</example></para>
+
+                   </listitem></varlistentry>
+
+               <para><warning>Implementors should take care to base64 encode
+               any data (such as usernames/passwords) that may contain malicous user data, such as
+               a newline.  They may also need to decode strings from
+               the helper, which likewise may have been base64 encoded.</warning></para>
+       </variablelist>
+
+                </listitem>
+               </varlistentry>
        </variablelist>
        </listitem>
       </varlistentry>
        <term>--password=PASSWORD</term>
        <listitem><para>User's plaintext password</para><para>If 
        not specified on the command line, this is prompted for when
-       required.  </para></listitem>
+       required.  </para>
+
+         <para>For the NTLMSSP based server roles, this paramter
+         specifies the expected password, allowing testing without
+         winbindd operational.</para>
+       </listitem>
        </varlistentry>
 
        <varlistentry>
index 9f552661de35c3c7b2bb4b881057fe251738affc..e027428d1664a52a9fa2df14efcc35c0a54420f1 100644 (file)
        <manvolnum>7</manvolnum></citerefentry> suite.</para>
 
        <para><command>winbindd</command> is a daemon that provides 
-       a service for the Name Service Switch capability that is present 
-       in most modern C libraries.  The Name Service Switch allows user 
+       a number of services to the Name Service Switch capability found
+       in most modern C libraries, to arbitary applications via PAM
+       and <program>ntlm_auth</program> and to Samba itself.</para>
+
+    <para>Even if winbind is not used for nsswitch, it still provides a
+    service to <program>smbd</program>, ntlm_auth and the PAM modules, by managing connections to
+    domain controllers.  In this configuraiton the
+    <smbconfoption><name>idmap uid</name></smbconfoption> and
+    <smbconfoption><name>idmap gid</name></smbconfoption>
+    parameters are not required. (This is known as `netlogon proxy only mode'.)</para>
+
+        <para> The Name Service Switch allows user 
        and system information to be obtained from different databases 
        services such as NIS or DNS.  The exact behaviour can be configured 
        throught the <filename>/etc/nsswitch.conf</filename> file.  
        services via an associated PAM module. </para>
        
        <para>
-       The <filename>pam_winbind</filename> module in the 2.2.2 release only 
-       supports the <parameter>auth</parameter> and <parameter>account</parameter> 
-       module-types.  The latter simply
-       performs a getpwnam() to verify that the system can obtain a uid for the
-       user.  If the <filename>libnss_winbind</filename> library has been correctly 
-       installed, this should always succeed.
+       The <filename>pam_winbind</filename> module supports the
+        <parameter>auth</parameter>, <parameter>account</parameter>
+        and <parameter>password</parameter>
+        module-types.  It should be noted that the 
+        <parameter>account</parameter> module simply performs a getpwnam() to verify that
+        the system can obtain a uid for the user, as the domain
+        controller has already performed access control.  If the
+        <filename>libnss_winbind</filename> library has been correctly
+        installed, or an alternate source of names configured, this should always succeed.
        </para>
 
        <para>The following nsswitch databases are implemented by 
@@ -180,9 +193,9 @@ hosts:              files wins
        <title>NAME AND ID RESOLUTION</title>
 
        <para>Users and groups on a Windows NT server are assigned 
-       a relative id (rid) which is unique for the domain when the 
+       a security id (SID) which is globally unique when the 
        user or group is created.  To convert the Windows NT user or group 
-       into a unix user or group, a mapping between rids and unix user 
+       into a unix user or group, a mapping between SIDs and unix user 
        and group ids is required.  This is one of the jobs that <command>
        winbindd</command> performs. </para>
 
@@ -194,11 +207,16 @@ hosts:            files wins
        in a database file under the Samba lock directory and will be 
        remembered. </para>
 
-       <para>WARNING: The rid to unix id database is the only location 
+       <para>WARNING: The SID to unix id database is the only location 
        where the user and group mappings are stored by winbindd.  If this 
        file is deleted or corrupted, there is no way for winbindd to 
        determine which user and group ids correspond to Windows NT user 
        and group rids. </para>
+
+        <para>See the <smbconfoption><name>idmap
+        backend</name></smbconfoption> parameter in
+        <filename>smb.conf</filename> for options for sharing this
+        database, such as via LDAP.</para>
 </refsect1>
 
 
@@ -219,6 +237,8 @@ hosts:              files wins
                <listitem><para>
                <smbconfoption><name>idmap gid</name></smbconfoption></para></listitem>
                <listitem><para>
+               <smbconfoption><name>idmap backend</name></smbconfoption></para></listitem>
+               <listitem><para>
                <smbconfoption><name>winbind cache time</name></smbconfoption></para></listitem>
                <listitem><para>
                <smbconfoption><name>winbind enum users</name></smbconfoption></para></listitem>
@@ -317,11 +337,7 @@ auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok
 
        <para><citerefentry><refentrytitle>nmbd</refentrytitle>
        <manvolnum>8</manvolnum></citerefentry> must be running on the local machine 
-       for <command>winbindd</command> to work. <command>winbindd</command> queries
-       the list of trusted domains for the Windows NT server
-       on startup and when a SIGHUP is received.  Thus, for a running <command>
-       winbindd</command> to become aware of new trust relationships between 
-       servers, it must be sent a SIGHUP signal. </para>
+       for <command>winbindd</command> to work. </para>
 
        <para>PAM is really easy to misconfigure.  Make sure you know what 
        you are doing when modifying PAM configuration files.  It is possible 
@@ -330,9 +346,10 @@ auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok
        <para>If more than one UNIX machine is running <command>winbindd</command>, 
        then in general the user and groups ids allocated by winbindd will not 
        be the same.  The user and group ids will only be valid for the local 
-       machine.</para>
+       machine, unless a shared <smbconfoption><name>idmap
+       backend</name></smbconfoption> is configured.</para>
 
-       <para>If the the Windows NT RID to UNIX user and group id mapping 
+       <para>If the the Windows NT SID to UNIX user and group id mapping 
        file is damaged or destroyed then the mappings will be lost. </para>
 </refsect1>
 
@@ -358,8 +375,7 @@ auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok
                <term>SIGUSR2</term>
                <listitem><para>The SIGUSR2 signal will cause <command>
                winbindd</command> to write status information to the winbind 
-               log file including information about the number of user and 
-               group ids allocated by <command>winbindd</command>.</para>
+               log file.</para>
 
                <para>Log files are stored in the filename specified by the 
                log file parameter.</para></listitem>
@@ -440,6 +456,8 @@ auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok
        <refentrytitle>samba</refentrytitle>
        <manvolnum>7</manvolnum></citerefentry>, <citerefentry>
        <refentrytitle>wbinfo</refentrytitle>
+       <manvolnum>1</manvolnum></citerefentry>, <citerefentry>
+       <refentrytitle>ntlm_auth</refentrytitle>
        <manvolnum>8</manvolnum></citerefentry>, <citerefentry>
        <refentrytitle>smb.conf</refentrytitle>
        <manvolnum>5</manvolnum></citerefentry></para>