diff options
Diffstat (limited to 'docs/docbook/projdoc/GROUP-MAPPING-HOWTO.xml')
-rw-r--r-- | docs/docbook/projdoc/GROUP-MAPPING-HOWTO.xml | 625 |
1 files changed, 0 insertions, 625 deletions
diff --git a/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.xml b/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.xml deleted file mode 100644 index 9e9d1a0e01..0000000000 --- a/docs/docbook/projdoc/GROUP-MAPPING-HOWTO.xml +++ /dev/null @@ -1,625 +0,0 @@ -<?xml version="1.0" encoding="iso8859-1"?> -<chapter id="groupmapping"> -<chapterinfo> - &author.jht; - <author> - <firstname>Jean François</firstname><surname>Micouleau</surname> - </author> - &author.jerry; -</chapterinfo> -<title>Group Mapping &smbmdash; MS Windows and UNIX</title> - - - <para> -<indexterm significance="preferred"><primary>groups</primary><secondary>mapping</secondary></indexterm> - Starting with Samba-3, new group mapping functionality is available to create associations - between Windows group SIDs and UNIX groups. The <command>groupmap</command> subcommand - included with the &net; tool can be used to manage these associations. - </para> - - <para> - The new facility for mapping NT Groups to UNIX system groups allows the administrator to decide - which NT Domain Groups are to be exposed to MS Windows clients. Only those NT Groups that map - to a UNIX group that has a value other than the default (<constant>-1</constant>) will be exposed - in group selection lists in tools that access domain users and groups. - </para> - - <warning> - <para> - <indexterm><primary>domain admin group</primary></indexterm> - The <parameter>domain admin group</parameter> parameter has been removed in Samba-3 and should no longer - be specified in &smb.conf;. This parameter was used to give the listed users membership in the - <constant>Domain Admins</constant> Windows group which gave local admin rights on their workstations - (in default configurations). - </para> - </warning> - -<sect1> -<title>Features and Benefits</title> - - <para> - Samba allows the administrator to create MS Windows NT4/200x group accounts and to - arbitrarily associate them with UNIX/Linux group accounts. - </para> - - <para> -<indexterm><primary>UID</primary></indexterm> -<indexterm><primary>GID</primary></indexterm> - Group accounts can be managed using the MS Windows NT4 or MS Windows 200x/XP Professional MMC tools. - Appropriate interface scripts should be provided in &smb.conf; if it is desired that UNIX/Linux system - accounts should be automatically created when these tools are used. In the absence of these scripts, and - so long as <command>winbindd</command> is running, Samba group accounts that are created using these - tools will be allocated UNIX UIDs/GIDs from the ID range specified by the - <smbconfoption><name>idmap uid</name></smbconfoption>/<smbconfoption><name>idmap gid</name></smbconfoption> - parameters in the &smb.conf; file. - </para> - - <figure id="idmap-sid2gid"><title>IDMAP: group SID to GID resolution.</title> - <mediaobject> - <imageobject role="latex"><imagedata fileref="projdoc/imagefiles/idmap-sid2gid" scale="50" scalefit="1"/></imageobject> - <imageobject><imagedata fileref="projdoc/imagefiles/idmap-sid2gid.png" scale="50" scalefit="1"/></imageobject> - </mediaobject> - </figure> - - <figure id="idmap-gid2sid"><title>IDMAP: GID resolution to matching SID.</title> - <mediaobject> - <imageobject role="latex"><imagedata fileref="projdoc/imagefiles/idmap-gid2sid" scale="50" scalefit="1"/></imageobject> - <imageobject><imagedata fileref="projdoc/imagefiles/idmap-gid2sid.png" scale="50" scalefit="1"/></imageobject> - </mediaobject> - </figure> - - <para> - In both cases, when winbindd is not running, only locally resolvable groups can be recognized. Please refer to - <link linkend="idmap-sid2gid"></link> and <link linkend="idmap-gid2sid"></link>. The <command>net groupmap</command> is - used to establish UNIX group to NT SID mappings as shown in <link linkend="idmap-store-gid2sid"></link>. - </para> - - <figure id="idmap-store-gid2sid"><title>IDMAP storing group mappings.</title> - <mediaobject> - <imageobject role="latex"><imagedata fileref="projdoc/imagefiles/idmap-store-gid2sid" scale="50" scalefit="1"/></imageobject> - <imageobject><imagedata fileref="projdoc/imagefiles/idmap-store-gid2sid.png" scale="50" scalefit="1"/></imageobject> - </mediaobject> - </figure> - - - <para> - <indexterm><primary>groupadd</primary></indexterm> - <indexterm><primary>groupdel</primary></indexterm> - Administrators should be aware that where &smb.conf; group interface scripts make - direct calls to the UNIX/Linux system tools (the shadow utilities, <command>groupadd</command>, - <command>groupdel</command>, and <command>groupmod</command>), the resulting UNIX/Linux group names will be subject - to any limits imposed by these tools. If the tool does not allow upper case characters - or space characters, then the creation of an MS Windows NT4/200x style group of - <ntgroup>Engineering Managers</ntgroup> will attempt to create an identically named - UNIX/Linux group, an attempt that will of course fail. - </para> - - - - <para> - <indexterm><primary>GID</primary></indexterm> - <indexterm><primary>SID</primary></indexterm> - There are several possible work-arounds for the operating system tools limitation. One - method is to use a script that generates a name for the UNIX/Linux system group that - fits the operating system limits, and that then just passes the UNIX/Linux group ID (GID) - back to the calling Samba interface. This will provide a dynamic work-around solution. - </para> - - <para> - Another work-around is to manually create a UNIX/Linux group, then manually create the - MS Windows NT4/200x group on the Samba server and then use the <command>net groupmap</command> - tool to connect the two to each other. - </para> - -</sect1> - -<sect1> -<title>Discussion</title> - - <para> - When installing <application>MS Windows NT4/200x</application> on a computer, the installation - program creates default users and groups, notably the <constant>Administrators</constant> group, - and gives that group privileges necessary privileges to perform essential system tasks, - such as the ability to change the date and time or to kill (or close) any process running on the - local machine. - </para> - - <para> - <indexterm><primary>Administrator</primary></indexterm> - The <constant>Administrator</constant> user is a member of the <constant>Administrators</constant> group, and thus inherits - <constant>Administrators</constant> group privileges. If a <constant>joe</constant> user is created to be a member of the - <constant>Administrators</constant> group, <constant>joe</constant> has exactly the same rights as the user, - <constant>Administrator</constant>. - </para> - - <para> - When an MS Windows NT4/200x/XP machine is made a Domain Member, the <quote>Domain Admins</quote> group of the - PDC is added to the local <constant>Administrators</constant> group of the workstation. Every member of the - <constant>Domain Administrators</constant> group inherits the rights of the local <constant>Administrators</constant> group when - logging on the workstation. - </para> - - <para> - The following steps describe how to make Samba PDC users members of the <constant>Domain Admins</constant> group? - </para> - - <orderedlist> - <listitem><para> - Create a UNIX group (usually in <filename>/etc/group</filename>), let's call it <constant>domadm</constant>. - </para></listitem> - - <listitem><para> - Add to this group the users that must be <quote>Administrators</quote>. For example, - if you want <constant>joe, john</constant> and <constant>mary</constant> to be administrators, - your entry in <filename>/etc/group</filename> will look like this: - </para> - - <para><programlisting> - domadm:x:502:joe,john,mary - </programlisting> - </para></listitem> - - <listitem><para> - Map this domadm group to the <quote>Domain Admins</quote> group by running the command: - </para> - - <para> - <screen> - &rootprompt;<userinput>net groupmap add ntgroup="Domain Admins" UNIXgroup=domadm</userinput> - </screen> - </para> - - <para> - <indexterm><primary>Domain Admins group</primary></indexterm> - The quotes around <quote>Domain Admins</quote> are necessary due to the space in the group name. - Also make sure to leave no white-space surrounding the equal character (=). - </para></listitem> - </orderedlist> - - <para> - Now <constant>joe, john</constant> and <constant>mary</constant> are domain administrators. - </para> - - <para> - <indexterm><primary>groups</primary><secondary>domain</secondary></indexterm> - It is possible to map any arbitrary UNIX group to any Windows NT4/200x group as well as - making any UNIX group a Windows domain group. For example, if you wanted to include a - UNIX group (e.g., acct) in an ACL on a local file or printer on a Domain Member machine, - you would flag that group as a domain group by running the following on the Samba PDC: - </para> - - <para> -<screen> -&rootprompt;<userinput>net groupmap add rid=1000 ntgroup="Accounting" UNIXgroup=acct</userinput> -</screen> - </para> - - <para> - Be aware that the RID parameter is a unsigned 32-bit integer that should - normally start at 1000. However, this RID must not overlap with any RID assigned - to a user. Verification for this is done differently depending on the passdb backend - you are using. Future versions of the tools may perform the verification automatically, - but for now the burden is on you. - </para> - - <sect2> - <title>Default Users, Groups and Relative Identifiers</title> - - <para> -<indexterm><primary>Relative Identifier</primary><see>RID</see></indexterm> -<indexterm><primary>RID</primary></indexterm> - When first installed, Microsoft Windows NT4/200x/XP are preconfigured with certain User, Group, and - Alias entities. Each has a well-known Relative Identifier (RID). These must be preserved for continued - integrity of operation. Samba must be provisioned with certain essential Domain Groups that require - the appropriate RID value. When Samba-3 is configured to use <constant>tdbsam</constant> the essential - Domain Groups are automatically created. It is the LDAP administrators' responsibility to create - (provision) the default NT Groups. - </para> - - <para> - Each essential Domain Group must be assigned its respective well-kown RID. The default Users, Groups, - Aliases, and RIDs are shown in <link linkend="WKURIDS"/>. - </para> - - <note><para> - When the <parameter>passdb backend</parameter> uses LDAP (<constant>ldapsam</constant>) it is the - admininstrators' responsibility to create the essential Domain Groups, and to assign each its default RID. - </para></note> - - <para> - It is permissible to create any Domain Group that may be necessary, just make certain that the essential - Domain Groups (well known) have been created and assigned its default RID. Other groups you create may - be assigned any arbitrary RID you care to use. - </para> - - <para> - Be sure to map each Domain Group to a UNIX system group. That is the only way to ensure that the group - will be available for use as an NT Domain Group. - </para> - - <para> - <table frame="all" id="WKURIDS"> - <title>Well-Known User Default RIDs</title> - <tgroup cols="4" align="left"> - <colspec align="left"/> - <colspec align="left"/> - <colspec align="left"/> - <colspec align="center"/> - <thead> - <row> - <entry>Well-Known Entity</entry> - <entry>RID</entry> - <entry>Type</entry> - <entry>Essential</entry> - </row> - </thead> - <tbody> - <row> - <entry>Domain Administrator</entry> - <entry>500</entry> - <entry>User</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Guest</entry> - <entry>501</entry> - <entry>User</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain KRBTGT</entry> - <entry>502</entry> - <entry>User</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Admins</entry> - <entry>512</entry> - <entry>Group</entry> - <entry>Yes</entry> - </row> - <row> - <entry>Domain Users</entry> - <entry>513</entry> - <entry>Group</entry> - <entry>Yes</entry> - </row> - <row> - <entry>Domain Guests</entry> - <entry>514</entry> - <entry>Group</entry> - <entry>Yes</entry> - </row> - <row> - <entry>Domain Computers</entry> - <entry>515</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Controllers</entry> - <entry>516</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Certificate Admins</entry> - <entry>517</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Schema Admins</entry> - <entry>518</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Enterprise Admins</entry> - <entry>519</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Domain Policy Admins</entry> - <entry>520</entry> - <entry>Group</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Admins</entry> - <entry>544</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin users</entry> - <entry>545</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Guests</entry> - <entry>546</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Power Users</entry> - <entry>547</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Account Operators</entry> - <entry>548</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin System Operators</entry> - <entry>549</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Print Operators</entry> - <entry>550</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Backup Operators</entry> - <entry>551</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin Replicator</entry> - <entry>552</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - <row> - <entry>Builtin RAS Servers</entry> - <entry>553</entry> - <entry>Alias</entry> - <entry>No</entry> - </row> - </tbody> - </tgroup> - </table> - </para> - - </sect2> - - <sect2> - <title>Example Configuration</title> - - <para> - You can list the various groups in the mapping database by executing - <command>net groupmap list</command>. Here is an example: - </para> - -<indexterm><primary>net</primary><secondary>groupmap</secondary></indexterm> - - <para> -<screen> -&rootprompt; <userinput>net groupmap list</userinput> -Domain Admins (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin -Domain Users (S-1-5-21-2547222302-1596225915-2414751004-513) -> domuser -Domain Guests (S-1-5-21-2547222302-1596225915-2414751004-514) -> domguest -</screen> - </para> - - <para> - For complete details on <command>net groupmap</command>, refer to the net(8) man page. - </para> - - </sect2> - -</sect1> - -<sect1> -<title>Configuration Scripts</title> - - <para> - Everyone needs tools. Some of us like to create our own, others prefer to use canned tools - (i.e., prepared by someone else for general use). - </para> - - <sect2> - <title>Sample &smb.conf; Add Group Script</title> - - <para> - A script to create complying group names for use by the Samba group interfaces - is provided in <link linkend="smbgrpadd.sh"></link>. - </para> - -<indexterm><primary>smbgrpadd.sh</primary></indexterm> - <para> -<example id="smbgrpadd.sh"> - <title>smbgrpadd.sh</title> -<programlisting> - -#!/bin/bash - -# Add the group using normal system groupadd tool. -groupadd smbtmpgrp00 - -thegid=`cat /etc/group | grep smbtmpgrp00 | cut -d ":" -f3` - -# Now change the name to what we want for the MS Windows networking end -cp /etc/group /etc/group.bak -cat /etc/group.bak | sed s/smbtmpgrp00/$1/g > /etc/group - -# Now return the GID as would normally happen. -echo $thegid -exit 0 -</programlisting> -</example> -</para> - - <para> - The &smb.conf; entry for the above script would be something like that in <link linkend="smbgrpadd"/>. -<smbconfexample id="smbgrpadd"> -<title>Configuration of &smb.conf; for the add group script.</title> -<smbconfsection>[global]</smbconfsection> -<member>...</member> -<smbconfoption><name>add group script</name><value>/path_to_tool/smbgrpadd.sh %g</value></smbconfoption> -<member>...</member> -</smbconfexample> - </para> - - </sect2> - - <sect2> - <title>Script to Configure Group Mapping</title> - - <para> - In our example we have created a UNIX/Linux group called <ntgroup>ntadmin</ntgroup>. - Our script will create the additional groups <ntgroup>Orks</ntgroup>, <ntgroup>Elves</ntgroup>, and <ntgroup>Gnomes</ntgroup>. - It is a good idea to save this shell script for later re-use just in case you ever need to rebuild your mapping database. - For the sake of concenience we elect to save this script as a file called <filename>initGroups.sh</filename>. - This script is given in <link linkend="set-group-map"></link>. - </para> - -<para> -<indexterm><primary>initGroups.sh</primary></indexterm> -<example id="set-group-map"> - <title>Script to Set Group Mapping</title> -<programlisting> -#!/bin/bash - -net groupmap modify ntgroup="Domain Admins" unixgroup=ntadmin -net groupmap modify ntgroup="Domain Users" unixgroup=users -net groupmap modify ntgroup="Domain Guests" unixgroup=nobody - -groupadd Orks -groupadd Elves -groupadd Gnomes - -net groupmap add ntgroup="Orks" unixgroup=Orks type=d -net groupmap add ntgroup="Elves" unixgroup=Elves type=d -net groupmap add ntgroup="Gnomes" unixgroup=Gnomes type=d -</programlisting> -</example> -</para> - - <para> - Of course it is expected that the administrator will modify this to suit local needs. - For information regarding the use of the <command>net groupmap</command> tool please - refer to the man page. - </para> - - </sect2> - -</sect1> - -<sect1> -<title>Common Errors</title> - -<para> -At this time there are many little surprises for the unwary administrator. In a real sense -it is imperative that every step of automated control scripts must be carefully tested -manually before putting them into active service. -</para> - - <sect2> - <title>Adding Groups Fails</title> - - <para> - This is a common problem when the <command>groupadd</command> is called directly - by the Samba interface script for the <smbconfoption><name>add group script</name></smbconfoption> in - the &smb.conf; file. - </para> - - <para> - The most common cause of failure is an attempt to add an MS Windows group account - that has either an upper case character and/or a space character in it. - </para> - - <para> - There are three possible work-arounds. First, use only group names that comply - with the limitations of the UNIX/Linux <command>groupadd</command> system tool. - Second, it involves the use of the script mentioned earlier in this chapter, and - third is the option is to manually create a UNIX/Linux group account that can substitute - for the MS Windows group name, then use the procedure listed above to map that group - to the MS Windows group. - </para> - - </sect2> - - <sect2> - <title>Adding MS Windows Groups to MS Windows Groups Fails</title> - - <indexterm><primary>groups</primary><secondary>nested</secondary></indexterm> - - <para> - Samba-3 does not support nested groups from the MS Windows control environment. - </para> - - </sect2> - - <sect2> - <title>Adding <emphasis>Domain Users</emphasis> to the <emphasis>Power Users</emphasis> Group</title> - - <para><quote> - What must I do to add Domain Users to the Power Users group? - </quote></para> - -<indexterm><primary>Domain Users group</primary></indexterm> - - <para> - The Power Users group is a group that is local to each Windows 200x/XP Professional workstation. - You cannot add the Domain Users group to the Power Users group automatically, it must be done on - each workstation by logging in as the local workstation <emphasis>administrator</emphasis> and - then using the following procedure: - </para> - - <procedure> - <step><para> - Click <guimenu>Start -> Control Panel -> Users and Passwords</guimenu>. - </para></step> - - <step><para> - Click the <guimenuitem>Advanced</guimenuitem> tab. - </para></step> - - <step><para> - Click the <guibutton>Advanced</guibutton> button. - </para></step> - - <step><para> - Click <constant>Groups</constant>. - </para></step> - - <step><para> - Double click <constant>Power Users</constant>. This will launch the panel to add users or groups - to the local machine <constant>Power Uses</constant> group. - </para></step> - - <step><para> - Click the <guibutton>Add</guibutton> button. - </para></step> - - <step><para> - Select the domain from which the <constant>Domain Users</constant> group is to be added. - </para></step> - - <step><para> - Double click the <constant>Domain Users</constant> group. - </para></step> - - <step><para> - Click the <guibutton>Ok</guibutton> button. If a logon box is presented during this process - please remember to enter the connect as <constant>DOMAIN\UserName</constant>. i.e., For the - domain <constant>MIDEARTH</constant> and the user <constant>root</constant> enter - <constant>MIDEARTH\root</constant>. - </para></step> - </procedure> - </sect2> - -</sect1> - -</chapter> |