mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +03:00
@ -1,127 +1,363 @@
|
|||||||
|
<HTML
|
||||||
|
><HEAD
|
||||||
|
><TITLE
|
||||||
|
></TITLE
|
||||||
|
><META
|
||||||
|
NAME="GENERATOR"
|
||||||
<html><head><title>Joining an NT Domain with Samba 2.0</title>
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.57"></HEAD
|
||||||
|
><BODY
|
||||||
<link rev="made" href="mailto:samba@samba.org">
|
CLASS="BOOK"
|
||||||
</head>
|
BGCOLOR="#FFFFFF"
|
||||||
<body>
|
TEXT="#000000"
|
||||||
|
LINK="#0000FF"
|
||||||
<hr>
|
VLINK="#840084"
|
||||||
|
ALINK="#0000FF"
|
||||||
<h1>Joining an NT Domain with Samba 2.0</h1>
|
><DIV
|
||||||
<h2>Jeremy Allison, Samba Team</h2>
|
CLASS="BOOK"
|
||||||
<h2>7th October 1999</h2>
|
><A
|
||||||
|
NAME="AEN1"
|
||||||
<h1>Table of Contents </h1><p></p>
|
></A
|
||||||
|
><DIV
|
||||||
<p><hr><p><br>
|
CLASS="TITLEPAGE"
|
||||||
<p><center>Joining an NT Domain with Samba 2.0 </center>
|
><H3
|
||||||
<center>----------------------------------- </center>
|
CLASS="AUTHOR"
|
||||||
<p>In order for a Samba-2 server to join an NT domain, you must first add
|
><A
|
||||||
the NetBIOS name of the Samba server to the NT domain on the PDC using
|
NAME="AEN3"
|
||||||
Server Manager for Domains. This creates the machine account in the
|
>Jeremy Allison</A
|
||||||
domain (PDC) SAM. Note that you should add the Samba server as a "Windows
|
></H3
|
||||||
NT Workstation or Server", <em>NOT</em> as a Primary or backup domain controller.
|
><HR></DIV
|
||||||
<p>Assume you have a Samba-2 server with a NetBIOS name of <code>SERV1</code> and are
|
><DIV
|
||||||
joining an NT domain called <code>DOM</code>, which has a PDC with a NetBIOS name
|
CLASS="TOC"
|
||||||
of <code>DOMPDC</code> and two backup domain controllers with NetBIOS names <code>DOMBDC1</code>
|
><DL
|
||||||
and <code>DOMBDC2</code>.
|
><DT
|
||||||
<p>In order to join the domain, first stop all Samba daemons and run the
|
><B
|
||||||
command
|
>Table of Contents</B
|
||||||
<p><code>smbpasswd -j DOM -r DOMPDC</code>
|
></DT
|
||||||
<p>as we are joining the domain DOM and the PDC for that domain (the only
|
><DT
|
||||||
machine that has write access to the domain SAM database) is DOMPDC. If this is
|
><A
|
||||||
successful you will see the message:
|
HREF="#AEN7"
|
||||||
<p><code>smbpasswd: Joined domain DOM.</code>
|
></A
|
||||||
<p>in your terminal window. See the <a href="smbpasswd.8.html"><strong>smbpasswd</strong></a>
|
></DT
|
||||||
man page for more details.
|
><DD
|
||||||
<p>This command goes through the machine account password change
|
><DL
|
||||||
protocol, then writes the new (random) machine account password for
|
><DT
|
||||||
this Samba server into a file in the same directory in which an
|
><A
|
||||||
smbpasswd file would be stored - normally :
|
HREF="#AEN8"
|
||||||
<p><code>/usr/local/samba/private</code>
|
>Joining an NT Domain with Samba 2.2</A
|
||||||
<p>The filename looks like this:
|
></DT
|
||||||
<p><code><NT DOMAIN NAME>.<Samba Server Name>.mac</code>
|
><DT
|
||||||
<p>The <code>.mac</code> suffix stands for machine account password file. So in
|
><A
|
||||||
our example above, the file would be called:
|
HREF="#AEN71"
|
||||||
<p><code>DOM.SERV1.mac</code>
|
>Why is this better than security = server?</A
|
||||||
<p>This file is created and owned by root and is not readable by any
|
></DT
|
||||||
other user. It is the key to the domain-level security for your
|
></DL
|
||||||
system, and should be treated as carefully as a shadow password file.
|
></DD
|
||||||
<p>Now, before restarting the Samba daemons you must edit your
|
></DL
|
||||||
<a href="smb.conf.5.html"><strong>smb.conf</strong></a> file to tell Samba it should now
|
></DIV
|
||||||
use domain security.
|
><DIV
|
||||||
<p>Change (or add) your
|
CLASS="ARTICLE"
|
||||||
<p><a href="smb.conf.5.html#security"><strong>"security ="</strong></a>
|
><DIV
|
||||||
<p>line in the <a href="smb.conf.5.html#global"><strong>[global]</strong></a> section of your
|
CLASS="SECT1"
|
||||||
<a href="smb.conf.5.html"><strong>smb.conf</strong></a> to read:
|
><H1
|
||||||
<p><code>security = domain</code>
|
CLASS="SECT1"
|
||||||
<p>Next change the
|
><A
|
||||||
<p><a href="smb.conf.5.html#workgroup"><strong>"workgroup ="</strong></a>
|
NAME="AEN8"
|
||||||
<p>line in the <a href="smb.conf.5.html#global"><strong>[global]</strong></a> section to read:
|
>Joining an NT Domain with Samba 2.2</A
|
||||||
<p><code>workgroup = DOM</code>
|
></H1
|
||||||
<p>as this is the name of the domain we are joining.
|
><P
|
||||||
<p>You must also have the parameter <a href="smb.conf.5.html#encryptpasswords"><strong>"encrypt passwords"</strong></a>
|
>In order for a Samba-2 server to join an NT domain,
|
||||||
set to <code>"yes"</code> in order for your users to authenticate to the
|
you must first add the NetBIOS name of the Samba server to the
|
||||||
NT PDC.
|
NT domain on the PDC using Server Manager for Domains. This creates
|
||||||
<p>Finally, add (or modify) a:
|
the machine account in the domain (PDC) SAM. Note that you should
|
||||||
<p><a href="smb.conf.5.html#passwordserver"><strong>"password server ="</strong></a>
|
add the Samba server as a "Windows NT Workstation or Server",
|
||||||
<p>line in the <a href="smb.conf.5.html#global"><strong>[global]</strong></a> section to read:
|
<I
|
||||||
<p><code>password server = DOMPDC DOMBDC1 DOMBDC2</code>
|
CLASS="EMPHASIS"
|
||||||
<p>These are the primary and backup domain controllers Samba will attempt
|
>NOT</I
|
||||||
to contact in order to authenticate users. Samba will try to contact
|
> as a Primary or backup domain controller.</P
|
||||||
each of these servers in order, so you may want to rearrange this list
|
><P
|
||||||
in order to spread out the authentication load among domain
|
>Assume you have a Samba-2 server with a NetBIOS name of
|
||||||
controllers.
|
<TT
|
||||||
<p>Alternatively, if you want smbd to automatically determine the
|
CLASS="CONSTANT"
|
||||||
list of Domain controllers to use for authentication, you may set this line to be :
|
>SERV1</TT
|
||||||
<p><code>password server = *</code>
|
> and are joining an NT domain called
|
||||||
<p>This method, which is new in Samba 2.0.6 and above, allows Samba
|
<TT
|
||||||
to use exactly the same mechanism that NT does. This method either broadcasts or
|
CLASS="CONSTANT"
|
||||||
uses a WINS database in order to find domain controllers to
|
>DOM</TT
|
||||||
authenticate against.
|
>, which has a PDC with a NetBIOS name
|
||||||
<p>Finally, restart your Samba daemons and get ready for clients to begin
|
of <TT
|
||||||
using domain security!
|
CLASS="CONSTANT"
|
||||||
<p><center>Why is this better than security = server? </center>
|
>DOMPDC</TT
|
||||||
<center>------------------------------------------ </center>
|
> and two backup domain controllers
|
||||||
<p>Currently, domain security in Samba doesn't free you from having to
|
with NetBIOS names <TT
|
||||||
create local Unix users to represent the users attaching to your
|
CLASS="CONSTANT"
|
||||||
server. This means that if domain user <code>DOM\fred</code> attaches to your
|
>DOMBDC1</TT
|
||||||
domain security Samba server, there needs to be a local Unix user fred
|
> and <TT
|
||||||
to represent that user in the Unix filesystem. This is very similar to
|
CLASS="CONSTANT"
|
||||||
the older Samba security mode <a href="smb.conf.5.html#securityequalserver"><strong>"security=server"</strong></a>, where Samba would pass
|
>DOMBDC2
|
||||||
through the authentication request to a Windows NT server in the same
|
</TT
|
||||||
way as a Windows 95 or Windows 98 server would.
|
>.</P
|
||||||
<p>The advantage to domain-level security is that the authentication in
|
><P
|
||||||
domain-level security is passed down the authenticated RPC channel in
|
>In order to join the domain, first stop all Samba daemons
|
||||||
exactly the same way that an NT server would do it. This means Samba
|
and run the command:</P
|
||||||
servers now participate in domain trust relationships in exactly the
|
><P
|
||||||
same way NT servers do (i.e., you can add Samba servers into a
|
><TT
|
||||||
resource domain and have the authentication passed on from a resource
|
CLASS="PROMPT"
|
||||||
domain PDC to an account domain PDC.
|
>root# </TT
|
||||||
<p>In addition, with <a href="smb.conf.5.html#securityequalserver"><strong>"security=server"</strong></a> every Samba daemon on a
|
><TT
|
||||||
server has to keep a connection open to the authenticating server for
|
CLASS="USERINPUT"
|
||||||
as long as that daemon lasts. This can drain the connection resources
|
><B
|
||||||
on a Microsoft NT server and cause it to run out of available
|
>smbpasswd -j DOM -r DOMPDC
|
||||||
connections. With <a href="smb.conf.5.html#securityequaldomain"><strong>"security =domain"</strong></a>, however, the Samba
|
</B
|
||||||
daemons connect to the PDC/BDC only for as long as is necessary to
|
></TT
|
||||||
authenticate the user, and then drop the connection, thus conserving
|
></P
|
||||||
PDC connection resources.
|
><P
|
||||||
<p>And finally, acting in the same manner as an NT server authenticating
|
>as we are joining the domain DOM and the PDC for that domain
|
||||||
to a PDC means that as part of the authentication reply, the Samba
|
(the only machine that has write access to the domain SAM database)
|
||||||
server gets the user identification information such as the user SID,
|
is DOMPDC. If this is successful you will see the message:</P
|
||||||
the list of NT groups the user belongs to, etc. All this information
|
><P
|
||||||
will allow Samba to be extended in the future into a mode the
|
><TT
|
||||||
developers currently call appliance mode. In this mode, no local Unix
|
CLASS="COMPUTEROUTPUT"
|
||||||
users will be necessary, and Samba will generate Unix uids and gids
|
>smbpasswd: Joined domain DOM.</TT
|
||||||
from the information passed back from the PDC when a user is
|
>
|
||||||
authenticated, making a Samba server truly plug and play in an NT
|
</P
|
||||||
domain environment. Watch for this code soon.
|
><P
|
||||||
<p><em>NOTE:</em> Much of the text of this document was first published in the
|
>in your terminal window. See the <A
|
||||||
Web magazine <a href="http://www.linuxworld.com"><strong>"LinuxWorld"</strong></a> as the article <a href="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"><strong>"Doing the NIS/NT Samba"</strong></a>.
|
HREF="smbpasswd.8.html"
|
||||||
</body>
|
TARGET="_top"
|
||||||
</html>
|
> smbpasswd(8)</A
|
||||||
|
> man page for more details.</P
|
||||||
|
><P
|
||||||
|
>This command goes through the machine account password
|
||||||
|
change protocol, then writes the new (random) machine account
|
||||||
|
password for this Samba server into a file in the same directory
|
||||||
|
in which an smbpasswd file would be stored - normally :</P
|
||||||
|
><P
|
||||||
|
><TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
>/usr/local/samba/private</TT
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>In Samba 2.0.x, the filename looks like this:</P
|
||||||
|
><P
|
||||||
|
><TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
><TT
|
||||||
|
CLASS="REPLACEABLE"
|
||||||
|
><I
|
||||||
|
><NT DOMAIN NAME></I
|
||||||
|
></TT
|
||||||
|
>.
|
||||||
|
<TT
|
||||||
|
CLASS="REPLACEABLE"
|
||||||
|
><I
|
||||||
|
><Samba Server Name></I
|
||||||
|
></TT
|
||||||
|
>.mac</TT
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>The <TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
>.mac</TT
|
||||||
|
> suffix stands for machine account
|
||||||
|
password file. So in our example above, the file would be called:</P
|
||||||
|
><P
|
||||||
|
><TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
>DOM.SERV1.mac</TT
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>In Samba 2.2, this file has been replaced with a TDB
|
||||||
|
(Trivial Database) file named <TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
>secrets.tdb</TT
|
||||||
|
>.
|
||||||
|
</P
|
||||||
|
><P
|
||||||
|
>This file is created and owned by root and is not
|
||||||
|
readable by any other user. It is the key to the domain-level
|
||||||
|
security for your system, and should be treated as carefully
|
||||||
|
as a shadow password file.</P
|
||||||
|
><P
|
||||||
|
>Now, before restarting the Samba daemons you must
|
||||||
|
edit your <A
|
||||||
|
HREF="smb.conf.5.html"
|
||||||
|
TARGET="_top"
|
||||||
|
><TT
|
||||||
|
CLASS="FILENAME"
|
||||||
|
>smb.conf(5)</TT
|
||||||
|
>
|
||||||
|
</A
|
||||||
|
> file to tell Samba it should now use domain security.</P
|
||||||
|
><P
|
||||||
|
>Change (or add) your <A
|
||||||
|
HREF="smb.conf.5.html#SECURITY"
|
||||||
|
TARGET="_top"
|
||||||
|
> <TT
|
||||||
|
CLASS="PARAMETER"
|
||||||
|
><I
|
||||||
|
>security =</I
|
||||||
|
></TT
|
||||||
|
></A
|
||||||
|
> line in the [global] section
|
||||||
|
of your smb.conf to read:</P
|
||||||
|
><P
|
||||||
|
><B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>security = domain</B
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>Next change the <A
|
||||||
|
HREF="smb.conf.5.html#WORKGROUP"
|
||||||
|
TARGET="_top"
|
||||||
|
><TT
|
||||||
|
CLASS="PARAMETER"
|
||||||
|
><I
|
||||||
|
> workgroup =</I
|
||||||
|
></TT
|
||||||
|
></A
|
||||||
|
> line in the [global] section to read: </P
|
||||||
|
><P
|
||||||
|
><B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>workgroup = DOM</B
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>as this is the name of the domain we are joining. </P
|
||||||
|
><P
|
||||||
|
>You must also have the parameter <A
|
||||||
|
HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
|
||||||
|
TARGET="_top"
|
||||||
|
> <TT
|
||||||
|
CLASS="PARAMETER"
|
||||||
|
><I
|
||||||
|
>encrypt passwords</I
|
||||||
|
></TT
|
||||||
|
></A
|
||||||
|
> set to <TT
|
||||||
|
CLASS="CONSTANT"
|
||||||
|
>yes
|
||||||
|
</TT
|
||||||
|
> in order for your users to authenticate to the NT PDC.</P
|
||||||
|
><P
|
||||||
|
>Finally, add (or modify) a <A
|
||||||
|
HREF="smb.conf.5.html#PASSWORDSERVER"
|
||||||
|
TARGET="_top"
|
||||||
|
> <TT
|
||||||
|
CLASS="PARAMETER"
|
||||||
|
><I
|
||||||
|
>password server =</I
|
||||||
|
></TT
|
||||||
|
></A
|
||||||
|
> line in the [global]
|
||||||
|
section to read: </P
|
||||||
|
><P
|
||||||
|
><B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>password server = DOMPDC DOMBDC1 DOMBDC2</B
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>These are the primary and backup domain controllers Samba
|
||||||
|
will attempt to contact in order to authenticate users. Samba will
|
||||||
|
try to contact each of these servers in order, so you may want to
|
||||||
|
rearrange this list in order to spread out the authentication load
|
||||||
|
among domain controllers.</P
|
||||||
|
><P
|
||||||
|
>Alternatively, if you want smbd to automatically determine
|
||||||
|
the list of Domain controllers to use for authentication, you may
|
||||||
|
set this line to be :</P
|
||||||
|
><P
|
||||||
|
><B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>password server = *</B
|
||||||
|
></P
|
||||||
|
><P
|
||||||
|
>This method, which was introduced in Samba 2.0.6,
|
||||||
|
allows Samba to use exactly the same mechanism that NT does. This
|
||||||
|
method either broadcasts or uses a WINS database in order to
|
||||||
|
find domain controllers to authenticate against.</P
|
||||||
|
><P
|
||||||
|
>Finally, restart your Samba daemons and get ready for
|
||||||
|
clients to begin using domain security!</P
|
||||||
|
></DIV
|
||||||
|
><DIV
|
||||||
|
CLASS="SECT1"
|
||||||
|
><HR><H1
|
||||||
|
CLASS="SECT1"
|
||||||
|
><A
|
||||||
|
NAME="AEN71"
|
||||||
|
>Why is this better than security = server?</A
|
||||||
|
></H1
|
||||||
|
><P
|
||||||
|
>Currently, domain security in Samba doesn't free you from
|
||||||
|
having to create local Unix users to represent the users attaching
|
||||||
|
to your server. This means that if domain user <TT
|
||||||
|
CLASS="CONSTANT"
|
||||||
|
>DOM\fred
|
||||||
|
</TT
|
||||||
|
> attaches to your domain security Samba server, there needs
|
||||||
|
to be a local Unix user fred to represent that user in the Unix
|
||||||
|
filesystem. This is very similar to the older Samba security mode
|
||||||
|
<A
|
||||||
|
HREF="smb.conf.5.html#SECURITYEQUALSERVER"
|
||||||
|
TARGET="_top"
|
||||||
|
>security = server</A
|
||||||
|
>,
|
||||||
|
where Samba would pass through the authentication request to a Windows
|
||||||
|
NT server in the same way as a Windows 95 or Windows 98 server would.
|
||||||
|
</P
|
||||||
|
><P
|
||||||
|
>The advantage to domain-level security is that the
|
||||||
|
authentication in domain-level security is passed down the authenticated
|
||||||
|
RPC channel in exactly the same way that an NT server would do it. This
|
||||||
|
means Samba servers now participate in domain trust relationships in
|
||||||
|
exactly the same way NT servers do (i.e., you can add Samba servers into
|
||||||
|
a resource domain and have the authentication passed on from a resource
|
||||||
|
domain PDC to an account domain PDC.</P
|
||||||
|
><P
|
||||||
|
>In addition, with <B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>security = server</B
|
||||||
|
> every Samba
|
||||||
|
daemon on a server has to keep a connection open to the
|
||||||
|
authenticating server for as long as that daemon lasts. This can drain
|
||||||
|
the connection resources on a Microsoft NT server and cause it to run
|
||||||
|
out of available connections. With <B
|
||||||
|
CLASS="COMMAND"
|
||||||
|
>security = domain</B
|
||||||
|
>,
|
||||||
|
however, the Samba daemons connect to the PDC/BDC only for as long
|
||||||
|
as is necessary to authenticate the user, and then drop the connection,
|
||||||
|
thus conserving PDC connection resources.</P
|
||||||
|
><P
|
||||||
|
>And finally, acting in the same manner as an NT server
|
||||||
|
authenticating to a PDC means that as part of the authentication
|
||||||
|
reply, the Samba server gets the user identification information such
|
||||||
|
as the user SID, the list of NT groups the user belongs to, etc. All
|
||||||
|
this information will allow Samba to be extended in the future into
|
||||||
|
a mode the developers currently call appliance mode. In this mode,
|
||||||
|
no local Unix users will be necessary, and Samba will generate Unix
|
||||||
|
uids and gids from the information passed back from the PDC when a
|
||||||
|
user is authenticated, making a Samba server truly plug and play
|
||||||
|
in an NT domain environment. Watch for this code soon.</P
|
||||||
|
><P
|
||||||
|
><I
|
||||||
|
CLASS="EMPHASIS"
|
||||||
|
>NOTE:</I
|
||||||
|
> Much of the text of this document
|
||||||
|
was first published in the Web magazine <A
|
||||||
|
HREF="http://www.linuxworld.com"
|
||||||
|
TARGET="_top"
|
||||||
|
>
|
||||||
|
LinuxWorld</A
|
||||||
|
> as the article <A
|
||||||
|
HREF="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"
|
||||||
|
TARGET="_top"
|
||||||
|
>Doing
|
||||||
|
the NIS/NT Samba</A
|
||||||
|
>.</P
|
||||||
|
></DIV
|
||||||
|
></DIV
|
||||||
|
></DIV
|
||||||
|
></BODY
|
||||||
|
></HTML
|
||||||
|
>
|
Reference in New Issue
Block a user