| 1 | <?xml version="1.0" encoding="iso-8859-1"?>
 | 
|---|
| 2 | <!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
 | 
|---|
| 3 | <chapter id="rights">
 | 
|---|
| 4 | <chapterinfo>
 | 
|---|
| 5 |         &author.jerry;
 | 
|---|
| 6 |         &author.jht;
 | 
|---|
| 7 | </chapterinfo>
 | 
|---|
| 8 | 
 | 
|---|
| 9 | <title>User Rights and Privileges</title>
 | 
|---|
| 10 | 
 | 
|---|
| 11 | <para>
 | 
|---|
| 12 | <indexterm><primary>Windows user</primary></indexterm>
 | 
|---|
| 13 | <indexterm><primary>Windows group</primary></indexterm>
 | 
|---|
| 14 | <indexterm><primary>machine accounts</primary></indexterm>
 | 
|---|
| 15 | <indexterm><primary>ADS</primary></indexterm>
 | 
|---|
| 16 | The administration of Windows user, group, and machine accounts in the Samba
 | 
|---|
| 17 | domain-controlled network necessitates interfacing between the MS Windows
 | 
|---|
| 18 | networking environment and the UNIX operating system environment. The right
 | 
|---|
| 19 | (permission) to add machines to the Windows security domain can be assigned
 | 
|---|
| 20 | (set) to non-administrative users both in Windows NT4 domains and
 | 
|---|
| 21 | Active Directory domains.
 | 
|---|
| 22 | </para>
 | 
|---|
| 23 | 
 | 
|---|
| 24 | <para>
 | 
|---|
| 25 | <indexterm><primary>Windows NT4/2kX/XPPro</primary></indexterm>
 | 
|---|
| 26 | <indexterm><primary>machine account</primary></indexterm>
 | 
|---|
| 27 | <indexterm><primary>trusted</primary></indexterm>
 | 
|---|
| 28 | <indexterm><primary>user logons</primary></indexterm>
 | 
|---|
| 29 | The addition of Windows NT4/2kX/XPPro machines to the domain necessitates the
 | 
|---|
| 30 | creation of a machine account for each machine added. The machine account is
 | 
|---|
| 31 | a necessity that is used to validate that the machine can be trusted to permit
 | 
|---|
| 32 | user logons.
 | 
|---|
| 33 | </para>
 | 
|---|
| 34 | 
 | 
|---|
| 35 | <para>
 | 
|---|
| 36 | <indexterm><primary>user accounts</primary></indexterm>
 | 
|---|
| 37 | <indexterm><primary>special account</primary></indexterm>
 | 
|---|
| 38 | <indexterm><primary>account name</primary></indexterm>
 | 
|---|
| 39 | <indexterm><primary>/bin/false</primary></indexterm>
 | 
|---|
| 40 | <indexterm><primary>/dev/null</primary></indexterm>
 | 
|---|
| 41 | <indexterm><primary>man-in-the-middle</primary></indexterm>
 | 
|---|
| 42 | Machine accounts are analogous to user accounts, and thus in implementing them on a UNIX machine that is
 | 
|---|
| 43 | hosting Samba (i.e., on which Samba is running), it is necessary to create a special type of user account.
 | 
|---|
| 44 | Machine accounts differ from  normal user accounts in that the account name (login ID) is terminated with a
 | 
|---|
| 45 | <literal>$</literal> sign. An additional difference is that this type of account should not ever be able to
 | 
|---|
| 46 | log into the UNIX environment as a system user and therefore is set to have a shell of
 | 
|---|
| 47 | <command>/bin/false</command> and a home directory of <command>/dev/null.</command> The machine
 | 
|---|
| 48 | account is used only to authenticate domain member machines during start-up. This security measure
 | 
|---|
| 49 | is designed to block man-in-the-middle attempts to violate network integrity.
 | 
|---|
| 50 | </para>
 | 
|---|
| 51 | 
 | 
|---|
| 52 | <note><para>
 | 
|---|
| 53 | <indexterm><primary>computer accounts</primary></indexterm>
 | 
|---|
| 54 | <indexterm><primary>domain member servers</primary></indexterm>
 | 
|---|
| 55 | <indexterm><primary>domain controller</primary></indexterm>
 | 
|---|
| 56 | <indexterm><primary>credentials</primary></indexterm>
 | 
|---|
| 57 | <indexterm><primary>secure authentication</primary></indexterm>
 | 
|---|
| 58 | Machine (computer) accounts are used in the Windows NT OS family to store security
 | 
|---|
| 59 | credentials for domain member servers and workstations. When the domain member
 | 
|---|
| 60 | starts up, it goes through a validation process that includes an exchange of
 | 
|---|
| 61 | credentials with a domain controller. If the domain member fails to authenticate
 | 
|---|
| 62 | using the credentials known for it by domain controllers, the machine will be refused
 | 
|---|
| 63 | all access by domain users. The computer account is essential to the way that MS 
 | 
|---|
| 64 | Windows secures authentication.
 | 
|---|
| 65 | </para></note>
 | 
|---|
| 66 | 
 | 
|---|
| 67 | <para>
 | 
|---|
| 68 | <indexterm><primary>UNIX system accounts</primary></indexterm>
 | 
|---|
| 69 | <indexterm><primary>system administrator</primary></indexterm>
 | 
|---|
| 70 | <indexterm><primary>root</primary></indexterm>
 | 
|---|
| 71 | <indexterm><primary>UID</primary></indexterm>
 | 
|---|
| 72 | The creation of UNIX system accounts has traditionally been the sole right of
 | 
|---|
| 73 | the system administrator, better known as the <constant>root</constant> account.
 | 
|---|
| 74 | It is possible in the UNIX environment to create multiple users who have the
 | 
|---|
| 75 | same UID. Any UNIX user who has a UID=0 is inherently the same as the
 | 
|---|
| 76 | <constant>root</constant> account user.
 | 
|---|
| 77 | </para>
 | 
|---|
| 78 | 
 | 
|---|
| 79 | <para>
 | 
|---|
| 80 | <indexterm><primary>system interface scripts</primary></indexterm>
 | 
|---|
| 81 | <indexterm><primary>CIFS function calls</primary></indexterm>
 | 
|---|
| 82 | <indexterm><primary>root account</primary></indexterm>
 | 
|---|
| 83 | <indexterm><primary>UNIX host system</primary></indexterm>
 | 
|---|
| 84 | All versions of Samba call system interface scripts that permit CIFS function
 | 
|---|
| 85 | calls that are used to manage users, groups, and machine accounts
 | 
|---|
| 86 | in the UNIX environment. All versions of Samba up to and including version 3.0.10
 | 
|---|
| 87 | required the use of a Windows administrator account that unambiguously maps to
 | 
|---|
| 88 | the UNIX <constant>root</constant> account to permit the execution of these
 | 
|---|
| 89 | interface scripts. The requirement to do this has understandably met with some
 | 
|---|
| 90 | disdain and consternation among Samba administrators, particularly where it became
 | 
|---|
| 91 | necessary to permit people who should not possess <constant>root</constant>-level
 | 
|---|
| 92 | access to the UNIX host system.
 | 
|---|
| 93 | </para>
 | 
|---|
| 94 | 
 | 
|---|
| 95 | <sect1>
 | 
|---|
| 96 | <title>Rights Management Capabilities</title>
 | 
|---|
| 97 | 
 | 
|---|
| 98 | <para>
 | 
|---|
| 99 | <indexterm><primary>Windows privilege model</primary></indexterm>
 | 
|---|
| 100 | <indexterm><primary>privilege model</primary></indexterm>
 | 
|---|
| 101 | <indexterm><primary>rights assigned</primary></indexterm>
 | 
|---|
| 102 | <indexterm><primary>SID</primary></indexterm>
 | 
|---|
| 103 | Samba 3.0.11 introduced support for the Windows privilege model.  This model
 | 
|---|
| 104 | allows certain rights to be assigned to a user or group SID.  In order to enable
 | 
|---|
| 105 | this feature, <smbconfoption name="enable privileges">yes</smbconfoption>
 | 
|---|
| 106 | must be defined in the <smbconfsection name="global"/> section of the &smb.conf; file.
 | 
|---|
| 107 | </para>
 | 
|---|
| 108 | 
 | 
|---|
| 109 | <para>
 | 
|---|
| 110 | <indexterm><primary>rights</primary></indexterm>
 | 
|---|
| 111 | <indexterm><primary>privileges</primary></indexterm>
 | 
|---|
| 112 | <indexterm><primary>manage privileges</primary></indexterm>
 | 
|---|
| 113 | Currently, the rights supported in Samba-3 are listed in <link linkend="rp-privs"/>.
 | 
|---|
| 114 | The remainder of this chapter explains how to manage and use these privileges on Samba servers.
 | 
|---|
| 115 | </para>
 | 
|---|
| 116 | 
 | 
|---|
| 117 | <indexterm><primary>SeMachineAccountPrivilege</primary></indexterm>
 | 
|---|
| 118 | <indexterm><primary>SePrintOperatorPrivilege</primary></indexterm>
 | 
|---|
| 119 | <indexterm><primary>SeAddUsersPrivilege</primary></indexterm>
 | 
|---|
| 120 | <indexterm><primary>SeRemoteShutdownPrivilege</primary></indexterm>
 | 
|---|
| 121 | <indexterm><primary>SeDiskOperatorPrivilege</primary></indexterm>
 | 
|---|
| 122 | <indexterm><primary>SeTakeOwnershipPrivilege</primary></indexterm>
 | 
|---|
| 123 | <table id="rp-privs">
 | 
|---|
| 124 |         <title>Current Privilege Capabilities</title>
 | 
|---|
| 125 |         <tgroup cols="2">
 | 
|---|
| 126 |                 <colspec align="right"/>
 | 
|---|
| 127 |                 <colspec align="left"/>
 | 
|---|
| 128 |                 <thead>
 | 
|---|
| 129 |                         <row>
 | 
|---|
| 130 |                                 <entry align="left">Privilege</entry>
 | 
|---|
| 131 |                                 <entry align="left">Description</entry>
 | 
|---|
| 132 |                         </row>
 | 
|---|
| 133 |                 </thead>
 | 
|---|
| 134 |                 <tbody>
 | 
|---|
| 135 |                         <row>
 | 
|---|
| 136 |                                 <entry><para>SeMachineAccountPrivilege</para></entry>
 | 
|---|
| 137 |                                 <entry><para>Add machines to domain</para></entry>
 | 
|---|
| 138 |                         </row>
 | 
|---|
| 139 |                         <row>
 | 
|---|
| 140 |                                 <entry><para>SePrintOperatorPrivilege</para></entry>
 | 
|---|
| 141 |                                 <entry><para>Manage printers</para></entry>
 | 
|---|
| 142 |                         </row>
 | 
|---|
| 143 |                         <row>
 | 
|---|
| 144 |                                 <entry><para>SeAddUsersPrivilege</para></entry>
 | 
|---|
| 145 |                                 <entry><para>Add users and groups to the domain</para></entry>
 | 
|---|
| 146 |                         </row>
 | 
|---|
| 147 |                         <row>
 | 
|---|
| 148 |                                 <entry><para>SeRemoteShutdownPrivilege</para></entry>
 | 
|---|
| 149 |                                 <entry><para>Force shutdown from a remote system</para></entry>
 | 
|---|
| 150 |                         </row>
 | 
|---|
| 151 |                         <row>
 | 
|---|
| 152 |                                 <entry><para>SeDiskOperatorPrivilege</para></entry>
 | 
|---|
| 153 |                                 <entry><para>Manage disk share</para></entry>
 | 
|---|
| 154 |                         </row>
 | 
|---|
| 155 | <!-- These are not used at this time - so void them from the docs.
 | 
|---|
| 156 |                         <row>
 | 
|---|
| 157 |                                 <entry><para>SeBackupPrivilege</para></entry>
 | 
|---|
| 158 |                                 <entry><para>Back up files and directories</para></entry>
 | 
|---|
| 159 |                         </row>
 | 
|---|
| 160 |                         <row>
 | 
|---|
| 161 |                                 <entry><para>SeRestorePrivilege</para></entry>
 | 
|---|
| 162 |                                 <entry><para>Restore files and directories</para></entry>
 | 
|---|
| 163 |                         </row>
 | 
|---|
| 164 | **** End of commented out section **** -->    
 | 
|---|
| 165 |                         <row>
 | 
|---|
| 166 |                                 <entry><para>SeTakeOwnershipPrivilege</para></entry>
 | 
|---|
| 167 |                                 <entry><para>Take ownership of files or other objects</para></entry>
 | 
|---|
| 168 |                         </row>
 | 
|---|
| 169 |             </tbody>
 | 
|---|
| 170 |         </tgroup>
 | 
|---|
| 171 | </table>
 | 
|---|
| 172 | 
 | 
|---|
| 173 | <sect2>
 | 
|---|
| 174 | <title>Using the <quote>net rpc rights</quote> Utility</title>
 | 
|---|
| 175 | 
 | 
|---|
| 176 | <para>
 | 
|---|
| 177 | <indexterm><primary>managing rights</primary></indexterm>
 | 
|---|
| 178 | <indexterm><primary>rights assigned</primary></indexterm>
 | 
|---|
| 179 | <indexterm><primary>NT4 User Manager for Domains</primary></indexterm>
 | 
|---|
| 180 | <indexterm><primary>command-line utility</primary></indexterm>
 | 
|---|
| 181 | <indexterm><primary>administrative actions</primary></indexterm>
 | 
|---|
| 182 | There are two primary means of managing the rights assigned to users and groups
 | 
|---|
| 183 | on a Samba server.  The <command>NT4 User Manager for Domains</command> may be
 | 
|---|
| 184 | used from any Windows NT4, 2000, or XP Professional domain member client to
 | 
|---|
| 185 | connect to a Samba domain controller and view/modify the rights assignments.
 | 
|---|
| 186 | This application, however, appears to have bugs when run on a client running
 | 
|---|
| 187 | Windows 2000 or later; therefore, Samba provides a command-line utility for
 | 
|---|
| 188 | performing the necessary administrative actions.
 | 
|---|
| 189 | </para>
 | 
|---|
| 190 | 
 | 
|---|
| 191 | <para>
 | 
|---|
| 192 | The <command>net rpc rights</command> utility in Samba 3.0.11 has three new subcommands:
 | 
|---|
| 193 | </para>
 | 
|---|
| 194 | 
 | 
|---|
| 195 | <variablelist>
 | 
|---|
| 196 |         <varlistentry><term>list [name|accounts]</term>
 | 
|---|
| 197 |                 <listitem><para>
 | 
|---|
| 198 | <indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>list</tertiary></indexterm>
 | 
|---|
| 199 | <indexterm><primary>available rights</primary></indexterm>
 | 
|---|
| 200 | <indexterm><primary>privileges assigned</primary></indexterm>
 | 
|---|
| 201 | <indexterm><primary>privileged accounts</primary></indexterm>
 | 
|---|
| 202 |                 When called with no arguments, <command>net rpc list</command>
 | 
|---|
| 203 |                 simply lists the available rights on the server.  When passed
 | 
|---|
| 204 |                 a specific user or group name, the tool lists the privileges
 | 
|---|
| 205 |                 currently assigned to the specified account.  When invoked using
 | 
|---|
| 206 |                 the special string <constant>accounts</constant>,
 | 
|---|
| 207 |                 <command>net rpc rights list</command> returns a list of all
 | 
|---|
| 208 |                 privileged accounts on the server and the assigned rights.
 | 
|---|
| 209 |                 </para></listitem>
 | 
|---|
| 210 |         </varlistentry>
 | 
|---|
| 211 | 
 | 
|---|
| 212 |         <varlistentry><term>grant <user> <right [right ...]></term>
 | 
|---|
| 213 |                 <listitem><para>
 | 
|---|
| 214 | <indexterm><primary>assign rights</primary></indexterm>
 | 
|---|
| 215 | <indexterm><primary>grant rights</primary></indexterm>
 | 
|---|
| 216 | <indexterm><primary>add client machines</primary></indexterm>
 | 
|---|
| 217 | <indexterm><primary>user or group</primary></indexterm>
 | 
|---|
| 218 |                 When called with no arguments, this function is used to assign
 | 
|---|
| 219 |                 a list of rights to a specified user or group.  For example,
 | 
|---|
| 220 |                 to grant the members of the Domain Admins group on a Samba domain controller,
 | 
|---|
| 221 |                 the capability to add client machines to the domain, one would run:
 | 
|---|
| 222 | <screen>
 | 
|---|
| 223 | &rootprompt; net -S server -U domadmin rpc rights grant \
 | 
|---|
| 224 |          'DOMAIN\Domain Admins' SeMachineAccountPrivilege
 | 
|---|
| 225 | </screen>
 | 
|---|
| 226 |                 The following syntax has the same result:
 | 
|---|
| 227 | <indexterm><primary>net</primary><secondary>rpc</secondary><tertiary>rights grant</tertiary></indexterm>
 | 
|---|
| 228 | <screen>
 | 
|---|
| 229 | &rootprompt; net rpc rights grant 'DOMAIN\Domain Admins' \
 | 
|---|
| 230 |      SeMachineAccountPrivilege -S server -U domadmin
 | 
|---|
| 231 | </screen>
 | 
|---|
| 232 |                 More than one privilege can be assigned by specifying a
 | 
|---|
| 233 |                 list of rights separated by spaces. The parameter 'Domain\Domain Admins'
 | 
|---|
| 234 |                 must be quoted with single ticks or using double-quotes to prevent
 | 
|---|
| 235 |                 the backslash and the space from being interpreted by the system shell.
 | 
|---|
| 236 |                 </para></listitem>
 | 
|---|
| 237 |         </varlistentry>
 | 
|---|
| 238 | 
 | 
|---|
| 239 |         <varlistentry><term>revoke <user> <right [right ...]></term>
 | 
|---|
| 240 |                 <listitem><para>
 | 
|---|
| 241 |                 This command is similar in format to <command>net rpc rights grant</command>.  Its
 | 
|---|
| 242 |                 effect is to remove an assigned right (or list of rights) from a user or group.
 | 
|---|
| 243 |                 </para></listitem>
 | 
|---|
| 244 |         </varlistentry>
 | 
|---|
| 245 | 
 | 
|---|
| 246 | </variablelist>
 | 
|---|
| 247 | 
 | 
|---|
| 248 | <note><para>
 | 
|---|
| 249 | <indexterm><primary>member</primary></indexterm>
 | 
|---|
| 250 | <indexterm><primary>Domain Admins</primary></indexterm>
 | 
|---|
| 251 | <indexterm><primary>revoke privileges</primary></indexterm>
 | 
|---|
| 252 | You must be connected as a member of the Domain Admins group to be able to grant or revoke privileges assigned
 | 
|---|
| 253 | to an account.  This capability is inherent to the Domain Admins group and is not configurable. There are no
 | 
|---|
| 254 | default rights and privileges, except the ability for a member of the Domain Admins group to assign them.
 | 
|---|
| 255 | This means that all administrative rights and privileges (other than the ability to assign them) must be 
 | 
|---|
| 256 | explicitly assigned, even for the Domain Admins group.
 | 
|---|
| 257 | </para></note>
 | 
|---|
| 258 | 
 | 
|---|
| 259 | <para>
 | 
|---|
| 260 | <indexterm><primary>performed as root</primary></indexterm>
 | 
|---|
| 261 | <indexterm><primary>necessary rights</primary></indexterm>
 | 
|---|
| 262 | <indexterm><primary>add machine script</primary></indexterm>
 | 
|---|
| 263 | <indexterm><primary></primary></indexterm>
 | 
|---|
| 264 | By default, no privileges are initially assigned to any account because certain actions will be performed as
 | 
|---|
| 265 | root once smbd determines that a user has the necessary rights.  For example, when joining a client to a
 | 
|---|
| 266 | Windows domain, <parameter>add machine script</parameter> must be executed with superuser rights in most 
 | 
|---|
| 267 | cases.  For this reason, you should be very careful about handing out privileges to accounts.
 | 
|---|
| 268 | </para>
 | 
|---|
| 269 | 
 | 
|---|
| 270 | <para>
 | 
|---|
| 271 | <indexterm><primary>Access</primary></indexterm>
 | 
|---|
| 272 | <indexterm><primary>root user</primary></indexterm>
 | 
|---|
| 273 | <indexterm><primary>bypasses privilege</primary></indexterm>
 | 
|---|
| 274 | Access as the root user (UID=0) bypasses all privilege checks.
 | 
|---|
| 275 | </para>
 | 
|---|
| 276 | 
 | 
|---|
| 277 | </sect2>
 | 
|---|
| 278 | 
 | 
|---|
| 279 | <sect2>
 | 
|---|
| 280 | <title>Description of Privileges</title>
 | 
|---|
| 281 | 
 | 
|---|
| 282 | <para>
 | 
|---|
| 283 | <indexterm><primary>privileges</primary></indexterm>
 | 
|---|
| 284 | <indexterm><primary>additional privileges</primary></indexterm>
 | 
|---|
| 285 | <indexterm><primary>house-keeping</primary></indexterm>
 | 
|---|
| 286 | The privileges that have been implemented in Samba-3.0.11 are shown below.  It is possible, and likely, that
 | 
|---|
| 287 | additional privileges may be implemented in later releases of Samba. It is also likely that any privileges
 | 
|---|
| 288 | currently implemented but not used may be removed from future releases as a housekeeping matter, so it is
 | 
|---|
| 289 | important that the successful as well as unsuccessful use of these facilities should be reported on the Samba
 | 
|---|
| 290 | mailing lists.
 | 
|---|
| 291 | </para>
 | 
|---|
| 292 | 
 | 
|---|
| 293 | <variablelist>
 | 
|---|
| 294 |         <varlistentry><term>SeAddUsersPrivilege</term>
 | 
|---|
| 295 |                 <listitem><para>
 | 
|---|
| 296 | <indexterm><primary>SeAddUsersPrivilege</primary></indexterm>
 | 
|---|
| 297 | <indexterm><primary>smbd</primary></indexterm>
 | 
|---|
| 298 | <indexterm><primary>net rpc user add</primary></indexterm>
 | 
|---|
| 299 |                 This right determines whether or not smbd will allow the
 | 
|---|
| 300 |                 user to create new user or group accounts via such tools
 | 
|---|
| 301 |                 as <command>net rpc user add</command> or 
 | 
|---|
| 302 |                 <command>NT4 User Manager for Domains.</command>
 | 
|---|
| 303 |                 </para></listitem>
 | 
|---|
| 304 |         </varlistentry>
 | 
|---|
| 305 | 
 | 
|---|
| 306 |         <varlistentry><term>SeDiskOperatorPrivilege</term>
 | 
|---|
| 307 |                 <listitem><para>
 | 
|---|
| 308 | <indexterm><primary>SeDiskOperatorPrivilege</primary></indexterm>
 | 
|---|
| 309 | <indexterm><primary>add/delete/change share</primary></indexterm>
 | 
|---|
| 310 | <indexterm><primary>ACL</primary></indexterm>
 | 
|---|
| 311 |                 Accounts that possess this right will be able to execute
 | 
|---|
| 312 |                 scripts defined by the <command>add/delete/change</command>
 | 
|---|
| 313 |                 share command in &smb.conf; file as root.  Such users will
 | 
|---|
| 314 |                 also be able to modify the ACL associated with file shares
 | 
|---|
| 315 |                 on the Samba server.
 | 
|---|
| 316 |                 </para></listitem>
 | 
|---|
| 317 |         </varlistentry>
 | 
|---|
| 318 | 
 | 
|---|
| 319 |         <varlistentry><term>SeMachineAccountPrivilege</term>
 | 
|---|
| 320 |                 <listitem><para>
 | 
|---|
| 321 | <indexterm><primary>SeMachineAccountPrivilege</primary></indexterm>
 | 
|---|
| 322 | <indexterm><primary>right to join domain</primary></indexterm>
 | 
|---|
| 323 | <indexterm><primary>join client</primary></indexterm>
 | 
|---|
| 324 |                 This right controls whether or not the user can join client
 | 
|---|
| 325 |                 machines to a Samba-controlled domain.
 | 
|---|
| 326 |                 </para></listitem>
 | 
|---|
| 327 |         </varlistentry>
 | 
|---|
| 328 | 
 | 
|---|
| 329 |         <varlistentry><term>SePrintOperatorPrivilege</term>
 | 
|---|
| 330 |                 <listitem><para>
 | 
|---|
| 331 | <indexterm><primary>SePrintOperatorPrivilege</primary></indexterm>
 | 
|---|
| 332 | <indexterm><primary>privilege</primary></indexterm>
 | 
|---|
| 333 | <indexterm><primary>global right</primary></indexterm>
 | 
|---|
| 334 | <indexterm><primary>administrative rights</primary></indexterm>
 | 
|---|
| 335 | <indexterm><primary>printers admin</primary></indexterm>
 | 
|---|
| 336 |                 This privilege operates identically to the <smbconfoption name="printer admin"/>
 | 
|---|
| 337 |                 option in the &smb.conf; file (see section 5 man page for &smb.conf;)
 | 
|---|
| 338 |                 except that it is a global right (not on a per-printer basis). 
 | 
|---|
| 339 |                 Eventually the smb.conf option will be deprecated and administrative
 | 
|---|
| 340 |                 rights to printers will be controlled exclusively by this right and
 | 
|---|
| 341 |                 the security descriptor associated with the printer object in the
 | 
|---|
| 342 |                 <filename>ntprinters.tdb</filename> file.
 | 
|---|
| 343 |                 </para></listitem>
 | 
|---|
| 344 |         </varlistentry>
 | 
|---|
| 345 | 
 | 
|---|
| 346 |         <varlistentry><term>SeRemoteShutdownPrivilege</term>
 | 
|---|
| 347 |                 <listitem><para>
 | 
|---|
| 348 | <indexterm><primary>SeRemoteShutdownPrivilege</primary></indexterm>
 | 
|---|
| 349 | <indexterm><primary>rebooting server</primary></indexterm>
 | 
|---|
| 350 | <indexterm><primary>aborting shutdown</primary></indexterm>
 | 
|---|
| 351 |                 Samba provides two hooks for shutting down or rebooting
 | 
|---|
| 352 |                 the server and for aborting a previously issued shutdown
 | 
|---|
| 353 |                 command.  Since this is an operation normally limited by
 | 
|---|
| 354 |                 the operating system to the root user, an account must possess this
 | 
|---|
| 355 |                 right to be able to execute either of these hooks.
 | 
|---|
| 356 |                 </para></listitem>
 | 
|---|
| 357 |         </varlistentry>
 | 
|---|
| 358 | 
 | 
|---|
| 359 |         <varlistentry><term>SeTakeOwnershipPrivilege</term>
 | 
|---|
| 360 |                 <listitem><para>
 | 
|---|
| 361 | <indexterm><primary>SeTakeOwnershipPrivilege</primary></indexterm>
 | 
|---|
| 362 | <indexterm><primary>take ownership</primary></indexterm>
 | 
|---|
| 363 |                 This right permits users to take ownership of files and directories.
 | 
|---|
| 364 |                 </para></listitem>
 | 
|---|
| 365 |         </varlistentry>
 | 
|---|
| 366 | 
 | 
|---|
| 367 | </variablelist>
 | 
|---|
| 368 | 
 | 
|---|
| 369 | </sect2>
 | 
|---|
| 370 | 
 | 
|---|
| 371 | <sect2>
 | 
|---|
| 372 | <title>Privileges Suppored by Windows 2000 Domain Controllers</title>
 | 
|---|
| 373 | 
 | 
|---|
| 374 | <para>
 | 
|---|
| 375 |     For reference purposes, a Windows NT4 Primary Domain Controller reports support for the following
 | 
|---|
| 376 |         privileges:
 | 
|---|
| 377 | <indexterm><primary>SeCreateTokenPrivilege</primary></indexterm>
 | 
|---|
| 378 | <indexterm><primary>SeAssignPrimaryTokenPrivilege</primary></indexterm>
 | 
|---|
| 379 | <indexterm><primary>SeLockMemoryPrivilege</primary></indexterm>
 | 
|---|
| 380 | <indexterm><primary>SeIncreaseQuotaPrivilege</primary></indexterm>
 | 
|---|
| 381 | <indexterm><primary>SeMachineAccountPrivilege</primary></indexterm>
 | 
|---|
| 382 | <indexterm><primary>SeTcbPrivilege</primary></indexterm>
 | 
|---|
| 383 | <indexterm><primary>SeSecurityPrivilege</primary></indexterm>
 | 
|---|
| 384 | <indexterm><primary>SeTakeOwnershipPrivilege</primary></indexterm>
 | 
|---|
| 385 | <indexterm><primary>SeLoadDriverPrivilege</primary></indexterm>
 | 
|---|
| 386 | <indexterm><primary>SeSystemProfilePrivilege</primary></indexterm>
 | 
|---|
| 387 | <indexterm><primary>SeSystemtimePrivilege</primary></indexterm>
 | 
|---|
| 388 | <indexterm><primary>SeProfileSingleProcessPrivilege</primary></indexterm>
 | 
|---|
| 389 | <indexterm><primary>SeIncreaseBasePriorityPrivilege</primary></indexterm>
 | 
|---|
| 390 | <indexterm><primary>SeCreatePagefilePrivilege</primary></indexterm>
 | 
|---|
| 391 | <indexterm><primary>SeCreatePermanentPrivilege</primary></indexterm>
 | 
|---|
| 392 | <indexterm><primary>SeBackupPrivilege</primary></indexterm>
 | 
|---|
| 393 | <indexterm><primary>SeRestorePrivilege</primary></indexterm>
 | 
|---|
| 394 | <indexterm><primary>SeShutdownPrivilege</primary></indexterm>
 | 
|---|
| 395 | <indexterm><primary>SeDebugPrivilege</primary></indexterm>
 | 
|---|
| 396 | <indexterm><primary>SeAuditPrivilege</primary></indexterm>
 | 
|---|
| 397 | <indexterm><primary>SeSystemEnvironmentPrivilege</primary></indexterm>
 | 
|---|
| 398 | <indexterm><primary>SeChangeNotifyPrivilege</primary></indexterm>
 | 
|---|
| 399 | <indexterm><primary>SeRemoteShutdownPrivilege</primary></indexterm>
 | 
|---|
| 400 | <screen>
 | 
|---|
| 401 |          SeCreateTokenPrivilege  Create a token object
 | 
|---|
| 402 |   SeAssignPrimaryTokenPrivilege  Replace a process level token
 | 
|---|
| 403 |           SeLockMemoryPrivilege  Lock pages in memory
 | 
|---|
| 404 |        SeIncreaseQuotaPrivilege  Increase quotas
 | 
|---|
| 405 |       SeMachineAccountPrivilege  Add workstations to domain
 | 
|---|
| 406 |                  SeTcbPrivilege  Act as part of the operating system
 | 
|---|
| 407 |             SeSecurityPrivilege  Manage auditing and security log
 | 
|---|
| 408 |        SeTakeOwnershipPrivilege  Take ownership of files or other objects
 | 
|---|
| 409 |           SeLoadDriverPrivilege  Load and unload device drivers
 | 
|---|
| 410 |        SeSystemProfilePrivilege  Profile system performance
 | 
|---|
| 411 |           SeSystemtimePrivilege  Change the system time
 | 
|---|
| 412 | SeProfileSingleProcessPrivilege  Profile single process
 | 
|---|
| 413 | SeIncreaseBasePriorityPrivilege  Increase scheduling priority
 | 
|---|
| 414 |       SeCreatePagefilePrivilege  Create a pagefile
 | 
|---|
| 415 |      SeCreatePermanentPrivilege  Create permanent shared objects
 | 
|---|
| 416 |               SeBackupPrivilege  Back up files and directories
 | 
|---|
| 417 |              SeRestorePrivilege  Restore files and directories
 | 
|---|
| 418 |             SeShutdownPrivilege  Shut down the system
 | 
|---|
| 419 |                SeDebugPrivilege  Debug programs
 | 
|---|
| 420 |                SeAuditPrivilege  Generate security audits
 | 
|---|
| 421 |    SeSystemEnvironmentPrivilege  Modify firmware environment values
 | 
|---|
| 422 |         SeChangeNotifyPrivilege  Bypass traverse checking
 | 
|---|
| 423 |       SeRemoteShutdownPrivilege  Force shutdown from a remote system
 | 
|---|
| 424 | </screen>
 | 
|---|
| 425 |         And Windows 200x/XP Domain Controllers and workstations reports to support the following privileges:
 | 
|---|
| 426 | <indexterm><primary>SeCreateTokenPrivilege</primary></indexterm>
 | 
|---|
| 427 | <indexterm><primary>SeAssignPrimaryTokenPrivilege</primary></indexterm>
 | 
|---|
| 428 | <indexterm><primary>SeLockMemoryPrivilege</primary></indexterm>
 | 
|---|
| 429 | <indexterm><primary>SeIncreaseQuotaPrivilege</primary></indexterm>
 | 
|---|
| 430 | <indexterm><primary>SeMachineAccountPrivilege</primary></indexterm>
 | 
|---|
| 431 | <indexterm><primary>SeTcbPrivilege</primary></indexterm>
 | 
|---|
| 432 | <indexterm><primary>SeSecurityPrivilege</primary></indexterm>
 | 
|---|
| 433 | <indexterm><primary>SeTakeOwnershipPrivilege</primary></indexterm>
 | 
|---|
| 434 | <indexterm><primary>SeLoadDriverPrivilege</primary></indexterm>
 | 
|---|
| 435 | <indexterm><primary>SeSystemProfilePrivilege</primary></indexterm>
 | 
|---|
| 436 | <indexterm><primary>SeSystemtimePrivilege</primary></indexterm>
 | 
|---|
| 437 | <indexterm><primary>SeProfileSingleProcessPrivilege</primary></indexterm>
 | 
|---|
| 438 | <indexterm><primary>SeIncreaseBasePriorityPrivilege</primary></indexterm>
 | 
|---|
| 439 | <indexterm><primary>SeCreatePagefilePrivilege</primary></indexterm>
 | 
|---|
| 440 | <indexterm><primary>SeCreatePermanentPrivilege</primary></indexterm>
 | 
|---|
| 441 | <indexterm><primary>SeBackupPrivilege</primary></indexterm>
 | 
|---|
| 442 | <indexterm><primary>SeRestorePrivilege</primary></indexterm>
 | 
|---|
| 443 | <indexterm><primary>SeShutdownPrivilege</primary></indexterm>
 | 
|---|
| 444 | <indexterm><primary>SeDebugPrivilege</primary></indexterm>
 | 
|---|
| 445 | <indexterm><primary>SeAuditPrivilege</primary></indexterm>
 | 
|---|
| 446 | <indexterm><primary>SeSystemEnvironmentPrivilege</primary></indexterm>
 | 
|---|
| 447 | <indexterm><primary>SeChangeNotifyPrivilege</primary></indexterm>
 | 
|---|
| 448 | <indexterm><primary>SeRemoteShutdownPrivilege</primary></indexterm>
 | 
|---|
| 449 | <indexterm><primary>SeUndockPrivilege</primary></indexterm>
 | 
|---|
| 450 | <indexterm><primary>SeSyncAgentPrivilege</primary></indexterm>
 | 
|---|
| 451 | <indexterm><primary>SeEnableDelegationPrivilege</primary></indexterm>
 | 
|---|
| 452 | <indexterm><primary>SeManageVolumePrivilege</primary></indexterm>
 | 
|---|
| 453 | <indexterm><primary>SeImpersonatePrivilege</primary></indexterm>
 | 
|---|
| 454 | <indexterm><primary>SeCreateGlobalPrivilege</primary></indexterm>
 | 
|---|
| 455 | <screen>
 | 
|---|
| 456 |          SeCreateTokenPrivilege  Create a token object
 | 
|---|
| 457 |   SeAssignPrimaryTokenPrivilege  Replace a process level token
 | 
|---|
| 458 |           SeLockMemoryPrivilege  Lock pages in memory
 | 
|---|
| 459 |        SeIncreaseQuotaPrivilege  Increase quotas
 | 
|---|
| 460 |       SeMachineAccountPrivilege  Add workstations to domain
 | 
|---|
| 461 |                  SeTcbPrivilege  Act as part of the operating system
 | 
|---|
| 462 |             SeSecurityPrivilege  Manage auditing and security log
 | 
|---|
| 463 |        SeTakeOwnershipPrivilege  Take ownership of files or other objects
 | 
|---|
| 464 |           SeLoadDriverPrivilege  Load and unload device drivers
 | 
|---|
| 465 |        SeSystemProfilePrivilege  Profile system performance
 | 
|---|
| 466 |           SeSystemtimePrivilege  Change the system time
 | 
|---|
| 467 | SeProfileSingleProcessPrivilege  Profile single process
 | 
|---|
| 468 | SeIncreaseBasePriorityPrivilege  Increase scheduling priority
 | 
|---|
| 469 |       SeCreatePagefilePrivilege  Create a pagefile
 | 
|---|
| 470 |      SeCreatePermanentPrivilege  Create permanent shared objects
 | 
|---|
| 471 |               SeBackupPrivilege  Back up files and directories
 | 
|---|
| 472 |              SeRestorePrivilege  Restore files and directories
 | 
|---|
| 473 |             SeShutdownPrivilege  Shut down the system
 | 
|---|
| 474 |                SeDebugPrivilege  Debug programs
 | 
|---|
| 475 |                SeAuditPrivilege  Generate security audits
 | 
|---|
| 476 |    SeSystemEnvironmentPrivilege  Modify firmware environment values
 | 
|---|
| 477 |         SeChangeNotifyPrivilege  Bypass traverse checking
 | 
|---|
| 478 |       SeRemoteShutdownPrivilege  Force shutdown from a remote system
 | 
|---|
| 479 |               SeUndockPrivilege  Remove computer from docking station
 | 
|---|
| 480 |            SeSyncAgentPrivilege  Synchronize directory service data
 | 
|---|
| 481 |     SeEnableDelegationPrivilege  Enable computer and user accounts to
 | 
|---|
| 482 |                                  be trusted for delegation
 | 
|---|
| 483 |         SeManageVolumePrivilege  Perform volume maintenance tasks
 | 
|---|
| 484 |          SeImpersonatePrivilege  Impersonate a client after authentication
 | 
|---|
| 485 |         SeCreateGlobalPrivilege  Create global objects
 | 
|---|
| 486 | </screen>
 | 
|---|
| 487 | <indexterm><primary>equivalence</primary></indexterm>
 | 
|---|
| 488 |     The Samba Team is implementing only those privileges that are logical and useful in the UNIX/Linux
 | 
|---|
| 489 |     environment. Many of the Windows 200X/XP privileges have no direct equivalence in UNIX.
 | 
|---|
| 490 |     </para>
 | 
|---|
| 491 | 
 | 
|---|
| 492 | </sect2>
 | 
|---|
| 493 | 
 | 
|---|
| 494 | </sect1>
 | 
|---|
| 495 | 
 | 
|---|
| 496 | <sect1>
 | 
|---|
| 497 | <title>The Administrator Domain SID</title>
 | 
|---|
| 498 | 
 | 
|---|
| 499 | <para>
 | 
|---|
| 500 | <indexterm><primary>domain Administrator</primary></indexterm>
 | 
|---|
| 501 | <indexterm><primary>User Rights and Privileges</primary></indexterm>
 | 
|---|
| 502 | <indexterm><primary>passdb backend</primary></indexterm>
 | 
|---|
| 503 | <indexterm><primary>SID</primary></indexterm>
 | 
|---|
| 504 | <indexterm><primary>net getlocalsid</primary></indexterm>
 | 
|---|
| 505 | Please note that every Windows NT4 and later server requires a domain Administrator account. Samba versions
 | 
|---|
| 506 | commencing with 3.0.11 permit Administrative duties to be performed via assigned rights and privileges
 | 
|---|
| 507 | (see <link linkend="rights">User Rights and Privileges</link>).  An account in the server's passdb backend can
 | 
|---|
| 508 | be set to the well-known RID of the default administrator account.  To obtain the domain SID on a Samba domain
 | 
|---|
| 509 | controller, run the following command:
 | 
|---|
| 510 | <screen>
 | 
|---|
| 511 | &rootprompt; net getlocalsid
 | 
|---|
| 512 | SID for domain FOO is: S-1-5-21-4294955119-3368514841-2087710299
 | 
|---|
| 513 | </screen>
 | 
|---|
| 514 | <indexterm><primary>RID</primary></indexterm>
 | 
|---|
| 515 | You may assign the domain administrator RID to an account using the <command>pdbedit</command>
 | 
|---|
| 516 | command as shown here:
 | 
|---|
| 517 | <indexterm><primary>pdbedit</primary></indexterm>
 | 
|---|
| 518 | <screen>
 | 
|---|
| 519 | &rootprompt; pdbedit -U S-1-5-21-4294955119-3368514841-2087710299-500 -u root -r
 | 
|---|
| 520 | </screen>
 | 
|---|
| 521 | </para>
 | 
|---|
| 522 | 
 | 
|---|
| 523 | <note><para>
 | 
|---|
| 524 | <indexterm><primary>RID 500</primary></indexterm>
 | 
|---|
| 525 | <indexterm><primary>well known RID</primary></indexterm>
 | 
|---|
| 526 | <indexterm><primary>rights and privileges</primary></indexterm>
 | 
|---|
| 527 | <indexterm><primary>root account</primary></indexterm>
 | 
|---|
| 528 | The RID 500 is the well known standard value of the default Administrator account. It is the RID
 | 
|---|
| 529 | that confers the rights and privileges that the Administrator account has on a Windows machine
 | 
|---|
| 530 | or domain. Under UNIX/Linux the equivalent is UID=0 (the root account).
 | 
|---|
| 531 | </para></note>
 | 
|---|
| 532 | 
 | 
|---|
| 533 | <para>
 | 
|---|
| 534 | <indexterm><primary>without Administrator account</primary></indexterm>
 | 
|---|
| 535 | <indexterm><primary>equivalent rights and privileges</primary></indexterm>
 | 
|---|
| 536 | <indexterm><primary>Windows group account</primary></indexterm>
 | 
|---|
| 537 | <indexterm><primary>3.0.11</primary></indexterm>
 | 
|---|
| 538 | Releases of Samba version 3.0.11 and later make it possible to operate without an Administrator account
 | 
|---|
| 539 | provided equivalent rights and privileges have been established for a Windows user or a Windows
 | 
|---|
| 540 | group account. 
 | 
|---|
| 541 | </para>
 | 
|---|
| 542 | 
 | 
|---|
| 543 | </sect1>
 | 
|---|
| 544 | 
 | 
|---|
| 545 | <sect1>
 | 
|---|
| 546 | <title>Common Errors</title>
 | 
|---|
| 547 | 
 | 
|---|
| 548 |         <sect2>
 | 
|---|
| 549 |         <title>What Rights and Privileges Will Permit Windows Client Administration?</title>
 | 
|---|
| 550 | 
 | 
|---|
| 551 |         <para>
 | 
|---|
| 552 | <indexterm><primary>domain global</primary></indexterm>
 | 
|---|
| 553 | <indexterm><primary>local group</primary></indexterm>
 | 
|---|
| 554 | <indexterm><primary>administrative rights</primary></indexterm>
 | 
|---|
| 555 | <indexterm><primary>Windows client</primary></indexterm>
 | 
|---|
| 556 |         When a Windows NT4 (or later) client joins a domain, the domain global <literal>Domain Admins</literal> group
 | 
|---|
| 557 |         is added to the membership of the local <literal>Administrators</literal> group on the client. Any user who is
 | 
|---|
| 558 |         a member of the domain global <literal>Domain Admins</literal> group will have administrative rights on the
 | 
|---|
| 559 |         Windows client.
 | 
|---|
| 560 |         </para>
 | 
|---|
| 561 | 
 | 
|---|
| 562 |         <para>
 | 
|---|
| 563 | <indexterm><primary>desirable solution</primary></indexterm>
 | 
|---|
| 564 | <indexterm><primary>administrative rights and privileges</primary></indexterm>
 | 
|---|
| 565 | <indexterm><primary>Power Users</primary></indexterm>
 | 
|---|
| 566 | <indexterm><primary>domain global user</primary></indexterm>
 | 
|---|
| 567 | <indexterm><primary>domain global group</primary></indexterm>
 | 
|---|
| 568 |         This is often not the most desirable solution because it means that the user will have administrative
 | 
|---|
| 569 |         rights and privileges on domain servers also. The <literal>Power Users</literal> group on Windows client
 | 
|---|
| 570 |         workstations permits local administration of the workstation alone. Any domain global user or domain global
 | 
|---|
| 571 |         group can be added to the membership of the local workstation group <literal>Power Users</literal>.
 | 
|---|
| 572 |         </para>
 | 
|---|
| 573 | 
 | 
|---|
| 574 |         <para>
 | 
|---|
| 575 | <indexterm><primary>Nested Group Support</primary></indexterm>
 | 
|---|
| 576 | <indexterm><primary>add domain users and groups to a local group</primary></indexterm>
 | 
|---|
| 577 | <indexterm><primary>net</primary></indexterm>
 | 
|---|
| 578 | <indexterm><primary>Windows workstation.</primary></indexterm>
 | 
|---|
| 579 |         See <link linkend="nestedgrpmgmgt">Nested Group Support</link> for an example of how to add domain users
 | 
|---|
| 580 |         and groups to a local group that is on a Windows workstation. The use of the <command>net</command>
 | 
|---|
| 581 |         command permits this to be done from the Samba server.
 | 
|---|
| 582 |         </para>
 | 
|---|
| 583 | 
 | 
|---|
| 584 |         <para>
 | 
|---|
| 585 | <indexterm><primary>cmd</primary></indexterm>
 | 
|---|
| 586 | <indexterm><primary>cmd shell</primary></indexterm>
 | 
|---|
| 587 | <indexterm><primary>net</primary><secondary>localgroup</secondary></indexterm>
 | 
|---|
| 588 |         Another way this can be done is to log onto the Windows workstation as the user
 | 
|---|
| 589 |         <literal>Administrator</literal>, then open a <command>cmd</command> shell, then execute:
 | 
|---|
| 590 | <screen>
 | 
|---|
| 591 | &dosprompt; net localgroup administrators /add <userinput>domain_name\entity</userinput>
 | 
|---|
| 592 | </screen>
 | 
|---|
| 593 |         where <literal>entity</literal> is either a domain user or a domain group account name.
 | 
|---|
| 594 |         </para>
 | 
|---|
| 595 | 
 | 
|---|
| 596 |         </sect2>
 | 
|---|
| 597 | 
 | 
|---|
| 598 | </sect1>
 | 
|---|
| 599 | 
 | 
|---|
| 600 | </chapter>
 | 
|---|