| 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 Supported 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> | 
|---|