| 1 | <html>
|
|---|
| 2 | <body bgcolor="#ffffff">
|
|---|
| 3 |
|
|---|
| 4 | <img src="samba2_xs.gif" border="0" alt=" " height="100" width="76"
|
|---|
| 5 | hspace="10" align="left" />
|
|---|
| 6 |
|
|---|
| 7 | <h1 class="head0">Chapter 8. Advanced Disk Shares</h1>
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 | <p>This chapter continues our discussion of configuring Samba from <a href="ch06.html">Chapter 6</a>. We will cover some more advanced issues
|
|---|
| 11 | regarding the integration of Unix and Windows filesystems, including
|
|---|
| 12 | hidden files, Unix links, file permissions, name mangling, case
|
|---|
| 13 | sensitivity of filenames, file locking, opportunistic locking
|
|---|
| 14 | (oplocks), connection scripts, supporting Microsoft Dfs (Distributed
|
|---|
| 15 | filesystem) shares, and using NIS home directories.</p>
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 | <div class="sect1"><a name="samba2-CHP-8-SECT-1"/>
|
|---|
| 19 |
|
|---|
| 20 | <h2 class="head1">Filesystem Differences</h2>
|
|---|
| 21 |
|
|---|
| 22 | <p>One of the biggest issues for which Samba has to correct is the
|
|---|
| 23 | difference between Unix and Microsoft filesystems. This includes
|
|---|
| 24 | items such as handling symbolic links, hidden files, and dot files.
|
|---|
| 25 | In addition, file permissions can also be a headache if not properly
|
|---|
| 26 | accounted for.</p>
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 | <div class="sect2"><a name="samba2-CHP-8-SECT-1.1"/>
|
|---|
| 30 |
|
|---|
| 31 | <h3 class="head2">Hiding and Vetoing Files</h3>
|
|---|
| 32 |
|
|---|
| 33 | <p><a name="INDEX-1"/><a name="INDEX-2"/>Sometimes you need to ensure that a user
|
|---|
| 34 | cannot see or access a file at all. Other times, you
|
|---|
| 35 | don't want to keep users from accessing a
|
|---|
| 36 | file—you just want to hide it when they view the contents of
|
|---|
| 37 | the directory. On Windows systems, an attribute of files allows them
|
|---|
| 38 | to be hidden from a folder listing. With Unix, the traditional way of
|
|---|
| 39 | hiding files in a directory is to use a <a name="INDEX-3"/><a name="INDEX-4"/>dot (.) as the first character in the
|
|---|
| 40 | filename. This prevents items such as configuration files from being
|
|---|
| 41 | seen when performing an ordinary <em class="emphasis">ls</em> command.
|
|---|
| 42 | Keeping a user from accessing a file at all, however, involves
|
|---|
| 43 | working with permissions on files and directories.</p>
|
|---|
| 44 |
|
|---|
| 45 | <p>The first option we should discuss is the Boolean
|
|---|
| 46 | <tt class="literal">hide</tt><a name="INDEX-5"/><a name="INDEX-6"/> <tt class="literal">dot</tt>
|
|---|
| 47 | <tt class="literal">files</tt>. When it is set to <tt class="literal">yes</tt>,
|
|---|
| 48 | Samba reports files beginning with a period (.) as having their
|
|---|
| 49 | hidden attribute set. If the user has chosen to show all hidden files
|
|---|
| 50 | while browsing (e.g., using the Folder Options menu item under the
|
|---|
| 51 | View menu in Windows 98), he will still be able to see the files,
|
|---|
| 52 | although his icons will appear
|
|---|
| 53 | "ghosted," or slightly grayed-out.
|
|---|
| 54 | If the client is configured not to show hidden files, the files will
|
|---|
| 55 | not appear at all.</p>
|
|---|
| 56 |
|
|---|
| 57 | <p>Instead of simply hiding files beginning with a dot, you can also
|
|---|
| 58 | specify a string pattern to Samba for files to hide, using the
|
|---|
| 59 | <tt class="literal">hide</tt><a name="INDEX-7"/> <tt class="literal">files</tt>
|
|---|
| 60 | option. For example, let's assume you specified the
|
|---|
| 61 | following in our example <tt class="literal">[data]</tt> share:</p>
|
|---|
| 62 |
|
|---|
| 63 | <blockquote><pre class="code">[data]
|
|---|
| 64 | hide files = /*.java/*README*/</pre></blockquote>
|
|---|
| 65 |
|
|---|
| 66 | <p>Each entry for this option must begin, end, or be separated from
|
|---|
| 67 | another with a slash ( / ) character, even if only one pattern is
|
|---|
| 68 | listed. This convention allows spaces to appear in filenames. The
|
|---|
| 69 | slashes have nothing to do with Unix directories; they are instead
|
|---|
| 70 | acting as delimiters for the <tt class="literal">hide</tt>
|
|---|
| 71 | <tt class="literal">files</tt> values.</p>
|
|---|
| 72 |
|
|---|
| 73 | <p>If you want to prevent users from seeing files completely, you can
|
|---|
| 74 | instead use the <tt class="literal">veto</tt><a name="INDEX-8"/> <tt class="literal">files</tt>
|
|---|
| 75 | option. This option, which takes the same syntax as the
|
|---|
| 76 | <tt class="literal">hide</tt> <tt class="literal">files</tt> option, specifies a
|
|---|
| 77 | list of files that should never be seen by the user. For example,
|
|---|
| 78 | let's change the <tt class="literal">[data]</tt> share to
|
|---|
| 79 | the following:</p>
|
|---|
| 80 |
|
|---|
| 81 | <blockquote><pre class="code">[data]
|
|---|
| 82 | veto files = /*.java/*README*/</pre></blockquote>
|
|---|
| 83 |
|
|---|
| 84 | <p>The syntax of this option is identical to the <tt class="literal">hide</tt>
|
|---|
| 85 | <tt class="literal">files</tt> configuration option: each entry must begin,
|
|---|
| 86 | end, or be separated from another with a slash (<tt class="literal">/</tt>)
|
|---|
| 87 | character, even if only one pattern is listed. If you do so, files
|
|---|
| 88 | that match the pattern, such as <em class="filename">hello.java</em> and
|
|---|
| 89 | <em class="filename">README.txt,</em> will simply disappear from the
|
|---|
| 90 | directory, and the user cannot access them through SMB.</p>
|
|---|
| 91 |
|
|---|
| 92 | <p><a name="INDEX-9"/>We need to address
|
|---|
| 93 | one other question. What happens if the user tries to delete a
|
|---|
| 94 | directory that contains vetoed files? This is where the
|
|---|
| 95 | <tt class="literal">delete</tt><a name="INDEX-10"/> <tt class="literal">veto</tt>
|
|---|
| 96 | <tt class="literal">files</tt> option comes in. If this Boolean option is
|
|---|
| 97 | set to <tt class="literal">yes</tt>, the user can delete both the regular
|
|---|
| 98 | files and the vetoed files in the directory, and the directory itself
|
|---|
| 99 | is removed. If the option is set to <tt class="literal">no</tt>, the user
|
|---|
| 100 | cannot delete the vetoed files, and consequently the directory is not
|
|---|
| 101 | deleted either. From the user's perspective, the
|
|---|
| 102 | directory appears empty, but cannot be removed.</p>
|
|---|
| 103 |
|
|---|
| 104 | <p>The <tt class="literal">dont</tt><a name="INDEX-11"/> <tt class="literal">descend</tt>
|
|---|
| 105 | directive specifies a list of directories whose contents Samba should
|
|---|
| 106 | not make visible. Note that we say <em class="emphasis">contents</em>, not
|
|---|
| 107 | the directory itself. Users can enter a directory marked as such, but
|
|---|
| 108 | they are prohibited from descending the directory tree any
|
|---|
| 109 | farther—they always see an empty folder. For example,
|
|---|
| 110 | let's use this option with a more basic form of the
|
|---|
| 111 | share that we defined earlier in the chapter:</p>
|
|---|
| 112 |
|
|---|
| 113 | <blockquote><pre class="code">[data]
|
|---|
| 114 | dont descend = config defaults</pre></blockquote>
|
|---|
| 115 |
|
|---|
| 116 | <p>In addition, let's assume that the
|
|---|
| 117 | <em class="filename">/home/samba/data</em> directory has the following
|
|---|
| 118 | contents:</p>
|
|---|
| 119 |
|
|---|
| 120 | <blockquote><pre class="code">drwxr-xr-x 6 tom users 1024 Jun 13 09:24 .
|
|---|
| 121 | drwxr-xr-x 8 root root 1024 Jun 10 17:53 ..
|
|---|
| 122 | -rw-r--r-- 2 tom users 1024 Jun 9 11:43 README
|
|---|
| 123 | drwxr-xr-x 3 tom users 1024 Jun 13 09:28 config
|
|---|
| 124 | drwxr-xr-x 3 tom users 1024 Jun 13 09:28 defaults
|
|---|
| 125 | drwxr-xr-x 3 tom users 1024 Jun 13 09:28 market</pre></blockquote>
|
|---|
| 126 |
|
|---|
| 127 | <p>If the user then connects to the share, she would see the directories
|
|---|
| 128 | in the share. However, the contents of the
|
|---|
| 129 | <em class="filename">/config</em> and <em class="filename">/defaults</em>
|
|---|
| 130 | directories would appear empty to her, even if other folders or files
|
|---|
| 131 | existed in them. In addition, users cannot write any data to the
|
|---|
| 132 | folder (which prevents them from creating a file or folder with the
|
|---|
| 133 | same name as one that is already there but invisible). If a user
|
|---|
| 134 | attempts to do so, she will receive an "Access
|
|---|
| 135 | Denied" message. The <tt class="literal">dont</tt>
|
|---|
| 136 | <tt class="literal">descend</tt> option is an administrative
|
|---|
| 137 | option—not a security option—and is not a substitute for
|
|---|
| 138 | good file permissions. <a name="INDEX-12"/><a name="INDEX-13"/></p>
|
|---|
| 139 |
|
|---|
| 140 |
|
|---|
| 141 | </div>
|
|---|
| 142 |
|
|---|
| 143 |
|
|---|
| 144 | <div class="sect2"><a name="samba2-CHP-8-SECT-1.2"/>
|
|---|
| 145 |
|
|---|
| 146 | <h3 class="head2">Links</h3>
|
|---|
| 147 |
|
|---|
| 148 | <p><a name="INDEX-14"/>When a client
|
|---|
| 149 | tries to open a symbolic link on a Samba server share, Samba attempts
|
|---|
| 150 | to follow the link to find the real file and let the client open it,
|
|---|
| 151 | as if the user were on a Unix machine. If you don't
|
|---|
| 152 | want to allow this, set the <tt class="literal">follow</tt>
|
|---|
| 153 | <tt class="literal">symlinks</tt> option like this:</p>
|
|---|
| 154 |
|
|---|
| 155 | <blockquote><pre class="code">[data]
|
|---|
| 156 | follow symlinks = no</pre></blockquote>
|
|---|
| 157 |
|
|---|
| 158 | <p>You can test this by setting up and trying to access a symbolic link.
|
|---|
| 159 | Create a directory on the Unix server inside the share, acting as the
|
|---|
| 160 | user under which you will log in to Samba. Enter the following
|
|---|
| 161 | commands:</p>
|
|---|
| 162 |
|
|---|
| 163 | <blockquote><pre class="code">$ <tt class="userinput"><b>echo "This is a test" >hello.txt</b></tt>
|
|---|
| 164 | $ <tt class="userinput"><b>ln -s hello.txt hello-link.txt</b></tt></pre></blockquote>
|
|---|
| 165 |
|
|---|
| 166 | <p>This results in the text file <em class="filename">hello.txt</em> and a
|
|---|
| 167 | symbolic link to it called <em class="filename">hello-link.txt</em>.
|
|---|
| 168 | Normally, if you double-click either one, you will receive a file
|
|---|
| 169 | that has the text "This is a test"
|
|---|
| 170 | inside of it. However, with the <tt class="literal">follow</tt>
|
|---|
| 171 | <tt class="literal">symlinks</tt><a name="INDEX-15"/> option set to
|
|---|
| 172 | <tt class="literal">no</tt>, you will receive an error dialog if you
|
|---|
| 173 | double-click <em class="filename">hello-link.txt</em>.</p>
|
|---|
| 174 |
|
|---|
| 175 | <p>The <tt class="literal">wide</tt><a name="INDEX-16"/> <tt class="literal">links</tt>
|
|---|
| 176 | option, if set to <tt class="literal">no</tt>, prevents the client user
|
|---|
| 177 | from following symbolic links that point outside the shared directory
|
|---|
| 178 | tree. For example, let's assume that we modified the
|
|---|
| 179 | <tt class="literal">[data]</tt> share as follows:</p>
|
|---|
| 180 |
|
|---|
| 181 | <blockquote><pre class="code">[data]
|
|---|
| 182 | follow symlinks = yes
|
|---|
| 183 | wide links = no</pre></blockquote>
|
|---|
| 184 |
|
|---|
| 185 | <p>As long as the <tt class="literal">follow</tt><a name="INDEX-17"/>
|
|---|
| 186 | <tt class="literal">symlinks</tt> option is disabled, Samba will refuse to
|
|---|
| 187 | follow any symbolic links outside the current share tree. If we
|
|---|
| 188 | create a file outside the share (for example, in
|
|---|
| 189 | someone's home directory) and then create a link to
|
|---|
| 190 | it in the share as follows:</p>
|
|---|
| 191 |
|
|---|
| 192 | <blockquote><pre class="code">ln -s ~tom/datafile ./datafile</pre></blockquote>
|
|---|
| 193 |
|
|---|
| 194 | <p>the client cannot open the file in Tom's home
|
|---|
| 195 | directory.</p>
|
|---|
| 196 |
|
|---|
| 197 |
|
|---|
| 198 | </div>
|
|---|
| 199 |
|
|---|
| 200 |
|
|---|
| 201 | <div class="sect2"><a name="samba2-CHP-8-SECT-1.3"/>
|
|---|
| 202 |
|
|---|
| 203 | <h3 class="head2">Filesystem Options</h3>
|
|---|
| 204 |
|
|---|
| 205 | <p><a href="ch08.html#samba2-CHP-8-TABLE-1">Table 8-1</a> <a name="INDEX-18"/><a name="INDEX-19"/>shows a breakdown of the options we
|
|---|
| 206 | discussed earlier. We recommend the defaults for most, except those
|
|---|
| 207 | listed in the following descriptions.</p>
|
|---|
| 208 |
|
|---|
| 209 | <a name="samba2-CHP-8-TABLE-1"/><h4 class="head4">Table 8-1. Filesystem configuration options</h4><table border="1">
|
|---|
| 210 |
|
|---|
| 211 |
|
|---|
| 212 |
|
|---|
| 213 |
|
|---|
| 214 |
|
|---|
| 215 |
|
|---|
| 216 | <tr>
|
|---|
| 217 | <th>
|
|---|
| 218 | <p>Option</p>
|
|---|
| 219 | </th>
|
|---|
| 220 | <th>
|
|---|
| 221 | <p>Parameters</p>
|
|---|
| 222 | </th>
|
|---|
| 223 | <th>
|
|---|
| 224 | <p>Function</p>
|
|---|
| 225 | </th>
|
|---|
| 226 | <th>
|
|---|
| 227 | <p>Default</p>
|
|---|
| 228 | </th>
|
|---|
| 229 | <th>
|
|---|
| 230 | <p>Scope</p>
|
|---|
| 231 | </th>
|
|---|
| 232 | </tr>
|
|---|
| 233 |
|
|---|
| 234 |
|
|---|
| 235 | <tr>
|
|---|
| 236 | <td>
|
|---|
| 237 | <p><tt class="literal">dont descend</tt></p>
|
|---|
| 238 | </td>
|
|---|
| 239 | <td>
|
|---|
| 240 | <p>string (list of directories)</p>
|
|---|
| 241 | </td>
|
|---|
| 242 | <td>
|
|---|
| 243 | <p>Indicates a list of directories whose contents Samba should make
|
|---|
| 244 | invisible to clients.</p>
|
|---|
| 245 | </td>
|
|---|
| 246 | <td>
|
|---|
| 247 | <p>None</p>
|
|---|
| 248 | </td>
|
|---|
| 249 | <td>
|
|---|
| 250 | <p>Share</p>
|
|---|
| 251 | </td>
|
|---|
| 252 | </tr>
|
|---|
| 253 | <tr>
|
|---|
| 254 | <td>
|
|---|
| 255 | <p><tt class="literal">follow</tt> <tt class="literal">symlinks</tt></p>
|
|---|
| 256 | </td>
|
|---|
| 257 | <td>
|
|---|
| 258 | <p>Boolean</p>
|
|---|
| 259 | </td>
|
|---|
| 260 | <td>
|
|---|
| 261 | <p>If set to <tt class="literal">no</tt>, will not honor symbolic links.</p>
|
|---|
| 262 | </td>
|
|---|
| 263 | <td>
|
|---|
| 264 | <p><tt class="literal">yes</tt></p>
|
|---|
| 265 | </td>
|
|---|
| 266 | <td>
|
|---|
| 267 | <p>Share</p>
|
|---|
| 268 | </td>
|
|---|
| 269 | </tr>
|
|---|
| 270 | <tr>
|
|---|
| 271 | <td>
|
|---|
| 272 | <p><tt class="literal">getwd cache</tt></p>
|
|---|
| 273 | </td>
|
|---|
| 274 | <td>
|
|---|
| 275 | <p>Boolean</p>
|
|---|
| 276 | </td>
|
|---|
| 277 | <td>
|
|---|
| 278 | <p>If set to <tt class="literal">yes</tt>, will use a cache for
|
|---|
| 279 | <tt class="literal">getwd( )</tt> calls.</p>
|
|---|
| 280 | </td>
|
|---|
| 281 | <td>
|
|---|
| 282 | <p><tt class="literal">yes</tt></p>
|
|---|
| 283 | </td>
|
|---|
| 284 | <td>
|
|---|
| 285 | <p>Global</p>
|
|---|
| 286 | </td>
|
|---|
| 287 | </tr>
|
|---|
| 288 | <tr>
|
|---|
| 289 | <td>
|
|---|
| 290 | <p><tt class="literal">wide links</tt></p>
|
|---|
| 291 | </td>
|
|---|
| 292 | <td>
|
|---|
| 293 | <p>Boolean</p>
|
|---|
| 294 | </td>
|
|---|
| 295 | <td>
|
|---|
| 296 | <p>If set to <tt class="literal">yes</tt>, will follow symbolic links outside
|
|---|
| 297 | the share.</p>
|
|---|
| 298 | </td>
|
|---|
| 299 | <td>
|
|---|
| 300 | <p><tt class="literal">yes</tt></p>
|
|---|
| 301 | </td>
|
|---|
| 302 | <td>
|
|---|
| 303 | <p>Share</p>
|
|---|
| 304 | </td>
|
|---|
| 305 | </tr>
|
|---|
| 306 | <tr>
|
|---|
| 307 | <td>
|
|---|
| 308 | <p><tt class="literal">hide dot files</tt></p>
|
|---|
| 309 | </td>
|
|---|
| 310 | <td>
|
|---|
| 311 | <p>Boolean</p>
|
|---|
| 312 | </td>
|
|---|
| 313 | <td>
|
|---|
| 314 | <p>If set to <tt class="literal">yes</tt>, treats Unix hidden files as hidden
|
|---|
| 315 | files in Windows.</p>
|
|---|
| 316 | </td>
|
|---|
| 317 | <td>
|
|---|
| 318 | <p><tt class="literal">yes</tt></p>
|
|---|
| 319 | </td>
|
|---|
| 320 | <td>
|
|---|
| 321 | <p>Share</p>
|
|---|
| 322 | </td>
|
|---|
| 323 | </tr>
|
|---|
| 324 | <tr>
|
|---|
| 325 | <td>
|
|---|
| 326 | <p><tt class="literal">hide files</tt></p>
|
|---|
| 327 | </td>
|
|---|
| 328 | <td>
|
|---|
| 329 | <p>string (list of files)</p>
|
|---|
| 330 | </td>
|
|---|
| 331 | <td>
|
|---|
| 332 | <p>List of file patterns to treat as hidden.</p>
|
|---|
| 333 | </td>
|
|---|
| 334 | <td>
|
|---|
| 335 | <p>None</p>
|
|---|
| 336 | </td>
|
|---|
| 337 | <td>
|
|---|
| 338 | <p>Share</p>
|
|---|
| 339 | </td>
|
|---|
| 340 | </tr>
|
|---|
| 341 | <tr>
|
|---|
| 342 | <td>
|
|---|
| 343 | <p><tt class="literal">veto files</tt></p>
|
|---|
| 344 | </td>
|
|---|
| 345 | <td>
|
|---|
| 346 | <p>string (list of files)</p>
|
|---|
| 347 | </td>
|
|---|
| 348 | <td>
|
|---|
| 349 | <p>List of file patterns to never show.</p>
|
|---|
| 350 | </td>
|
|---|
| 351 | <td>
|
|---|
| 352 | <p>None</p>
|
|---|
| 353 | </td>
|
|---|
| 354 | <td>
|
|---|
| 355 | <p>Share</p>
|
|---|
| 356 | </td>
|
|---|
| 357 | </tr>
|
|---|
| 358 | <tr>
|
|---|
| 359 | <td>
|
|---|
| 360 | <p><tt class="literal">delete veto</tt> <tt class="literal">files</tt></p>
|
|---|
| 361 | </td>
|
|---|
| 362 | <td>
|
|---|
| 363 | <p>Boolean</p>
|
|---|
| 364 | </td>
|
|---|
| 365 | <td>
|
|---|
| 366 | <p>If set to <tt class="literal">yes</tt>, will delete files matched by
|
|---|
| 367 | <tt class="literal">veto files</tt> when the directory they reside in is
|
|---|
| 368 | deleted.</p>
|
|---|
| 369 | </td>
|
|---|
| 370 | <td>
|
|---|
| 371 | <p><tt class="literal">no</tt></p>
|
|---|
| 372 | </td>
|
|---|
| 373 | <td>
|
|---|
| 374 | <p>Share</p>
|
|---|
| 375 | </td>
|
|---|
| 376 | </tr>
|
|---|
| 377 |
|
|---|
| 378 | </table>
|
|---|
| 379 |
|
|---|
| 380 |
|
|---|
| 381 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.1"/>
|
|---|
| 382 |
|
|---|
| 383 | <h3 class="head3">dont descend</h3>
|
|---|
| 384 |
|
|---|
| 385 | <p>The <tt class="literal">dont</tt><a name="INDEX-20"/> <tt class="literal">descend</tt>
|
|---|
| 386 | option can be used to specify various directories that should appear
|
|---|
| 387 | empty to the client. Note that the directory itself will still
|
|---|
| 388 | appear. However, Samba will not show any of the contents of the
|
|---|
| 389 | directory to the client user. This is not a good option to use as a
|
|---|
| 390 | security feature; it is really meant only as a convenience to keep
|
|---|
| 391 | users from casually browsing into directories that might have
|
|---|
| 392 | sensitive files. See our example earlier in this section.</p>
|
|---|
| 393 |
|
|---|
| 394 |
|
|---|
| 395 | </div>
|
|---|
| 396 |
|
|---|
| 397 |
|
|---|
| 398 |
|
|---|
| 399 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.2"/>
|
|---|
| 400 |
|
|---|
| 401 | <a name="INDEX-21"/><h3 class="head3">follow symlinks</h3>
|
|---|
| 402 |
|
|---|
| 403 | <p>This option controls whether Samba will follow a symbolic link in the
|
|---|
| 404 | Unix operating system to the target or if it should return an error
|
|---|
| 405 | to the client user. If the option is set to <tt class="literal">yes</tt>,
|
|---|
| 406 | the target of the link will be interpreted as the file. If set to
|
|---|
| 407 | <tt class="literal">no</tt>, an error will be generated if the symbolic
|
|---|
| 408 | link is accessed.</p>
|
|---|
| 409 |
|
|---|
| 410 |
|
|---|
| 411 | </div>
|
|---|
| 412 |
|
|---|
| 413 |
|
|---|
| 414 |
|
|---|
| 415 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.3"/>
|
|---|
| 416 |
|
|---|
| 417 | <a name="INDEX-22"/><h3 class="head3">getwd cache</h3>
|
|---|
| 418 |
|
|---|
| 419 | <p>This global option specifies whether Samba should use a local cache
|
|---|
| 420 | for the Unix <em class="emphasis">getwd( )</em> ( get current working
|
|---|
| 421 | directory) system call. You can override the default value of
|
|---|
| 422 | <tt class="literal">yes</tt> as follows:</p>
|
|---|
| 423 |
|
|---|
| 424 | <blockquote><pre class="code">[global]
|
|---|
| 425 | getwd cache = no</pre></blockquote>
|
|---|
| 426 |
|
|---|
| 427 | <p>Setting this option to <tt class="literal">no</tt> can significantly
|
|---|
| 428 | increase the time it takes to resolve the working directory,
|
|---|
| 429 | especially if the <tt class="literal">wide</tt> <tt class="literal">links</tt>
|
|---|
| 430 | option is set to <tt class="literal">no</tt>. You should normally not need
|
|---|
| 431 | to alter this option.</p>
|
|---|
| 432 |
|
|---|
| 433 |
|
|---|
| 434 | </div>
|
|---|
| 435 |
|
|---|
| 436 |
|
|---|
| 437 |
|
|---|
| 438 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.4"/>
|
|---|
| 439 |
|
|---|
| 440 | <a name="INDEX-23"/><h3 class="head3">wide links</h3>
|
|---|
| 441 |
|
|---|
| 442 | <p>This option specifies whether the client user can follow symbolic
|
|---|
| 443 | links that point outside the shared directory tree. This includes any
|
|---|
| 444 | files or directories at the other end of the link, as long as the
|
|---|
| 445 | permissions are correct for the user. The default value for this
|
|---|
| 446 | option is <tt class="literal">yes</tt>. Note that this option will not be
|
|---|
| 447 | honored if the <tt class="literal">follow</tt> <tt class="literal">symlinks</tt>
|
|---|
| 448 | options is set to <tt class="literal">no</tt>. Setting this option to
|
|---|
| 449 | <tt class="literal">no</tt> slows <em class="emphasis">smbd</em> considerably
|
|---|
| 450 | because it will have to check each link it encounters.</p>
|
|---|
| 451 |
|
|---|
| 452 |
|
|---|
| 453 | </div>
|
|---|
| 454 |
|
|---|
| 455 |
|
|---|
| 456 |
|
|---|
| 457 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.5"/>
|
|---|
| 458 |
|
|---|
| 459 | <h3 class="head3">hide dot files</h3>
|
|---|
| 460 |
|
|---|
| 461 | <p>The <tt class="literal">hide</tt><a name="INDEX-24"/><a name="INDEX-25"/> <tt class="literal">dot</tt>
|
|---|
| 462 | <tt class="literal">files</tt> option hides any files on the server that
|
|---|
| 463 | begin with a dot (.) character to mimic the functionality behind
|
|---|
| 464 | several shell commands that are present on Unix systems. Like
|
|---|
| 465 | <tt class="literal">hide</tt> <tt class="literal">files</tt>, those files that
|
|---|
| 466 | begin with a dot have the DOS hidden attribute set, which
|
|---|
| 467 | doesn't guarantee that a client cannot view them.
|
|---|
| 468 | The default value for this option is <tt class="literal">yes</tt>.</p>
|
|---|
| 469 |
|
|---|
| 470 |
|
|---|
| 471 | </div>
|
|---|
| 472 |
|
|---|
| 473 |
|
|---|
| 474 |
|
|---|
| 475 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.6"/>
|
|---|
| 476 |
|
|---|
| 477 | <h3 class="head3">hide files</h3>
|
|---|
| 478 |
|
|---|
| 479 | <p>The <tt class="literal">hide</tt><a name="INDEX-26"/> <tt class="literal">files</tt> option
|
|---|
| 480 | provides one or more directory or filename patterns to Samba. Any
|
|---|
| 481 | file matching this pattern will be treated as a hidden file from the
|
|---|
| 482 | perspective of the client. Note that this simply means that the DOS
|
|---|
| 483 | hidden attribute is set, which might or might not mean that the user
|
|---|
| 484 | can actually see it while browsing.</p>
|
|---|
| 485 |
|
|---|
| 486 | <p>Each entry in the list must begin, end, or be separated from another
|
|---|
| 487 | entry with a slash (<tt class="literal">/</tt>) character, even if only one
|
|---|
| 488 | pattern is listed. This allows spaces to appear in the list.
|
|---|
| 489 | Asterisks can be used as a wildcard to represent zero or more
|
|---|
| 490 | characters. Questions marks can be used to represent exactly one
|
|---|
| 491 | character. For example:</p>
|
|---|
| 492 |
|
|---|
| 493 | <blockquote><pre class="code">hide files = /.jav*/README.???/</pre></blockquote>
|
|---|
| 494 |
|
|---|
| 495 |
|
|---|
| 496 | </div>
|
|---|
| 497 |
|
|---|
| 498 |
|
|---|
| 499 |
|
|---|
| 500 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.7"/>
|
|---|
| 501 |
|
|---|
| 502 | <a name="INDEX-27"/><h3 class="head3">veto files</h3>
|
|---|
| 503 |
|
|---|
| 504 | <p>More stringent than the hidden files state is the state provided by
|
|---|
| 505 | the <tt class="literal">veto</tt> <tt class="literal">files</tt> configuration
|
|---|
| 506 | option. Samba won't even admit these files exist.
|
|---|
| 507 | You cannot list or open them from the client. This should not be used
|
|---|
| 508 | as a means of implementing security. It is actually a mechanism to
|
|---|
| 509 | keep PC programs from deleting special files, such as ones used to
|
|---|
| 510 | store the resource fork of a Macintosh file on a Unix filesystem. If
|
|---|
| 511 | both Windows and Macs are sharing the same files, this can prevent
|
|---|
| 512 | ill-advised power users from removing files the Mac users need.</p>
|
|---|
| 513 |
|
|---|
| 514 | <p>The syntax of this option is identical to that of the
|
|---|
| 515 | <tt class="literal">hide</tt> <tt class="literal">files</tt> configuration
|
|---|
| 516 | option: each entry must begin, end, or be separated from another with
|
|---|
| 517 | a slash ( / ) character, even if only one pattern is listed.
|
|---|
| 518 | Asterisks can be used as a wildcard to represent zero or more
|
|---|
| 519 | characters. Question marks can be used to represent exactly one
|
|---|
| 520 | character. For example:</p>
|
|---|
| 521 |
|
|---|
| 522 | <blockquote><pre class="code">veto files = /*config/*default?/</pre></blockquote>
|
|---|
| 523 |
|
|---|
| 524 | <p>This option is primarily administrative and is not a substitute for
|
|---|
| 525 | good file permissions.</p>
|
|---|
| 526 |
|
|---|
| 527 |
|
|---|
| 528 | </div>
|
|---|
| 529 |
|
|---|
| 530 |
|
|---|
| 531 |
|
|---|
| 532 | <div class="sect3"><a name="samba2-CHP-8-SECT-1.3.8"/>
|
|---|
| 533 |
|
|---|
| 534 | <a name="INDEX-28"/><h3 class="head3">delete veto files</h3>
|
|---|
| 535 |
|
|---|
| 536 | <p>This option tells Samba to delete vetoed files when a user attempts
|
|---|
| 537 | to delete the directory in which they reside. The default value is
|
|---|
| 538 | <tt class="literal">no</tt>. This means that if a user tries to delete a
|
|---|
| 539 | directory that contains a vetoed file, the file (and the directory)
|
|---|
| 540 | will not be deleted. Instead, the directory remains and appears empty
|
|---|
| 541 | from the perspective of the user. If set to <tt class="literal">yes</tt>,
|
|---|
| 542 | the directory and the vetoed files will be deleted. <a name="INDEX-29"/><a name="INDEX-30"/></p>
|
|---|
| 543 |
|
|---|
| 544 |
|
|---|
| 545 | </div>
|
|---|
| 546 |
|
|---|
| 547 |
|
|---|
| 548 | </div>
|
|---|
| 549 |
|
|---|
| 550 |
|
|---|
| 551 | </div>
|
|---|
| 552 |
|
|---|
| 553 |
|
|---|
| 554 |
|
|---|
| 555 | <div class="sect1"><a name="samba2-CHP-8-SECT-2"/>
|
|---|
| 556 |
|
|---|
| 557 | <h2 class="head1">File Permissions and Attributes on MS-DOS and Unix</h2>
|
|---|
| 558 |
|
|---|
| 559 | <p><a name="INDEX-31"/><a name="INDEX-32"/><a name="INDEX-33"/>Originally, DOS was not intended to be a
|
|---|
| 560 | multiuser, networked operating system. Unix, on the other hand, was
|
|---|
| 561 | designed for multiple users from the start. Consequently, Samba must
|
|---|
| 562 | not only be aware of, but also provide special solutions for,
|
|---|
| 563 | inconsistencies and gaps in coverage between the two filesystems. One
|
|---|
| 564 | of the biggest gaps is how Unix and DOS handle permissions on files.</p>
|
|---|
| 565 |
|
|---|
| 566 | <p>Let's take a look at how Unix assigns permissions.
|
|---|
| 567 | All Unix files have read, write, and execute bits for three
|
|---|
| 568 | classifications of users: owner, group, and world. These permissions
|
|---|
| 569 | can be seen at the extreme lefthand side when an <em class="emphasis">ls
|
|---|
| 570 | -al</em> command is issued in a Unix directory. For example:</p>
|
|---|
| 571 |
|
|---|
| 572 | <blockquote><pre class="code">-rwxr--r-- 1 tom users 2014 Apr 13 14:11 access.conf</pre></blockquote>
|
|---|
| 573 |
|
|---|
| 574 | <p>Windows, on the other hand, has four principal bits that it uses with
|
|---|
| 575 | any file: read-only, system, hidden, and archive. You can view these
|
|---|
| 576 | bits by right-clicking the file and choosing the Properties menu
|
|---|
| 577 | item. You should see a dialog similar to <a href="ch08.html#samba2-CHP-8-FIG-1">Figure 8-1</a>.<a name="FNPTR-1"/><a href="#FOOTNOTE-1">[1]</a></p>
|
|---|
| 578 |
|
|---|
| 579 | <div class="figure"><a name="samba2-CHP-8-FIG-1"/><img src="figs/sam2_0801.gif"/></div><h4 class="head4">Figure 8-1. DOS and Windows file properties</h4>
|
|---|
| 580 |
|
|---|
| 581 | <p>The definition of each bit follows:</p>
|
|---|
| 582 |
|
|---|
| 583 | <dl>
|
|---|
| 584 | <dt><b>Read-only</b></dt>
|
|---|
| 585 | <dd>
|
|---|
| 586 | <p>The file's contents can be read by a user but cannot
|
|---|
| 587 | be written to.</p>
|
|---|
| 588 | </dd>
|
|---|
| 589 |
|
|---|
| 590 |
|
|---|
| 591 |
|
|---|
| 592 | <dt><b>System</b></dt>
|
|---|
| 593 | <dd>
|
|---|
| 594 | <p>This file has a specific purpose required by the operating system.</p>
|
|---|
| 595 | </dd>
|
|---|
| 596 |
|
|---|
| 597 |
|
|---|
| 598 |
|
|---|
| 599 | <dt><b>Hidden</b></dt>
|
|---|
| 600 | <dd>
|
|---|
| 601 | <p>This file has been marked to be invisible to the user, unless the
|
|---|
| 602 | operating system is explicitly set to show it.</p>
|
|---|
| 603 | </dd>
|
|---|
| 604 |
|
|---|
| 605 |
|
|---|
| 606 |
|
|---|
| 607 | <dt><b>Archive</b></dt>
|
|---|
| 608 | <dd>
|
|---|
| 609 | <p>This file has been touched since the last DOS backup was performed on
|
|---|
| 610 | it.</p>
|
|---|
| 611 | </dd>
|
|---|
| 612 |
|
|---|
| 613 | </dl>
|
|---|
| 614 |
|
|---|
| 615 | <p>Note that there is no bit to specify that a file is executable. DOS
|
|---|
| 616 | and Windows NT filesystems identify executable files by giving them
|
|---|
| 617 | the extensions <em class="filename">.exe</em>, <em class="filename">.com</em>,
|
|---|
| 618 | <em class="filename">.cmd</em>, or <em class="filename">.bat</em>.</p>
|
|---|
| 619 |
|
|---|
| 620 | <p>Consequently, there is no use for any of the three Unix executable
|
|---|
| 621 | bits that are present on a file in a Samba disk share. DOS files,
|
|---|
| 622 | however, have their own attributes that need to be preserved when
|
|---|
| 623 | they are stored in a Unix environment: the archive, system, and
|
|---|
| 624 | hidden bits. Samba can preserve these bits by reusing the executable
|
|---|
| 625 | permission bits of the file on the Unix side—if it is
|
|---|
| 626 | instructed to do so. Mapping these bits, however, has an unfortunate
|
|---|
| 627 | side effect: if a Windows user stores a file in a Samba share, and
|
|---|
| 628 | you view it on Unix with the <em class="emphasis">ls -al</em> command,
|
|---|
| 629 | some of the executable bits won't mean what
|
|---|
| 630 | you'd expect them to.</p>
|
|---|
| 631 |
|
|---|
| 632 | <p>Three Samba options decide whether the bits are mapped:
|
|---|
| 633 | <tt class="literal">map</tt><a name="INDEX-34"/> <tt class="literal">archive</tt>,
|
|---|
| 634 | <tt class="literal">map</tt><a name="INDEX-35"/> <tt class="literal">system</tt> , and
|
|---|
| 635 | <tt class="literal">map</tt><a name="INDEX-36"/> <tt class="literal">hidden</tt>. These options
|
|---|
| 636 | map the archive, system, and hidden attributes to the owner, group,
|
|---|
| 637 | and world execute bits of the file, respectively. You can add these
|
|---|
| 638 | options to the <tt class="literal">[data]</tt> share, setting each of their
|
|---|
| 639 | values as follows:</p>
|
|---|
| 640 |
|
|---|
| 641 | <blockquote><pre class="code">[data]
|
|---|
| 642 | map archive = yes
|
|---|
| 643 | map system = yes
|
|---|
| 644 | map hidden = yes</pre></blockquote>
|
|---|
| 645 |
|
|---|
| 646 | <p>After that, try creating a file in the share under Unix—such as
|
|---|
| 647 | <em class="emphasis">hello.java</em>—and change the permissions of
|
|---|
| 648 | the file to 755. With these Samba options set, you should be able to
|
|---|
| 649 | check the permissions on the Windows side and see that each of the
|
|---|
| 650 | three values has been checked in the Properties dialog box. What
|
|---|
| 651 | about the read-only attribute? By default, Samba sets this whenever a
|
|---|
| 652 | file does not have the Unix owner write permission bit set. In other
|
|---|
| 653 | words, you can set this bit by changing the permissions of the file
|
|---|
| 654 | to 555.</p>
|
|---|
| 655 |
|
|---|
| 656 | <p>The default value of the <tt class="literal">map</tt>
|
|---|
| 657 | <tt class="literal">archive</tt> option is <tt class="literal">yes</tt>, while
|
|---|
| 658 | the other two options have a default value of <tt class="literal">no</tt>.
|
|---|
| 659 | This is because many programs do not work properly if the archive bit
|
|---|
| 660 | is not stored correctly for DOS and Windows files. The system and
|
|---|
| 661 | hidden attributes, however, are not critical for a
|
|---|
| 662 | program's operation and are left to the discretion
|
|---|
| 663 | of the administrator.</p>
|
|---|
| 664 |
|
|---|
| 665 | <p><a href="ch08.html#samba2-CHP-8-FIG-2">Figure 8-2</a> summarizes the <a name="INDEX-37"/><a name="INDEX-38"/>Unix permission bits and
|
|---|
| 666 | illustrates how Samba maps those bits to DOS attributes. Note that
|
|---|
| 667 | the group read/write and world read/write bits do not directly
|
|---|
| 668 | translate to a DOS attribute, but they still retain their original
|
|---|
| 669 | Unix definitions on the Samba server.</p>
|
|---|
| 670 |
|
|---|
| 671 | <div class="figure"><a name="samba2-CHP-8-FIG-2"/><img src="figs/sam2_0802.gif"/></div><h4 class="head4">Figure 8-2. How Samba and Unix view the permissions of a file</h4>
|
|---|
| 672 |
|
|---|
| 673 |
|
|---|
| 674 | <div class="sect2"><a name="samba2-CHP-8-SECT-2.1"/>
|
|---|
| 675 |
|
|---|
| 676 | <h3 class="head2">Creation Masks</h3>
|
|---|
| 677 |
|
|---|
| 678 | <p><a name="INDEX-39"/>File and directory creation masks are
|
|---|
| 679 | similar to <a name="INDEX-40"/>umasks you
|
|---|
| 680 | have probably encountered while working with Unix systems. They are
|
|---|
| 681 | used to help define the permissions that will be assigned to a file
|
|---|
| 682 | or directory at the time it is created. Samba's
|
|---|
| 683 | masks work differently in that the bits that can be set are set in
|
|---|
| 684 | the creation mask, while in Unix umasks, the bits
|
|---|
| 685 | <em class="emphasis">cannot</em> be set are set in the umask. We think you
|
|---|
| 686 | will find Samba's method to be much more intuitive.
|
|---|
| 687 | Once in a while you might need to convert between a Unix umask and
|
|---|
| 688 | the equivalent Samba mask. It is simple: one is just the bitwise
|
|---|
| 689 | complement of the other. For example, an octal umask of 0022 has the
|
|---|
| 690 | same effect as a Samba mask of 0755.</p>
|
|---|
| 691 |
|
|---|
| 692 | <p>Unix umasks are set on a user-by-user basis, usually while executing
|
|---|
| 693 | the GUI's or command-line shell's
|
|---|
| 694 | startup scripts. When users connect to a Samba share from a network
|
|---|
| 695 | client, these scripts are not executed, so Samba supplies the ability
|
|---|
| 696 | to set the creation masks for files and directories. By default, this
|
|---|
| 697 | is done on a share-by-share basis, although you can use the
|
|---|
| 698 | <tt class="literal">include</tt> parameter in the Samba configuration file
|
|---|
| 699 | (as explained in <a href="ch06.html">Chapter 6</a>) to assign masks on a
|
|---|
| 700 | user-by-user basis, thus matching conventional Unix behavior.</p>
|
|---|
| 701 |
|
|---|
| 702 | <p>To show how Samba's create masks work, suppose we
|
|---|
| 703 | have a Windows Me user connecting to his Unix home directory through
|
|---|
| 704 | Samba, and Samba is configured with <tt class="literal">create</tt>
|
|---|
| 705 | <tt class="literal">mask</tt> <tt class="literal">=</tt> <tt class="literal">777</tt>
|
|---|
| 706 | in the <tt class="literal">[homes]</tt> share. With this value,
|
|---|
| 707 | <tt class="literal">create</tt> <tt class="literal">mask</tt> will not affect the
|
|---|
| 708 | bits that are set on new files. If the user creates a file with
|
|---|
| 709 | Wordpad, it will appear in the Unix filesystem like this:</p>
|
|---|
| 710 |
|
|---|
| 711 | <blockquote><pre class="code">$ <tt class="userinput"><b>ls -l file.doc</b></tt>
|
|---|
| 712 | -rwxrw-rw- 1 jay jay 0 Sep 21 11:02 file.doc</pre></blockquote>
|
|---|
| 713 |
|
|---|
| 714 | <p>Wordpad created the file with read/write permissions (i.e., the
|
|---|
| 715 | MS-DOS read-only attribute was not set), so Samba mapped the MS-DOS
|
|---|
| 716 | attributes to Unix read/write permissions for user, group, and other.
|
|---|
| 717 | The <a name="INDEX-41"/><a name="INDEX-42"/>execute bit is set for the owner
|
|---|
| 718 | because by default, the <tt class="literal">map</tt>
|
|---|
| 719 | <tt class="literal">archive</tt> parameter is set to
|
|---|
| 720 | <tt class="literal">yes</tt>. The other execute bits are not set because
|
|---|
| 721 | <tt class="literal">map</tt> <tt class="literal">system</tt> and
|
|---|
| 722 | <tt class="literal">map</tt> <tt class="literal">hidden</tt> are set to
|
|---|
| 723 | <tt class="literal">no</tt> by default. You can customize this behavior as
|
|---|
| 724 | you see fit, and unless you do backups from MS-DOS or Windows
|
|---|
| 725 | systems, you might want to specify <tt class="literal">map</tt>
|
|---|
| 726 | <tt class="literal">archive</tt> <tt class="literal">=</tt> <tt class="literal">no</tt>
|
|---|
| 727 | to avoid Windows files from appearing as executables on the Unix
|
|---|
| 728 | system.</p>
|
|---|
| 729 |
|
|---|
| 730 | <p>Now suppose we set
|
|---|
| 731 | <tt class="literal">create</tt><a name="INDEX-43"/> <tt class="literal">mask</tt> to have
|
|---|
| 732 | an effect. For example:</p>
|
|---|
| 733 |
|
|---|
| 734 | <blockquote><pre class="code">[homes]
|
|---|
| 735 | create mask = 664</pre></blockquote>
|
|---|
| 736 |
|
|---|
| 737 | <p>This is equivalent to a Unix umask of 113. If the user creates the
|
|---|
| 738 | Wordpad document as before, it will show up as:</p>
|
|---|
| 739 |
|
|---|
| 740 | <blockquote><pre class="code">$ <tt class="userinput"><b>ls -l file.doc</b></tt>
|
|---|
| 741 | -rw-rw-r-- 1 jay jay 0 Sep 22 16:38 file.doc</pre></blockquote>
|
|---|
| 742 |
|
|---|
| 743 | <p>Comparing this to the previous example, notice that not only has the
|
|---|
| 744 | write permission for other disappeared as we expected, but so has the
|
|---|
| 745 | execute permission for owner. This happened because the value of
|
|---|
| 746 | <tt class="literal">create</tt> <tt class="literal">mask</tt> logically ANDs the
|
|---|
| 747 | owner's permissions with a 6, which has masked off
|
|---|
| 748 | the execute bit. The lesson here is that if you want to enable any of
|
|---|
| 749 | <tt class="literal">map</tt> <tt class="literal">archive</tt>,
|
|---|
| 750 | <tt class="literal">map</tt> <tt class="literal">system</tt>, or
|
|---|
| 751 | <tt class="literal">map</tt> <tt class="literal">hidden</tt>, you must be careful
|
|---|
| 752 | not to mask off the corresponding execute bit with your
|
|---|
| 753 | <tt class="literal">create</tt> <tt class="literal">mask</tt>.</p>
|
|---|
| 754 |
|
|---|
| 755 | <p>The <tt class="literal">directory</tt><a name="INDEX-44"/> <tt class="literal">mask</tt>
|
|---|
| 756 | option works similarly, masking permissions for newly created
|
|---|
| 757 | directories. The following example will allow the permissions of a
|
|---|
| 758 | newly created directory to be, at most, 755:</p>
|
|---|
| 759 |
|
|---|
| 760 | <blockquote><pre class="code">[data]
|
|---|
| 761 | directory mask = 755</pre></blockquote>
|
|---|
| 762 |
|
|---|
| 763 | <p>Also, you can force various bits with the <tt class="literal">force</tt>
|
|---|
| 764 | <tt class="literal">create</tt> <tt class="literal">mode</tt> and
|
|---|
| 765 | <tt class="literal">force</tt> <tt class="literal">directory</tt>
|
|---|
| 766 | <tt class="literal">mode</tt> options. These options will perform a logical
|
|---|
| 767 | OR against the file and directory creation masks, ensuring that those
|
|---|
| 768 | bits that are specified will always be set. You would typically set
|
|---|
| 769 | these options globally to ensure that group and world read/write
|
|---|
| 770 | permissions have been set appropriately for new files or directories
|
|---|
| 771 | in each share.</p>
|
|---|
| 772 |
|
|---|
| 773 | <p>In the same spirit, if you wish to set explicitly the Unix user and
|
|---|
| 774 | group attributes of a file created on the Windows side, you can use
|
|---|
| 775 | the <tt class="literal">force</tt><a name="INDEX-45"/> <tt class="literal">user</tt> and
|
|---|
| 776 | <tt class="literal">force</tt><a name="INDEX-46"/> <tt class="literal">group</tt>
|
|---|
| 777 | options. For example:</p>
|
|---|
| 778 |
|
|---|
| 779 | <blockquote><pre class="code">[data]
|
|---|
| 780 | create mask = 744
|
|---|
| 781 | directory mask = 755
|
|---|
| 782 | force user = joe
|
|---|
| 783 | force group = accounting</pre></blockquote>
|
|---|
| 784 |
|
|---|
| 785 | <p>These options assign the same Unix username and group to every client
|
|---|
| 786 | that connects to the share. However, this occurs
|
|---|
| 787 | <em class="emphasis">after</em> the client authenticates; it does not
|
|---|
| 788 | allow free access to a share. These options are frequently used for
|
|---|
| 789 | their side effects of assigning a specific user and group to each new
|
|---|
| 790 | file or directory that is created in a share. Use these options with
|
|---|
| 791 | discretion.</p>
|
|---|
| 792 |
|
|---|
| 793 | <p>Finally, one of the capabilities of Unix that DOS lacks is the
|
|---|
| 794 | ability to delete a read-only file from a writable directory. In
|
|---|
| 795 | Unix, if a directory is writable, a read-only file in that directory
|
|---|
| 796 | can still be removed. This could permit you to delete files in any of
|
|---|
| 797 | your directories, even if the file was left by someone else.</p>
|
|---|
| 798 |
|
|---|
| 799 | <p>DOS filesystems are not designed for multiple users, and so its
|
|---|
| 800 | designers decided that read-only means "protected
|
|---|
| 801 | against accidental change, including deletion,"
|
|---|
| 802 | rather than "protected against some other user on a
|
|---|
| 803 | single-user machine." So the designers of DOS
|
|---|
| 804 | prohibited removal of a read-only file. Even today, Windows
|
|---|
| 805 | filesystems exhibit the same behavior.</p>
|
|---|
| 806 |
|
|---|
| 807 | <p>Normally, this is harmless. Windows programs don't
|
|---|
| 808 | try to remove read-only files because they know it's
|
|---|
| 809 | a bad idea. However, a number of source-code control
|
|---|
| 810 | programs—which were first written for Unix—run on Windows
|
|---|
| 811 | and require the ability to delete read-only files. Samba permits this
|
|---|
| 812 | behavior with the <tt class="literal">delete</tt><a name="INDEX-47"/>
|
|---|
| 813 | <tt class="literal">readonly</tt> option. To enable this functionality, set
|
|---|
| 814 | the option to <tt class="literal">yes</tt>:</p>
|
|---|
| 815 |
|
|---|
| 816 | <a name="INDEX-48"/><blockquote><pre class="code">[data]
|
|---|
| 817 | delete readonly = yes</pre></blockquote>
|
|---|
| 818 |
|
|---|
| 819 |
|
|---|
| 820 | </div>
|
|---|
| 821 |
|
|---|
| 822 |
|
|---|
| 823 | <div class="sect2"><a name="samba2-CHP-8-SECT-2.2"/>
|
|---|
| 824 |
|
|---|
| 825 | <h3 class="head2">File and Directory Permission Options</h3>
|
|---|
| 826 |
|
|---|
| 827 | <p><a name="INDEX-49"/><a name="INDEX-50"/><a name="INDEX-51"/>The
|
|---|
| 828 | options for file and directory permissions are summarized in <a href="ch08.html#samba2-CHP-8-TABLE-2">Table 8-2</a>; each option is then described in detail.</p>
|
|---|
| 829 |
|
|---|
| 830 | <a name="samba2-CHP-8-TABLE-2"/><h4 class="head4">Table 8-2. File and directory permission options</h4><table border="1">
|
|---|
| 831 |
|
|---|
| 832 |
|
|---|
| 833 |
|
|---|
| 834 |
|
|---|
| 835 |
|
|---|
| 836 |
|
|---|
| 837 | <tr>
|
|---|
| 838 | <th>
|
|---|
| 839 | <p>Option</p>
|
|---|
| 840 | </th>
|
|---|
| 841 | <th>
|
|---|
| 842 | <p>Parameters</p>
|
|---|
| 843 | </th>
|
|---|
| 844 | <th>
|
|---|
| 845 | <p>Function</p>
|
|---|
| 846 | </th>
|
|---|
| 847 | <th>
|
|---|
| 848 | <p>Default</p>
|
|---|
| 849 | </th>
|
|---|
| 850 | <th>
|
|---|
| 851 | <p>Scope</p>
|
|---|
| 852 | </th>
|
|---|
| 853 | </tr>
|
|---|
| 854 |
|
|---|
| 855 |
|
|---|
| 856 | <tr>
|
|---|
| 857 | <td>
|
|---|
| 858 | <p><tt class="literal">create mask</tt> <tt class="literal">(create mode)</tt></p>
|
|---|
| 859 | </td>
|
|---|
| 860 | <td>
|
|---|
| 861 | <p>numeric</p>
|
|---|
| 862 | </td>
|
|---|
| 863 | <td>
|
|---|
| 864 | <p>Maximum permissions for files created by Samba.</p>
|
|---|
| 865 | </td>
|
|---|
| 866 | <td>
|
|---|
| 867 | <p><tt class="literal">0744</tt></p>
|
|---|
| 868 | </td>
|
|---|
| 869 | <td>
|
|---|
| 870 | <p>Share</p>
|
|---|
| 871 | </td>
|
|---|
| 872 | </tr>
|
|---|
| 873 | <tr>
|
|---|
| 874 | <td>
|
|---|
| 875 | <p><tt class="literal">directory mask</tt> <tt class="literal">(directory mode)</tt></p>
|
|---|
| 876 | </td>
|
|---|
| 877 | <td>
|
|---|
| 878 | <p>numeric</p>
|
|---|
| 879 | </td>
|
|---|
| 880 | <td>
|
|---|
| 881 | <p>Maximum permissions for directories created by Samba.</p>
|
|---|
| 882 | </td>
|
|---|
| 883 | <td>
|
|---|
| 884 | <p><tt class="literal">0744</tt></p>
|
|---|
| 885 | </td>
|
|---|
| 886 | <td>
|
|---|
| 887 | <p>Share</p>
|
|---|
| 888 | </td>
|
|---|
| 889 | </tr>
|
|---|
| 890 | <tr>
|
|---|
| 891 | <td>
|
|---|
| 892 | <p><tt class="literal">force create mode</tt></p>
|
|---|
| 893 | </td>
|
|---|
| 894 | <td>
|
|---|
| 895 | <p>numeric</p>
|
|---|
| 896 | </td>
|
|---|
| 897 | <td>
|
|---|
| 898 | <p>Forces the specified permissions (bitwise <tt class="literal">or</tt>) for
|
|---|
| 899 | directories created by Samba.</p>
|
|---|
| 900 | </td>
|
|---|
| 901 | <td>
|
|---|
| 902 | <p><tt class="literal">0000</tt></p>
|
|---|
| 903 | </td>
|
|---|
| 904 | <td>
|
|---|
| 905 | <p>Share</p>
|
|---|
| 906 | </td>
|
|---|
| 907 | </tr>
|
|---|
| 908 | <tr>
|
|---|
| 909 | <td>
|
|---|
| 910 | <p><tt class="literal">force directory</tt> <tt class="literal">mode</tt></p>
|
|---|
| 911 | </td>
|
|---|
| 912 | <td>
|
|---|
| 913 | <p>numeric</p>
|
|---|
| 914 | </td>
|
|---|
| 915 | <td>
|
|---|
| 916 | <p>Forces the specified permissions (bitwise <tt class="literal">or</tt>) for
|
|---|
| 917 | directories created by Samba.</p>
|
|---|
| 918 | </td>
|
|---|
| 919 | <td>
|
|---|
| 920 | <p><tt class="literal">0000</tt></p>
|
|---|
| 921 | </td>
|
|---|
| 922 | <td>
|
|---|
| 923 | <p>Share</p>
|
|---|
| 924 | </td>
|
|---|
| 925 | </tr>
|
|---|
| 926 | <tr>
|
|---|
| 927 | <td>
|
|---|
| 928 | <p><tt class="literal">force group</tt> <tt class="literal">(group)</tt></p>
|
|---|
| 929 | </td>
|
|---|
| 930 | <td>
|
|---|
| 931 | <p>string ( group name)</p>
|
|---|
| 932 | </td>
|
|---|
| 933 | <td>
|
|---|
| 934 | <p>Effective group for a user accessing this share.</p>
|
|---|
| 935 | </td>
|
|---|
| 936 | <td>
|
|---|
| 937 | <p>None</p>
|
|---|
| 938 | </td>
|
|---|
| 939 | <td>
|
|---|
| 940 | <p>Share</p>
|
|---|
| 941 | </td>
|
|---|
| 942 | </tr>
|
|---|
| 943 | <tr>
|
|---|
| 944 | <td>
|
|---|
| 945 | <p><tt class="literal">force user</tt></p>
|
|---|
| 946 | </td>
|
|---|
| 947 | <td>
|
|---|
| 948 | <p>string (username)</p>
|
|---|
| 949 | </td>
|
|---|
| 950 | <td>
|
|---|
| 951 | <p>Effective username for a user accessing this share.</p>
|
|---|
| 952 | </td>
|
|---|
| 953 | <td>
|
|---|
| 954 | <p>None</p>
|
|---|
| 955 | </td>
|
|---|
| 956 | <td>
|
|---|
| 957 | <p>Share</p>
|
|---|
| 958 | </td>
|
|---|
| 959 | </tr>
|
|---|
| 960 | <tr>
|
|---|
| 961 | <td>
|
|---|
| 962 | <p><tt class="literal">delete readonly</tt></p>
|
|---|
| 963 | </td>
|
|---|
| 964 | <td>
|
|---|
| 965 | <p>Boolean</p>
|
|---|
| 966 | </td>
|
|---|
| 967 | <td>
|
|---|
| 968 | <p>Allows a user to delete a read-only file from a writable directory.</p>
|
|---|
| 969 | </td>
|
|---|
| 970 | <td>
|
|---|
| 971 | <p><tt class="literal">no</tt></p>
|
|---|
| 972 | </td>
|
|---|
| 973 | <td>
|
|---|
| 974 | <p>Share</p>
|
|---|
| 975 | </td>
|
|---|
| 976 | </tr>
|
|---|
| 977 | <tr>
|
|---|
| 978 | <td>
|
|---|
| 979 | <p><tt class="literal">map archive</tt></p>
|
|---|
| 980 | </td>
|
|---|
| 981 | <td>
|
|---|
| 982 | <p>Boolean</p>
|
|---|
| 983 | </td>
|
|---|
| 984 | <td>
|
|---|
| 985 | <p>Preserve DOS archive attribute in user execute bit (0100).</p>
|
|---|
| 986 | </td>
|
|---|
| 987 | <td>
|
|---|
| 988 | <p><tt class="literal">yes</tt></p>
|
|---|
| 989 | </td>
|
|---|
| 990 | <td>
|
|---|
| 991 | <p>Share</p>
|
|---|
| 992 | </td>
|
|---|
| 993 | </tr>
|
|---|
| 994 | <tr>
|
|---|
| 995 | <td>
|
|---|
| 996 | <p><tt class="literal">map system</tt></p>
|
|---|
| 997 | </td>
|
|---|
| 998 | <td>
|
|---|
| 999 | <p>Boolean</p>
|
|---|
| 1000 | </td>
|
|---|
| 1001 | <td>
|
|---|
| 1002 | <p>Preserve DOS system attribute in group execute bit (0010).</p>
|
|---|
| 1003 | </td>
|
|---|
| 1004 | <td>
|
|---|
| 1005 | <p><tt class="literal">no</tt></p>
|
|---|
| 1006 | </td>
|
|---|
| 1007 | <td>
|
|---|
| 1008 | <p>Share</p>
|
|---|
| 1009 | </td>
|
|---|
| 1010 | </tr>
|
|---|
| 1011 | <tr>
|
|---|
| 1012 | <td>
|
|---|
| 1013 | <p><tt class="literal">map hidden</tt></p>
|
|---|
| 1014 | </td>
|
|---|
| 1015 | <td>
|
|---|
| 1016 | <p>Boolean</p>
|
|---|
| 1017 | </td>
|
|---|
| 1018 | <td>
|
|---|
| 1019 | <p>Preserve DOS hidden attribute in world execute bit (0001).</p>
|
|---|
| 1020 | </td>
|
|---|
| 1021 | <td>
|
|---|
| 1022 | <p><tt class="literal">no</tt></p>
|
|---|
| 1023 | </td>
|
|---|
| 1024 | <td>
|
|---|
| 1025 | <p>Share</p>
|
|---|
| 1026 | </td>
|
|---|
| 1027 | </tr>
|
|---|
| 1028 | <tr>
|
|---|
| 1029 | <td>
|
|---|
| 1030 | <p><tt class="literal">inherit permissions</tt></p>
|
|---|
| 1031 | </td>
|
|---|
| 1032 | <td>
|
|---|
| 1033 | <p>Boolean</p>
|
|---|
| 1034 | </td>
|
|---|
| 1035 | <td>
|
|---|
| 1036 | <p>If <tt class="literal">yes</tt>, permissions on new files and directories
|
|---|
| 1037 | are inherited from parent directory.</p>
|
|---|
| 1038 | </td>
|
|---|
| 1039 | <td>
|
|---|
| 1040 | <p>no</p>
|
|---|
| 1041 | </td>
|
|---|
| 1042 | <td>
|
|---|
| 1043 | <p>Share</p>
|
|---|
| 1044 | </td>
|
|---|
| 1045 | </tr>
|
|---|
| 1046 |
|
|---|
| 1047 | </table>
|
|---|
| 1048 |
|
|---|
| 1049 |
|
|---|
| 1050 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.1"/>
|
|---|
| 1051 |
|
|---|
| 1052 | <a name="INDEX-52"/><h3 class="head3">create mask</h3>
|
|---|
| 1053 |
|
|---|
| 1054 | <p>The argument for this option is an octal number indicating which
|
|---|
| 1055 | permission flags can be set at file creation by a client in a share.
|
|---|
| 1056 | The default is 0744, which means that the Unix owner can at most
|
|---|
| 1057 | read, write, and optionally execute her own files, while members of
|
|---|
| 1058 | the user's group and others can only read or execute
|
|---|
| 1059 | them. If you need to change it for nonexecutable files, we recommend
|
|---|
| 1060 | 0644, or <tt class="literal">rw-r--r--</tt>. Keep in mind that the execute
|
|---|
| 1061 | bits can be used by the server to map certain DOS file attributes, as
|
|---|
| 1062 | described earlier. If you're altering the create
|
|---|
| 1063 | mask, those bits have to be part of the create mask as well.</p>
|
|---|
| 1064 |
|
|---|
| 1065 |
|
|---|
| 1066 | </div>
|
|---|
| 1067 |
|
|---|
| 1068 |
|
|---|
| 1069 |
|
|---|
| 1070 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.2"/>
|
|---|
| 1071 |
|
|---|
| 1072 | <a name="INDEX-53"/><h3 class="head3">directory mask</h3>
|
|---|
| 1073 |
|
|---|
| 1074 | <p>The argument for this option is an octal number indicating which
|
|---|
| 1075 | permission flags can be set at directory creation by a client in a
|
|---|
| 1076 | share. The default is 0744, which allows everyone on the Unix side
|
|---|
| 1077 | to, at most, read and traverse the directories, but allows only you
|
|---|
| 1078 | to modify them. We recommend the mask 0750, removing access by
|
|---|
| 1079 | "the world."</p>
|
|---|
| 1080 |
|
|---|
| 1081 |
|
|---|
| 1082 | </div>
|
|---|
| 1083 |
|
|---|
| 1084 |
|
|---|
| 1085 |
|
|---|
| 1086 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.3"/>
|
|---|
| 1087 |
|
|---|
| 1088 | <a name="INDEX-54"/><h3 class="head3">force create mode</h3>
|
|---|
| 1089 |
|
|---|
| 1090 | <p>This option sets the permission bits that Samba will set when a file
|
|---|
| 1091 | permission change is made. It's often used to force
|
|---|
| 1092 | group permissions, as mentioned previously. It can also be used to
|
|---|
| 1093 | preset any of the DOS attributes we mentioned: archive (0100), system
|
|---|
| 1094 | (0010), or hidden (0001).</p>
|
|---|
| 1095 |
|
|---|
| 1096 | <a name="samba2-CHP-8-NOTE-139"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
|
|---|
| 1097 | <p><a name="INDEX-55"/>When saving
|
|---|
| 1098 | documents, many Windows applications rename their datafiles with a
|
|---|
| 1099 | <em class="filename">.bak</em> extension and create new ones. When the
|
|---|
| 1100 | files are in a Samba share, this changes their ownership and
|
|---|
| 1101 | permissions so that members of the same Unix group
|
|---|
| 1102 | can't edit them. Setting <tt class="literal">force</tt>
|
|---|
| 1103 | <tt class="literal">create mode = 0660</tt> will keep the new file editable
|
|---|
| 1104 | by members of the group.</p>
|
|---|
| 1105 | </blockquote>
|
|---|
| 1106 |
|
|---|
| 1107 |
|
|---|
| 1108 | </div>
|
|---|
| 1109 |
|
|---|
| 1110 |
|
|---|
| 1111 |
|
|---|
| 1112 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.4"/>
|
|---|
| 1113 |
|
|---|
| 1114 | <a name="INDEX-56"/><h3 class="head3">force directory mode</h3>
|
|---|
| 1115 |
|
|---|
| 1116 | <p>This option sets the permission bits that Samba will set when a
|
|---|
| 1117 | directory permission change is made or a directory is created.
|
|---|
| 1118 | It's often used to force group permissions, as
|
|---|
| 1119 | mentioned previously. This option defaults to 0000 and can be used
|
|---|
| 1120 | just like the <tt class="literal">force</tt> <tt class="literal">create</tt>
|
|---|
| 1121 | <tt class="literal">mode</tt> to add group or other permissions if needed.</p>
|
|---|
| 1122 |
|
|---|
| 1123 |
|
|---|
| 1124 | </div>
|
|---|
| 1125 |
|
|---|
| 1126 |
|
|---|
| 1127 |
|
|---|
| 1128 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.5"/>
|
|---|
| 1129 |
|
|---|
| 1130 | <a name="INDEX-57"/><h3 class="head3">force group</h3>
|
|---|
| 1131 |
|
|---|
| 1132 | <p>This option, sometimes called <tt class="literal">group</tt>, assigns a
|
|---|
| 1133 | static group ID that will be used on all connections to a share after
|
|---|
| 1134 | the client has successfully authenticated. This assigns a specific
|
|---|
| 1135 | group to each new file or directory created from an SMB client.</p>
|
|---|
| 1136 |
|
|---|
| 1137 |
|
|---|
| 1138 | </div>
|
|---|
| 1139 |
|
|---|
| 1140 |
|
|---|
| 1141 |
|
|---|
| 1142 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.6"/>
|
|---|
| 1143 |
|
|---|
| 1144 | <h3 class="head3">force user</h3>
|
|---|
| 1145 |
|
|---|
| 1146 | <p>The <tt class="literal">force</tt><a name="INDEX-58"/> <tt class="literal">user</tt> option
|
|---|
| 1147 | assigns a static user ID that will be used on all connections to a
|
|---|
| 1148 | share after the client has successfully authenticated. This assigns a
|
|---|
| 1149 | specific user to each new file or directory created from an SMB
|
|---|
| 1150 | client.</p>
|
|---|
| 1151 |
|
|---|
| 1152 |
|
|---|
| 1153 | </div>
|
|---|
| 1154 |
|
|---|
| 1155 |
|
|---|
| 1156 |
|
|---|
| 1157 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.7"/>
|
|---|
| 1158 |
|
|---|
| 1159 | <a name="INDEX-59"/><h3 class="head3">delete readonly</h3>
|
|---|
| 1160 |
|
|---|
| 1161 | <p>This option allows a user to delete a directory containing a
|
|---|
| 1162 | read-only file. By default, DOS and Windows will not allow such an
|
|---|
| 1163 | operation. You probably will want to leave this option turned off
|
|---|
| 1164 | unless a program (for example, an RCS program) needs this capability;
|
|---|
| 1165 | many Windows users would be appalled to find that
|
|---|
| 1166 | they'd accidentally deleted a file that they had set
|
|---|
| 1167 | as read-only.</p>
|
|---|
| 1168 |
|
|---|
| 1169 |
|
|---|
| 1170 | </div>
|
|---|
| 1171 |
|
|---|
| 1172 |
|
|---|
| 1173 |
|
|---|
| 1174 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.8"/>
|
|---|
| 1175 |
|
|---|
| 1176 | <a name="INDEX-60"/><h3 class="head3">map archive</h3>
|
|---|
| 1177 |
|
|---|
| 1178 | <p>The DOS archive bit is used to flag a file that has been changed
|
|---|
| 1179 | since it was last archived (e.g., backed up with the DOS archive
|
|---|
| 1180 | program). Setting the Samba option <tt class="literal">map</tt>
|
|---|
| 1181 | <tt class="literal">archive</tt> <tt class="literal">=</tt>
|
|---|
| 1182 | <tt class="literal">yes</tt> maps the DOS archive flag to the Unix
|
|---|
| 1183 | execute-by-owner (0100) bit. It's best to leave this
|
|---|
| 1184 | option on if your Windows users are doing their own backups or are
|
|---|
| 1185 | using programs that require the archive bit. Unix lacks the notion of
|
|---|
| 1186 | an archive bit entirely. Backup programs typically keep a file that
|
|---|
| 1187 | lists what files were backed up on what date, so comparing
|
|---|
| 1188 | file-modification dates serves the same purpose.</p>
|
|---|
| 1189 |
|
|---|
| 1190 | <p>Setting this option to <tt class="literal">yes</tt> causes an occasional
|
|---|
| 1191 | surprise on Unix when a user notices that a datafile is marked as
|
|---|
| 1192 | executable, but rarely causes harm. If a user tries to run it, he
|
|---|
| 1193 | will normally get a string of error messages as the shell tries to
|
|---|
| 1194 | execute the first few lines as commands. The reverse is also
|
|---|
| 1195 | possible; an executable Unix program looks like it
|
|---|
| 1196 | hasn't been backed up recently on Windows. But
|
|---|
| 1197 | again, this is rare and usually harmless.</p>
|
|---|
| 1198 |
|
|---|
| 1199 | <p>For map archive to work properly, the execute bit for owner must not
|
|---|
| 1200 | be masked off with the <tt class="literal">create</tt>
|
|---|
| 1201 | <tt class="literal">mask</tt> parameter.</p>
|
|---|
| 1202 |
|
|---|
| 1203 |
|
|---|
| 1204 | </div>
|
|---|
| 1205 |
|
|---|
| 1206 |
|
|---|
| 1207 |
|
|---|
| 1208 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.9"/>
|
|---|
| 1209 |
|
|---|
| 1210 | <a name="INDEX-61"/><h3 class="head3">map system</h3>
|
|---|
| 1211 |
|
|---|
| 1212 | <p>The DOS system attribute indicates files that are required by the
|
|---|
| 1213 | operating system and should not be deleted, renamed, or moved without
|
|---|
| 1214 | special effort. Set this option only if you need to store Windows
|
|---|
| 1215 | system files on the Unix fileserver. Executable Unix programs will
|
|---|
| 1216 | appear to be nonremovable, special Windows files when viewed from
|
|---|
| 1217 | Windows clients. This might prove mildly inconvenient if you want to
|
|---|
| 1218 | move or remove one. For most sites, however, this is fairly harmless.</p>
|
|---|
| 1219 |
|
|---|
| 1220 | <p>For map archive to work properly, the execute bit for group must not
|
|---|
| 1221 | be masked off with the <tt class="literal">create</tt>
|
|---|
| 1222 | <tt class="literal">mask</tt> parameter.</p>
|
|---|
| 1223 |
|
|---|
| 1224 |
|
|---|
| 1225 | </div>
|
|---|
| 1226 |
|
|---|
| 1227 |
|
|---|
| 1228 |
|
|---|
| 1229 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.10"/>
|
|---|
| 1230 |
|
|---|
| 1231 | <a name="INDEX-62"/><h3 class="head3">map hidden</h3>
|
|---|
| 1232 |
|
|---|
| 1233 | <p>DOS uses the hidden attribute to indicate that a file should not
|
|---|
| 1234 | ordinarily be visible in directory listings. Unix
|
|---|
| 1235 | doesn't have such a facility; it's
|
|---|
| 1236 | up to individual programs (notably, the shell) to decide what to
|
|---|
| 1237 | display and what not to display. Normally, you won't
|
|---|
| 1238 | have any DOS files that need to be hidden, so the best thing to do is
|
|---|
| 1239 | to leave this option turned off.</p>
|
|---|
| 1240 |
|
|---|
| 1241 | <p>Setting this option to <tt class="literal">yes</tt> causes the server to
|
|---|
| 1242 | map the hidden flag onto the executable-by-others bit (0001). This
|
|---|
| 1243 | feature can produce a rather startling effect. Any Unix program that
|
|---|
| 1244 | is executable by world seems to vanish when you look for it from a
|
|---|
| 1245 | Windows client. If this option is not set, however, and a Windows
|
|---|
| 1246 | user attempts to mark a file hidden on a Samba share, it will not
|
|---|
| 1247 | work—Samba has no place to store the hidden attribute!</p>
|
|---|
| 1248 |
|
|---|
| 1249 | <p>For map archive to work properly, the execute bit for other must not
|
|---|
| 1250 | be masked off with the <tt class="literal">create</tt>
|
|---|
| 1251 | <tt class="literal">mask</tt> parameter.</p>
|
|---|
| 1252 |
|
|---|
| 1253 |
|
|---|
| 1254 | </div>
|
|---|
| 1255 |
|
|---|
| 1256 |
|
|---|
| 1257 |
|
|---|
| 1258 | <div class="sect3"><a name="samba2-CHP-8-SECT-2.2.11"/>
|
|---|
| 1259 |
|
|---|
| 1260 | <h3 class="head3">inherit permissions</h3>
|
|---|
| 1261 |
|
|---|
| 1262 | <p>When the <tt class="literal">inherit</tt><a name="INDEX-63"/>
|
|---|
| 1263 | <tt class="literal">permissions</tt> option is set to
|
|---|
| 1264 | <tt class="literal">yes</tt>, the <tt class="literal">create</tt>
|
|---|
| 1265 | <tt class="literal">mask</tt>, <tt class="literal">directory</tt>
|
|---|
| 1266 | <tt class="literal">mask</tt>, <tt class="literal">force</tt>
|
|---|
| 1267 | <tt class="literal">create</tt> <tt class="literal">mode</tt>, and
|
|---|
| 1268 | <tt class="literal">force</tt> <tt class="literal">directory</tt>
|
|---|
| 1269 | <tt class="literal">mode</tt> are ignored. The normal behavior of setting
|
|---|
| 1270 | the permissions on newly created files is overridden such that the
|
|---|
| 1271 | new files and directories take on permissions from their parent
|
|---|
| 1272 | directory. New directories will have exactly the same permissions as
|
|---|
| 1273 | the parent, and new files will inherit the read and write bits from
|
|---|
| 1274 | the parent directory, while the execute bits are determined as usual
|
|---|
| 1275 | by the values of the <tt class="literal">map</tt>
|
|---|
| 1276 | <tt class="literal">archive</tt>, <tt class="literal">map</tt>
|
|---|
| 1277 | <tt class="literal">hidden</tt>, and <tt class="literal">map</tt>
|
|---|
| 1278 | <tt class="literal">system</tt> parameters.</p>
|
|---|
| 1279 |
|
|---|
| 1280 | <p>By default, this option is set to <tt class="literal">no</tt>. <a name="INDEX-64"/><a name="INDEX-65"/><a name="INDEX-66"/> <a name="INDEX-67"/><a name="INDEX-68"/><a name="INDEX-69"/></p>
|
|---|
| 1281 |
|
|---|
| 1282 |
|
|---|
| 1283 | </div>
|
|---|
| 1284 |
|
|---|
| 1285 |
|
|---|
| 1286 | </div>
|
|---|
| 1287 |
|
|---|
| 1288 |
|
|---|
| 1289 | </div>
|
|---|
| 1290 |
|
|---|
| 1291 |
|
|---|
| 1292 |
|
|---|
| 1293 | <div class="sect1"><a name="samba2-CHP-8-SECT-3"/>
|
|---|
| 1294 |
|
|---|
| 1295 | <h2 class="head1">Windows NT/2000/XP ACLs</h2>
|
|---|
| 1296 |
|
|---|
| 1297 | <p><a name="INDEX-70"/><a name="INDEX-71"/><a name="INDEX-72"/><a name="INDEX-73"/>Unix and Windows
|
|---|
| 1298 | have different <a name="INDEX-74"/>security models, and Windows NT/2000/XP
|
|---|
| 1299 | has a security model that is different from Windows 95/98/Me. One
|
|---|
| 1300 | area in which this is readily apparent is file protections. On Unix
|
|---|
| 1301 | systems, the method used has traditionally been the 9-bit
|
|---|
| 1302 | "user, group, other" system, in
|
|---|
| 1303 | which read, write, and execute bits can be set separately for the
|
|---|
| 1304 | owner of the file, the groups to which the owner belongs, and
|
|---|
| 1305 | everyone else, respectively.</p>
|
|---|
| 1306 |
|
|---|
| 1307 | <p><a name="INDEX-75"/>Windows 95/98/Me has a file-protection
|
|---|
| 1308 | system that is essentially no protection at all. This family of
|
|---|
| 1309 | operating systems was developed from MS-DOS, which was implemented as
|
|---|
| 1310 | a non-networked, single-user system. Multiuser security simply was
|
|---|
| 1311 | never added. One apparent exception to this is user-level security
|
|---|
| 1312 | for shared files, which we will discuss in <a href="ch09.html">Chapter 9</a>. Here, separate access permissions can be
|
|---|
| 1313 | assigned to individual network client users or groups. However,
|
|---|
| 1314 | user-level security on Windows 95/98/Me systems requires a Windows
|
|---|
| 1315 | NT/2000 or Samba server to perform the actual authentication.</p>
|
|---|
| 1316 |
|
|---|
| 1317 | <p>On <a name="INDEX-76"/><a name="INDEX-77"/><a name="INDEX-78"/>Windows NT/2000/XP,
|
|---|
| 1318 | user-level security is an extension of the native file security
|
|---|
| 1319 | model, which involves access control lists (ACLs). This system is
|
|---|
| 1320 | somewhat more extensive than the Unix security model, allowing the
|
|---|
| 1321 | access rights on individual files to be set separately for any number
|
|---|
| 1322 | of individual users and/or any number of arbitrary groups of users.
|
|---|
| 1323 | <a href="ch08.html#samba2-CHP-8-FIG-3">Figure 8-3</a>, <a href="ch08.html#samba2-CHP-8-FIG-4">Figure 8-4</a>,
|
|---|
| 1324 | and <a href="ch08.html#samba2-CHP-8-FIG-5">Figure 8-5</a> show the dialog boxes on a Windows
|
|---|
| 1325 | 2000 system in which the ACL is set for a file. By right-clicking a
|
|---|
| 1326 | file's icon and selecting Properties, then selecting
|
|---|
| 1327 | the Security tab, we get to the dialog box shown in <a href="ch08.html#samba2-CHP-8-FIG-3">Figure 8-3</a>. Here, we can set the basic permissions for a
|
|---|
| 1328 | file, which are similar to Unix permissions, although not identical.</p>
|
|---|
| 1329 |
|
|---|
| 1330 | <div class="figure"><a name="samba2-CHP-8-FIG-3"/><img src="figs/sam2_0803.gif"/></div><h4 class="head4">Figure 8-3. The Security tab of the file Properties dialog</h4>
|
|---|
| 1331 |
|
|---|
| 1332 | <p>By clicking the Advanced tab, we can bring up the dialog box shown in
|
|---|
| 1333 | <a href="ch08.html#samba2-CHP-8-FIG-4">Figure 8-4</a>, which shows the list of
|
|---|
| 1334 | <a name="INDEX-79"/>access control entries (ACEs) in the ACL.
|
|---|
| 1335 | In this dialog, ACEs can be added to or deleted from the ACL, or an
|
|---|
| 1336 | existing ACE can be viewed and modified. Each ACE either allows or
|
|---|
| 1337 | denies a set of permissions for a specific user or group.</p>
|
|---|
| 1338 |
|
|---|
| 1339 | <div class="figure"><a name="samba2-CHP-8-FIG-4"/><img src="figs/sam2_0804.gif"/></div><h4 class="head4">Figure 8-4. The Permissions tab of the Access Control Settings dialog</h4>
|
|---|
| 1340 |
|
|---|
| 1341 | <div class="figure"><a name="samba2-CHP-8-FIG-5"/><img src="figs/sam2_0805.gif"/></div><h4 class="head4">Figure 8-5. Permission Entry dialog, showing the settings of an ACE</h4>
|
|---|
| 1342 |
|
|---|
| 1343 | <p><a href="ch08.html#samba2-CHP-8-FIG-5">Figure 8-5</a> shows the dialog box for adding an ACE.
|
|---|
| 1344 | As you can see, there are more options for permissions in an ACL than
|
|---|
| 1345 | with the permission bits on typical Unix systems. You can learn more
|
|---|
| 1346 | about these settings in <em class="citetitle">Essential Windows NT System
|
|---|
| 1347 | Administration</em>, published by O'Reilly.</p>
|
|---|
| 1348 |
|
|---|
| 1349 | <p>In a networked environment where a Samba server is serving files to
|
|---|
| 1350 | Windows NT/2000/XP clients, Samba has to map Unix permissions for
|
|---|
| 1351 | files and directories to Windows NT/2000/XP access control lists.
|
|---|
| 1352 | When a Windows NT/2000/XP client accesses a shared file or directory
|
|---|
| 1353 | on a Samba server, Samba translates the object's
|
|---|
| 1354 | ownership, group, and permissions into an ACL and returns them to the
|
|---|
| 1355 | client.</p>
|
|---|
| 1356 |
|
|---|
| 1357 | <p><a href="ch08.html#samba2-CHP-8-FIG-6">Figure 8-6</a> shows the Properties dialog box for the
|
|---|
| 1358 | file <em class="filename">shopping_list.doc</em> that resides on the Samba
|
|---|
| 1359 | server.</p>
|
|---|
| 1360 |
|
|---|
| 1361 | <div class="figure"><a name="samba2-CHP-8-FIG-6"/><img src="figs/sam2_0806.gif"/></div><h4 class="head4">Figure 8-6. The Properties dialog for a file on the Samba server</h4>
|
|---|
| 1362 |
|
|---|
| 1363 | <p>From Unix, this file appears as:</p>
|
|---|
| 1364 |
|
|---|
| 1365 | <blockquote><pre class="code">$ <tt class="userinput"><b>ls -l shopping_list.doc</b></tt>
|
|---|
| 1366 | -rw------- 1 adilia users 49 Mar 29 11:58 shopping_list.doc</pre></blockquote>
|
|---|
| 1367 |
|
|---|
| 1368 | <p>Notice that because the file has read permissions for the owner, the
|
|---|
| 1369 | Read-only checkbox will show as cleared, even though the user on the
|
|---|
| 1370 | Windows client (who is not <tt class="literal">adilia</tt> in this example)
|
|---|
| 1371 | does not have read access permissions. The checkboxes here show only
|
|---|
| 1372 | DOS attributes. By clicking the Security tab, we can start to examine
|
|---|
| 1373 | the ACLs, as shown in <a href="ch08.html#samba2-CHP-8-FIG-7">Figure 8-7</a>.</p>
|
|---|
| 1374 |
|
|---|
| 1375 | <div class="figure"><a name="samba2-CHP-8-FIG-7"/><img src="figs/sam2_0807.gif"/></div><h4 class="head4">Figure 8-7. The Security tab of the Properties dialog for a file on the Samba server</h4>
|
|---|
| 1376 |
|
|---|
| 1377 | <p>The owner of the file (<tt class="literal">adilia</tt>) is shown as one
|
|---|
| 1378 | entry, while the group (<tt class="literal">users</tt>) and other
|
|---|
| 1379 | permissions are presented as the groups called
|
|---|
| 1380 | <tt class="literal">users</tt> and <tt class="literal">Everyone</tt>. Clicking
|
|---|
| 1381 | one of the items in the upper windows causes the simplified view of
|
|---|
| 1382 | the permissions in that item to appear in the bottom window. Here,
|
|---|
| 1383 | the read/write permissions for <tt class="literal">adilia</tt> appear in a
|
|---|
| 1384 | manner that makes the security model of Unix and Windows seem
|
|---|
| 1385 | similar. However, clicking the Advanced . . . button brings up the
|
|---|
| 1386 | additional dialog box shown in <a href="ch08.html#samba2-CHP-8-FIG-8">Figure 8-8</a>.</p>
|
|---|
| 1387 |
|
|---|
| 1388 | <div class="figure"><a name="samba2-CHP-8-FIG-8"/><img src="figs/sam2_0808.gif"/></div><h4 class="head4">Figure 8-8. The Access Control Settings dialog for a file on the Samba server</h4>
|
|---|
| 1389 |
|
|---|
| 1390 | <p>In this dialog box, we see the actual ACL of the file. The ACEs for
|
|---|
| 1391 | <tt class="literal">users</tt> and <tt class="literal">Everyone</tt> are listed
|
|---|
| 1392 | with Take Ownership in the Permission column. This is a trick used by
|
|---|
| 1393 | Samba for ACLs that have no permissions on the Unix side. On Windows,
|
|---|
| 1394 | an ACL with nothing set results in no ACL at all, so Samba sets the
|
|---|
| 1395 | Take Ownership permission to make sure that all the ACLs
|
|---|
| 1396 | corresponding to the Unix "user, group,
|
|---|
| 1397 | other" permissions will show up on Windows. The Take
|
|---|
| 1398 | Ownership permission has no corresponding Unix attribute, so the
|
|---|
| 1399 | setting on Windows does not affect the actual file on the Unix system
|
|---|
| 1400 | in any way. Although Windows client users might be misled into
|
|---|
| 1401 | thinking they can take ownership of the file (that is, change the
|
|---|
| 1402 | ownership of the file to themselves), an actual attempt to do so will
|
|---|
| 1403 | fail.</p>
|
|---|
| 1404 |
|
|---|
| 1405 | <p>The Permissions column for the <tt class="literal">adilia</tt> ACL is
|
|---|
| 1406 | listed as Special because Samba reports permissions for the file that
|
|---|
| 1407 | do not correspond to settings for which Windows has a more
|
|---|
| 1408 | descriptive name. Clicking the entry and then clicking the View/Edit
|
|---|
| 1409 | . . . button brings up the dialog box shown in <a href="ch08.html#samba2-CHP-8-FIG-9">Figure 8-9</a>, in which the details of the ACL permissions
|
|---|
| 1410 | can be viewed and perhaps modified.</p>
|
|---|
| 1411 |
|
|---|
| 1412 | <div class="figure"><a name="samba2-CHP-8-FIG-9"/><img src="figs/sam2_0809.gif"/></div><h4 class="head4">Figure 8-9. Permission Entry dialog for a file served by Samba</h4>
|
|---|
| 1413 |
|
|---|
| 1414 | <p>We say "perhaps" here because
|
|---|
| 1415 | checking or unchecking boxes in this dialog box might not result in
|
|---|
| 1416 | settings that Samba is able to map back into the Unix security model.
|
|---|
| 1417 | When a user attempts to modify a setting (either permissions or
|
|---|
| 1418 | ownership) that she does not have authority to change, or does not
|
|---|
| 1419 | correspond to a valid setting on the Unix system, Samba will respond
|
|---|
| 1420 | with an error dialog or by quietly ignoring the unmappable settings.</p>
|
|---|
| 1421 |
|
|---|
| 1422 | <p>The ACLs for a directory are slightly different. <a href="ch08.html#samba2-CHP-8-FIG-10">Figure 8-10</a> shows the ACL view after clicking the Advanced
|
|---|
| 1423 | button.</p>
|
|---|
| 1424 |
|
|---|
| 1425 | <div class="figure"><a name="samba2-CHP-8-FIG-10"/><img src="figs/sam2_0810.gif"/></div><h4 class="head4">Figure 8-10. The Access Control Settings dialog for a directory on the Samba server</h4>
|
|---|
| 1426 |
|
|---|
| 1427 | <p>Here, there are two ACLs each for <tt class="literal">users</tt> and
|
|---|
| 1428 | <tt class="literal">Everyone</tt>. One ACL specifies the permissions for
|
|---|
| 1429 | the directory itself, and the other specifies permissions for the
|
|---|
| 1430 | directory's contents. When changing settings in the
|
|---|
| 1431 | View/Edit... dialog, there is an extra drop-down menu to apply the
|
|---|
| 1432 | settings either to just the directory or to some combination of the
|
|---|
| 1433 | directory and the files and directories it contains. If settings are
|
|---|
| 1434 | applied to more than just the directory, Samba will match the
|
|---|
| 1435 | behavior of a Windows server and change the permissions on the
|
|---|
| 1436 | contents of the directory, as specified in the dialog.</p>
|
|---|
| 1437 |
|
|---|
| 1438 |
|
|---|
| 1439 | <div class="sect2"><a name="samba2-CHP-8-SECT-3.1"/>
|
|---|
| 1440 |
|
|---|
| 1441 | <h3 class="head2">Unix ACLs</h3>
|
|---|
| 1442 |
|
|---|
| 1443 | <p><a name="INDEX-80"/><a name="INDEX-81"/>In
|
|---|
| 1444 | most cases, users of Windows clients will find the Unix security
|
|---|
| 1445 | model to be sufficient. However, in some cases, people might want the
|
|---|
| 1446 | Samba server to support the full Windows ACL security model. Even if
|
|---|
| 1447 | they don't need the fine-grained control over file
|
|---|
| 1448 | and directory permissions, they might find Samba's
|
|---|
| 1449 | translation between ACLs and Unix permissions to be a source of
|
|---|
| 1450 | confusion or frustration.</p>
|
|---|
| 1451 |
|
|---|
| 1452 | <p>When the underlying Unix host operating system supports
|
|---|
| 1453 | <a name="INDEX-82"/><a name="INDEX-83"/>POSIX.1e ACLs, Samba provides much better
|
|---|
| 1454 | support of Windows NT/2000/XP ACLs. Versions of Unix that offer the
|
|---|
| 1455 | necessary support include the following:</p>
|
|---|
| 1456 |
|
|---|
| 1457 | <ul><li>
|
|---|
| 1458 | <p>Solaris 2.6 and later</p>
|
|---|
| 1459 | </li><li>
|
|---|
| 1460 | <p>SGI Irix</p>
|
|---|
| 1461 | </li><li>
|
|---|
| 1462 | <p>Linux, with Andreas Grünbacher's kernel
|
|---|
| 1463 | patch from <a href="http://acl.bestbits.at">http://acl.bestbits.at</a>
|
|---|
| 1464 | that adds ACL support to the Linux ext2 and ext3 filesystems</p>
|
|---|
| 1465 | </li><li>
|
|---|
| 1466 | <p>Linux, with the XFS filesystem</p>
|
|---|
| 1467 | </li><li>
|
|---|
| 1468 | <p>AIX</p>
|
|---|
| 1469 | </li><li>
|
|---|
| 1470 | <p>FreeBSD 5.0 and later</p>
|
|---|
| 1471 | </li><li>
|
|---|
| 1472 | <p>HP/UX 11.0 and later, with the JFS 3.3 filesystem layout Version 4</p>
|
|---|
| 1473 | </li></ul>
|
|---|
| 1474 | <p>If you are fortunate enough to have a Unix host operating system with
|
|---|
| 1475 | ACL support already provided, all you need to do is recompile Samba
|
|---|
| 1476 | using the <tt class="literal">--with-acl-support</tt> configure option, as
|
|---|
| 1477 | we described in <a href="ch02.html">Chapter 2</a>. If you are running
|
|---|
| 1478 | Linux and need to patch your kernel, things are much more
|
|---|
| 1479 | complicated. We suggest you refer to the documentation that comes
|
|---|
| 1480 | with the patch for details on using it.</p>
|
|---|
| 1481 |
|
|---|
| 1482 |
|
|---|
| 1483 | </div>
|
|---|
| 1484 |
|
|---|
| 1485 |
|
|---|
| 1486 | <div class="sect2"><a name="samba2-CHP-8-SECT-3.2"/>
|
|---|
| 1487 |
|
|---|
| 1488 | <h3 class="head2">Configuration Options for ACLs</h3>
|
|---|
| 1489 |
|
|---|
| 1490 | <p><a href="ch08.html#samba2-CHP-8-TABLE-3">Table 8-3</a> <a name="INDEX-84"/><a name="INDEX-85"/>shows the Samba configuration options
|
|---|
| 1491 | for working with Windows NT/2000/XP access control lists.</p>
|
|---|
| 1492 |
|
|---|
| 1493 | <a name="samba2-CHP-8-TABLE-3"/><h4 class="head4">Table 8-3. ACL configuration options</h4><table border="1">
|
|---|
| 1494 |
|
|---|
| 1495 |
|
|---|
| 1496 |
|
|---|
| 1497 |
|
|---|
| 1498 |
|
|---|
| 1499 |
|
|---|
| 1500 | <tr>
|
|---|
| 1501 | <th>
|
|---|
| 1502 | <p>Option</p>
|
|---|
| 1503 | </th>
|
|---|
| 1504 | <th>
|
|---|
| 1505 | <p>Parameters</p>
|
|---|
| 1506 | </th>
|
|---|
| 1507 | <th>
|
|---|
| 1508 | <p>Function</p>
|
|---|
| 1509 | </th>
|
|---|
| 1510 | <th>
|
|---|
| 1511 | <p>Default</p>
|
|---|
| 1512 | </th>
|
|---|
| 1513 | <th>
|
|---|
| 1514 | <p>Scope</p>
|
|---|
| 1515 | </th>
|
|---|
| 1516 | </tr>
|
|---|
| 1517 |
|
|---|
| 1518 |
|
|---|
| 1519 | <tr>
|
|---|
| 1520 | <td>
|
|---|
| 1521 | <p><tt class="literal">nt acl support</tt></p>
|
|---|
| 1522 | </td>
|
|---|
| 1523 | <td>
|
|---|
| 1524 | <p>Boolean</p>
|
|---|
| 1525 | </td>
|
|---|
| 1526 | <td>
|
|---|
| 1527 | <p>If <tt class="literal">yes</tt>, allows users on Windows NT/2000/XP clients
|
|---|
| 1528 | to modify ACL settings</p>
|
|---|
| 1529 | </td>
|
|---|
| 1530 | <td>
|
|---|
| 1531 | <p><tt class="literal">yes</tt></p>
|
|---|
| 1532 | </td>
|
|---|
| 1533 | <td>
|
|---|
| 1534 | <p>Share</p>
|
|---|
| 1535 | </td>
|
|---|
| 1536 | </tr>
|
|---|
| 1537 | <tr>
|
|---|
| 1538 | <td>
|
|---|
| 1539 | <p><tt class="literal">security mask</tt></p>
|
|---|
| 1540 | </td>
|
|---|
| 1541 | <td>
|
|---|
| 1542 | <p>numeric</p>
|
|---|
| 1543 | </td>
|
|---|
| 1544 | <td>
|
|---|
| 1545 | <p>Bitmask that allows or denies permission settings on files</p>
|
|---|
| 1546 | </td>
|
|---|
| 1547 | <td>
|
|---|
| 1548 | <p><tt class="literal">0777</tt></p>
|
|---|
| 1549 | </td>
|
|---|
| 1550 | <td>
|
|---|
| 1551 | <p>Share</p>
|
|---|
| 1552 | </td>
|
|---|
| 1553 | </tr>
|
|---|
| 1554 | <tr>
|
|---|
| 1555 | <td>
|
|---|
| 1556 | <p><tt class="literal">force security</tt> <tt class="literal">mode</tt></p>
|
|---|
| 1557 | </td>
|
|---|
| 1558 | <td>
|
|---|
| 1559 | <p>numeric</p>
|
|---|
| 1560 | </td>
|
|---|
| 1561 | <td>
|
|---|
| 1562 | <p>Bits that are always set when modifying file permissions</p>
|
|---|
| 1563 | </td>
|
|---|
| 1564 | <td>
|
|---|
| 1565 | <p><tt class="literal">0000</tt></p>
|
|---|
| 1566 | </td>
|
|---|
| 1567 | <td>
|
|---|
| 1568 | <p>Share</p>
|
|---|
| 1569 | </td>
|
|---|
| 1570 | </tr>
|
|---|
| 1571 | <tr>
|
|---|
| 1572 | <td>
|
|---|
| 1573 | <p><tt class="literal">directory</tt> <tt class="literal">security mask</tt></p>
|
|---|
| 1574 | </td>
|
|---|
| 1575 | <td>
|
|---|
| 1576 | <p>numeric</p>
|
|---|
| 1577 | </td>
|
|---|
| 1578 | <td>
|
|---|
| 1579 | <p>Bitmask that allows or denies permission settings on directories</p>
|
|---|
| 1580 | </td>
|
|---|
| 1581 | <td>
|
|---|
| 1582 | <p><tt class="literal">0777</tt></p>
|
|---|
| 1583 | </td>
|
|---|
| 1584 | <td>
|
|---|
| 1585 | <p>Share</p>
|
|---|
| 1586 | </td>
|
|---|
| 1587 | </tr>
|
|---|
| 1588 | <tr>
|
|---|
| 1589 | <td>
|
|---|
| 1590 | <p><tt class="literal">force directory</tt> <tt class="literal">security mode</tt></p>
|
|---|
| 1591 | </td>
|
|---|
| 1592 | <td>
|
|---|
| 1593 | <p>numeric</p>
|
|---|
| 1594 | </td>
|
|---|
| 1595 | <td>
|
|---|
| 1596 | <p>Bits that are always set when modifying directory permissions</p>
|
|---|
| 1597 | </td>
|
|---|
| 1598 | <td>
|
|---|
| 1599 | <p><tt class="literal">0000</tt></p>
|
|---|
| 1600 | </td>
|
|---|
| 1601 | <td>
|
|---|
| 1602 | <p>Share</p>
|
|---|
| 1603 | </td>
|
|---|
| 1604 | </tr>
|
|---|
| 1605 |
|
|---|
| 1606 | </table>
|
|---|
| 1607 |
|
|---|
| 1608 |
|
|---|
| 1609 | <div class="sect3"><a name="samba2-CHP-8-SECT-3.2.1"/>
|
|---|
| 1610 |
|
|---|
| 1611 | <a name="INDEX-86"/><h3 class="head3">nt acl support</h3>
|
|---|
| 1612 |
|
|---|
| 1613 | <p>This parameter defaults to <tt class="literal">yes</tt>, which allows users
|
|---|
| 1614 | on Windows NT/2000/XP clients to modify ACL settings for files on the
|
|---|
| 1615 | Samba server. When set to <tt class="literal">no</tt>, files show up as
|
|---|
| 1616 | owned by <tt class="literal">Everyone</tt>, with permissions appearing as
|
|---|
| 1617 | "Full Control". However,
|
|---|
| 1618 | <em class="emphasis">actual</em> ownership and permissions are enforced as
|
|---|
| 1619 | whatever they are set to on the Samba server, and the user on the
|
|---|
| 1620 | Windows client cannot view or modify them with the dialog boxes used
|
|---|
| 1621 | for managing ACLs.</p>
|
|---|
| 1622 |
|
|---|
| 1623 | <p>When enabled, support for Windows NT/2000/XP ACLs is limited to
|
|---|
| 1624 | whatever ownerships and permissions can map into valid users and
|
|---|
| 1625 | permissions on the Samba server. If the server supports ACLs (either
|
|---|
| 1626 | "out of the box" or with an
|
|---|
| 1627 | additional patch to enhance the filesystem), Samba's
|
|---|
| 1628 | ACL support more closely matches that of a Windows NT/2000/XP server.</p>
|
|---|
| 1629 |
|
|---|
| 1630 |
|
|---|
| 1631 | </div>
|
|---|
| 1632 |
|
|---|
| 1633 |
|
|---|
| 1634 |
|
|---|
| 1635 | <div class="sect3"><a name="samba2-CHP-8-SECT-3.2.2"/>
|
|---|
| 1636 |
|
|---|
| 1637 | <h3 class="head3">security mask</h3>
|
|---|
| 1638 |
|
|---|
| 1639 | <p>Using the <tt class="literal">security</tt><a name="INDEX-87"/>
|
|---|
| 1640 | <tt class="literal">mask</tt> option, it is possible to define which file
|
|---|
| 1641 | permissions users can modify from Windows NT/2000/XP clients. This is
|
|---|
| 1642 | for files only and not directories, which are handled with the
|
|---|
| 1643 | <tt class="literal">directory</tt><a name="INDEX-88"/>
|
|---|
| 1644 | <tt class="literal">security</tt> <tt class="literal">mask</tt> option. The
|
|---|
| 1645 | parameter is assigned a numeric value that is a Unix-style
|
|---|
| 1646 | permissions mask. For bits in the mask that are set, the client can
|
|---|
| 1647 | modify the corresponding bits in the files'
|
|---|
| 1648 | permissions. If the bit is zero, the client cannot modify that
|
|---|
| 1649 | permission. For example, if <tt class="literal">security</tt>
|
|---|
| 1650 | <tt class="literal">mask</tt> is set as:</p>
|
|---|
| 1651 |
|
|---|
| 1652 | <blockquote><pre class="code">[data]
|
|---|
| 1653 | security mask = 0777</pre></blockquote>
|
|---|
| 1654 |
|
|---|
| 1655 | <p>the client can modify all the user/group/other permissions for the
|
|---|
| 1656 | files in the share. This is the default. A value of
|
|---|
| 1657 | <tt class="literal">0</tt> would deny clients from changing any of the
|
|---|
| 1658 | permissions, and setting <tt class="literal">security</tt>
|
|---|
| 1659 | <tt class="literal">mask</tt> as:</p>
|
|---|
| 1660 |
|
|---|
| 1661 | <blockquote><pre class="code">[data]
|
|---|
| 1662 | security mask = 0666</pre></blockquote>
|
|---|
| 1663 |
|
|---|
| 1664 | <p>would allow client users to modify the read and write permissions,
|
|---|
| 1665 | but not the execute permissions.</p>
|
|---|
| 1666 |
|
|---|
| 1667 | <p>Do not count on <tt class="literal">security</tt> <tt class="literal">mask</tt>
|
|---|
| 1668 | for complete control because if the user can access the files on the
|
|---|
| 1669 | Samba server through any other means (for example, by logging
|
|---|
| 1670 | directly into the Unix host), he can modify the permissions using
|
|---|
| 1671 | that method.</p>
|
|---|
| 1672 |
|
|---|
| 1673 |
|
|---|
| 1674 | </div>
|
|---|
| 1675 |
|
|---|
| 1676 |
|
|---|
| 1677 |
|
|---|
| 1678 | <div class="sect3"><a name="samba2-CHP-8-SECT-3.2.3"/>
|
|---|
| 1679 |
|
|---|
| 1680 | <h3 class="head3">force security mode</h3>
|
|---|
| 1681 |
|
|---|
| 1682 | <p>The <tt class="literal">force</tt><a name="INDEX-89"/>
|
|---|
| 1683 | <tt class="literal">security</tt> <tt class="literal">mode</tt> option can be
|
|---|
| 1684 | used to define a set of permissions that are always set whenever the
|
|---|
| 1685 | user on a Windows NT/2000/XP client modifies a
|
|---|
| 1686 | file's permissions. (See the
|
|---|
| 1687 | <tt class="literal">force</tt> <tt class="literal">directory</tt>
|
|---|
| 1688 | <tt class="literal">security</tt> <tt class="literal">mode</tt> option for
|
|---|
| 1689 | handling directories.)</p>
|
|---|
| 1690 |
|
|---|
| 1691 | <p>Be careful to understand this properly. The mask given as the
|
|---|
| 1692 | parameter's value is not necessarily equal to the
|
|---|
| 1693 | resulting permissions on the file. The permissions that the client
|
|---|
| 1694 | user attempts to modify are logically OR'd with the
|
|---|
| 1695 | <tt class="literal">force</tt> <tt class="literal">security</tt>
|
|---|
| 1696 | <tt class="literal">mode</tt> <tt class="literal">mask</tt> option, and any bits
|
|---|
| 1697 | that are turned on will cause the file's
|
|---|
| 1698 | corresponding permissions to be set. As an example, suppose
|
|---|
| 1699 | <tt class="literal">force</tt> <tt class="literal">security</tt>
|
|---|
| 1700 | <tt class="literal">mode</tt> is set in a share thusly:</p>
|
|---|
| 1701 |
|
|---|
| 1702 | <blockquote><pre class="code">[data]
|
|---|
| 1703 | force security mode = 0440</pre></blockquote>
|
|---|
| 1704 |
|
|---|
| 1705 | <p>(This sets the read bit for owner and group, but not other.) If a
|
|---|
| 1706 | user on a Windows NT/2000/XP client modifies an ACL on a file in the
|
|---|
| 1707 | <tt class="literal">[data]</tt> share and attempts to remove all read
|
|---|
| 1708 | permissions, the read permission for other
|
|---|
| 1709 | (<tt class="literal">Everyone</tt>) will be removed, but the read
|
|---|
| 1710 | permission for the owner and group will remain. Note that this
|
|---|
| 1711 | parameter cannot force a permission bit to be turned off.</p>
|
|---|
| 1712 |
|
|---|
| 1713 | <p>As with the <tt class="literal">security</tt> <tt class="literal">mask</tt>
|
|---|
| 1714 | option, if a user can access the files in the share through any means
|
|---|
| 1715 | other than Samba, she can easily work around Samba's
|
|---|
| 1716 | enforcement of this parameter.</p>
|
|---|
| 1717 |
|
|---|
| 1718 | <p>The default value of <tt class="literal">force</tt>
|
|---|
| 1719 | <tt class="literal">security</tt> <tt class="literal">mode</tt> is
|
|---|
| 1720 | <tt class="literal">0000</tt>, which allows users to remove any permission
|
|---|
| 1721 | from files.</p>
|
|---|
| 1722 |
|
|---|
| 1723 |
|
|---|
| 1724 | </div>
|
|---|
| 1725 |
|
|---|
| 1726 |
|
|---|
| 1727 |
|
|---|
| 1728 | <div class="sect3"><a name="samba2-CHP-8-SECT-3.2.4"/>
|
|---|
| 1729 |
|
|---|
| 1730 | <a name="INDEX-90"/><h3 class="head3">directory security mask</h3>
|
|---|
| 1731 |
|
|---|
| 1732 | <p>This option works exactly the same as the <tt class="literal">security</tt>
|
|---|
| 1733 | <tt class="literal">mask</tt> option, except that it operates on
|
|---|
| 1734 | directories rather than files. As with <tt class="literal">security</tt>
|
|---|
| 1735 | <tt class="literal">mask</tt>, it has a default value of
|
|---|
| 1736 | <tt class="literal">0777</tt>, which allows Windows NT/2000/XP client users
|
|---|
| 1737 | to modify all Unix permissions on directories in the share.</p>
|
|---|
| 1738 |
|
|---|
| 1739 |
|
|---|
| 1740 | </div>
|
|---|
| 1741 |
|
|---|
| 1742 |
|
|---|
| 1743 |
|
|---|
| 1744 | <div class="sect3"><a name="samba2-CHP-8-SECT-3.2.5"/>
|
|---|
| 1745 |
|
|---|
| 1746 | <a name="INDEX-91"/><h3 class="head3">force directory security mode</h3>
|
|---|
| 1747 |
|
|---|
| 1748 | <p>This option works exactly the same as the <tt class="literal">force</tt>
|
|---|
| 1749 | <tt class="literal">security</tt> <tt class="literal">mode</tt> option, except
|
|---|
| 1750 | that it operates on directories rather than files. It also has a
|
|---|
| 1751 | default value of <tt class="literal">0000</tt>, which allows Windows
|
|---|
| 1752 | NT/2000/XP client users to remove any permissions from directories in
|
|---|
| 1753 | the share. <a name="INDEX-92"/><a name="INDEX-93"/><a name="INDEX-94"/><a name="INDEX-95"/> <a name="INDEX-96"/><a name="INDEX-97"/></p>
|
|---|
| 1754 |
|
|---|
| 1755 |
|
|---|
| 1756 | </div>
|
|---|
| 1757 |
|
|---|
| 1758 |
|
|---|
| 1759 | </div>
|
|---|
| 1760 |
|
|---|
| 1761 |
|
|---|
| 1762 | </div>
|
|---|
| 1763 |
|
|---|
| 1764 |
|
|---|
| 1765 |
|
|---|
| 1766 | <div class="sect1"><a name="samba2-CHP-8-SECT-4"/>
|
|---|
| 1767 |
|
|---|
| 1768 | <h2 class="head1">Name Mangling and Case</h2>
|
|---|
| 1769 |
|
|---|
| 1770 | <p><a name="INDEX-98"/><a name="INDEX-99"/><a name="INDEX-100"/><a name="INDEX-101"/>Back
|
|---|
| 1771 | in the days of DOS and Windows 3.1, every filename was limited to
|
|---|
| 1772 | eight uppercase characters, followed by a dot, and three more
|
|---|
| 1773 | uppercase characters. This was known as the <em class="firstterm">8.3
|
|---|
| 1774 | format</em> and was a huge nuisance. Windows 95/98/Me, Windows
|
|---|
| 1775 | NT/2000/XP, and Unix have since relaxed this problem by allowing
|
|---|
| 1776 | longer, sometimes case-sensitive, filenames. <a href="ch08.html#samba2-CHP-8-TABLE-4">Table 8-4</a> shows the current naming state of several
|
|---|
| 1777 | popular operating systems.</p>
|
|---|
| 1778 |
|
|---|
| 1779 | <a name="samba2-CHP-8-TABLE-4"/><h4 class="head4">Table 8-4. Operating system filename limitations</h4><table border="1">
|
|---|
| 1780 |
|
|---|
| 1781 |
|
|---|
| 1782 |
|
|---|
| 1783 | <tr>
|
|---|
| 1784 | <th>
|
|---|
| 1785 | <p>Operating system</p>
|
|---|
| 1786 | </th>
|
|---|
| 1787 | <th>
|
|---|
| 1788 | <p>File-naming rules</p>
|
|---|
| 1789 | </th>
|
|---|
| 1790 | </tr>
|
|---|
| 1791 |
|
|---|
| 1792 |
|
|---|
| 1793 | <tr>
|
|---|
| 1794 | <td>
|
|---|
| 1795 | <p>DOS 6.22 or below</p>
|
|---|
| 1796 | </td>
|
|---|
| 1797 | <td>
|
|---|
| 1798 | <p>Eight characters followed by a dot followed by a three-letter
|
|---|
| 1799 | extension (8.3 format); case-insensitive</p>
|
|---|
| 1800 | </td>
|
|---|
| 1801 | </tr>
|
|---|
| 1802 | <tr>
|
|---|
| 1803 | <td>
|
|---|
| 1804 | <p>Windows 3.1 for Workgroups</p>
|
|---|
| 1805 | </td>
|
|---|
| 1806 | <td>
|
|---|
| 1807 | <p>Eight characters followed by a dot followed by a three-letter
|
|---|
| 1808 | extension (8.3 format); case-insensitive</p>
|
|---|
| 1809 | </td>
|
|---|
| 1810 | </tr>
|
|---|
| 1811 | <tr>
|
|---|
| 1812 | <td>
|
|---|
| 1813 | <p>Windows 95/98/Me</p>
|
|---|
| 1814 | </td>
|
|---|
| 1815 | <td>
|
|---|
| 1816 | <p>255 characters; case-insensitive but case-preserving</p>
|
|---|
| 1817 | </td>
|
|---|
| 1818 | </tr>
|
|---|
| 1819 | <tr>
|
|---|
| 1820 | <td>
|
|---|
| 1821 | <p>Windows NT/2000/XP</p>
|
|---|
| 1822 | </td>
|
|---|
| 1823 | <td>
|
|---|
| 1824 | <p>255 characters; case-insensitive but case-preserving</p>
|
|---|
| 1825 | </td>
|
|---|
| 1826 | </tr>
|
|---|
| 1827 | <tr>
|
|---|
| 1828 | <td>
|
|---|
| 1829 | <p>Unix</p>
|
|---|
| 1830 | </td>
|
|---|
| 1831 | <td>
|
|---|
| 1832 | <p>255 characters; case-sensitive</p>
|
|---|
| 1833 | </td>
|
|---|
| 1834 | </tr>
|
|---|
| 1835 |
|
|---|
| 1836 | </table>
|
|---|
| 1837 |
|
|---|
| 1838 | <p>Samba still has to remain backward-compatible with network clients
|
|---|
| 1839 | that store files in just the 8.3 format, such as Windows for
|
|---|
| 1840 | Workgroups. If a user creates a file on a share called
|
|---|
| 1841 | <em class="emphasis">antidisestablishmentarianism.txt</em>, a Windows for
|
|---|
| 1842 | Workgroups client cannot tell it apart from another file in the same
|
|---|
| 1843 | directory called <em class="emphasis">antidisease.txt</em>. Like Windows
|
|---|
| 1844 | 95/98/Me and Windows NT/2000/XP, Samba has to employ a special method
|
|---|
| 1845 | for translating a long filename to an 8.3 filename in such a way that
|
|---|
| 1846 | similar filenames will not cause collisions. This is called
|
|---|
| 1847 | <em class="firstterm">name mangling</em>, and Samba deals with this in a
|
|---|
| 1848 | manner that is similar, but not identical to, Windows 95 and its
|
|---|
| 1849 | successors.</p>
|
|---|
| 1850 |
|
|---|
| 1851 |
|
|---|
| 1852 | <div class="sect2"><a name="samba2-CHP-8-SECT-4.1"/>
|
|---|
| 1853 |
|
|---|
| 1854 | <h3 class="head2">The Samba Mangling Operation</h3>
|
|---|
| 1855 |
|
|---|
| 1856 | <p><a name="INDEX-102"/>Here is how Samba mangles a long
|
|---|
| 1857 | filename into an 8.3 filename:</p>
|
|---|
| 1858 |
|
|---|
| 1859 | <ul><li>
|
|---|
| 1860 | <p>If the original filename does not begin with a dot, the first five
|
|---|
| 1861 | characters before the dot (if there is one) are converted to
|
|---|
| 1862 | uppercase. These characters are used as the first five characters of
|
|---|
| 1863 | the 8.3 mangled filename.</p>
|
|---|
| 1864 | </li><li>
|
|---|
| 1865 | <p>If the original filename begins with a dot, the dot is removed and
|
|---|
| 1866 | then the previous step is performed on what is left.</p>
|
|---|
| 1867 | </li><li>
|
|---|
| 1868 | <p>These characters are immediately followed by a special mangling
|
|---|
| 1869 | character: by default, a tilde (~), although Samba allows you to
|
|---|
| 1870 | change this character.</p>
|
|---|
| 1871 | </li><li>
|
|---|
| 1872 | <p>The base of the long filename before the last period is hashed into a
|
|---|
| 1873 | two-character code; parts of the name after the last dot can be used
|
|---|
| 1874 | if necessary. This two-character code is appended to the filename
|
|---|
| 1875 | after the mangling character.</p>
|
|---|
| 1876 | </li><li>
|
|---|
| 1877 | <p>The first three characters after the last dot (if there is one) of
|
|---|
| 1878 | the original filename are converted to uppercase and appended onto
|
|---|
| 1879 | the mangled name as the extension. If the original filename began
|
|---|
| 1880 | with a dot, three underscores ( <tt class="literal">_ _ _</tt> ) are used
|
|---|
| 1881 | as the extension instead.</p>
|
|---|
| 1882 | </li></ul>
|
|---|
| 1883 | <p>Here are some examples:</p>
|
|---|
| 1884 |
|
|---|
| 1885 | <blockquote><pre class="code">virtuosity.dat VIRTU~F1.DAT
|
|---|
| 1886 | .htaccess HTACC~U0._ _ _
|
|---|
| 1887 | hello.java HELLO~1F.JAV
|
|---|
| 1888 | team.config.txt TEAMC~04.TXT
|
|---|
| 1889 | antidisestablishmentarianism.txt ANTID~E3.TXT
|
|---|
| 1890 | antidisease.txt ANTID~9K.TXT</pre></blockquote>
|
|---|
| 1891 |
|
|---|
| 1892 | <p>Using these rules will allow Windows for Workgroups to differentiate
|
|---|
| 1893 | the two files on behalf of the poor individual who is forced to see
|
|---|
| 1894 | the network through the eyes of that operating system. Note that the
|
|---|
| 1895 | same long filename should always hash to the same mangled name with
|
|---|
| 1896 | Samba; this doesn't always happen with Windows. The
|
|---|
| 1897 | downside of this approach is that there can still be collisions;
|
|---|
| 1898 | however, the chances are greatly reduced.</p>
|
|---|
| 1899 |
|
|---|
| 1900 | <p>You generally want to use the mangling configuration options with
|
|---|
| 1901 | only the oldest clients. We recommend doing this without disrupting
|
|---|
| 1902 | other clients by adding an <tt class="literal">include</tt> directive to
|
|---|
| 1903 | the <em class="filename">smb.conf</em> file:</p>
|
|---|
| 1904 |
|
|---|
| 1905 | <blockquote><pre class="code">[global]
|
|---|
| 1906 | include = /usr/local/samba/lib/smb.conf.%a</pre></blockquote>
|
|---|
| 1907 |
|
|---|
| 1908 | <p>This resolves to <em class="filename">smb.conf.WfWg</em> when a Windows
|
|---|
| 1909 | for Workgroups client attaches. Now you can create a file
|
|---|
| 1910 | <em class="filename">/usr/local/samba/lib/smb.conf.WfWg</em>, which might
|
|---|
| 1911 | contain these options:</p>
|
|---|
| 1912 |
|
|---|
| 1913 | <blockquote><pre class="code">[global]
|
|---|
| 1914 | case sensitive = no
|
|---|
| 1915 | default case = upper
|
|---|
| 1916 | preserve case = no
|
|---|
| 1917 | short preserve case = no
|
|---|
| 1918 | mangle case = yes
|
|---|
| 1919 | mangled names= yes</pre></blockquote>
|
|---|
| 1920 |
|
|---|
| 1921 | <p>If you are not using Windows for Workgroups, you probably do not need
|
|---|
| 1922 | to change any of these options from their defaults.</p>
|
|---|
| 1923 |
|
|---|
| 1924 |
|
|---|
| 1925 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.1.1"/>
|
|---|
| 1926 |
|
|---|
| 1927 | <h3 class="head3">Representing and resolving filenames with Samba</h3>
|
|---|
| 1928 |
|
|---|
| 1929 | <p><a name="INDEX-103"/>Another item that we should
|
|---|
| 1930 | point out is that there is a difference between how an operating
|
|---|
| 1931 | system <em class="emphasis">represents</em> a file and how it
|
|---|
| 1932 | <em class="emphasis">resolves</em> it. For example, you have likely run
|
|---|
| 1933 | across a file on a Windows system called
|
|---|
| 1934 | <em class="filename">README.TXT</em>. The file can be represented by the
|
|---|
| 1935 | operating system entirely in uppercase letters. However, if you open
|
|---|
| 1936 | an MS-DOS command prompt and enter the command:</p>
|
|---|
| 1937 |
|
|---|
| 1938 | <blockquote><pre class="code">C:\> <tt class="userinput"><b>notepad readme.txt</b></tt></pre></blockquote>
|
|---|
| 1939 |
|
|---|
| 1940 | <p>the all-caps file is loaded into the editing program, even though you
|
|---|
| 1941 | typed the name in lowercase letters.</p>
|
|---|
| 1942 |
|
|---|
| 1943 | <p>This is because the Windows 95/98/Me and Windows NT/2000/XP families
|
|---|
| 1944 | of operating systems resolve filenames in a case-insensitive manner,
|
|---|
| 1945 | even though the files are represented in a case-sensitive manner.
|
|---|
| 1946 | Unix-based operating systems, on the other hand, always resolve files
|
|---|
| 1947 | in a case-sensitive manner; if you try to edit
|
|---|
| 1948 | <em class="filename">README.TXT</em> with the command:</p>
|
|---|
| 1949 |
|
|---|
| 1950 | <blockquote><pre class="code">$ <tt class="userinput"><b>vi readme.txt</b></tt></pre></blockquote>
|
|---|
| 1951 |
|
|---|
| 1952 | <p>you will likely be editing the empty buffer of a new file.</p>
|
|---|
| 1953 |
|
|---|
| 1954 | <p><a name="INDEX-104"/>Here is how Samba handles case: if the
|
|---|
| 1955 | <tt class="literal">preserve</tt><a name="INDEX-105"/> <tt class="literal">case</tt> is set
|
|---|
| 1956 | to <tt class="literal">yes</tt>, Samba will always use the case provided by
|
|---|
| 1957 | the operating system for representing (not resolving) filenames. If
|
|---|
| 1958 | it is set to <tt class="literal">no</tt>, it will use the case specified by
|
|---|
| 1959 | the <tt class="literal">default</tt><a name="INDEX-106"/> <tt class="literal">case</tt> option.
|
|---|
| 1960 | The same is true for
|
|---|
| 1961 | <tt class="literal">short</tt><a name="INDEX-107"/>
|
|---|
| 1962 | <tt class="literal">preserve</tt> <tt class="literal">case</tt>. If this option
|
|---|
| 1963 | is set to <tt class="literal">yes</tt>, Samba will use the default case of
|
|---|
| 1964 | the operating system for representing 8.3 filenames; otherwise, it
|
|---|
| 1965 | will use the case specified by the <tt class="literal">default</tt>
|
|---|
| 1966 | <tt class="literal">case</tt> option. Finally, Samba will always resolve
|
|---|
| 1967 | filenames in its shares based on the value of the
|
|---|
| 1968 | <tt class="literal">case</tt> <tt class="literal">sensitive</tt> option.</p>
|
|---|
| 1969 |
|
|---|
| 1970 |
|
|---|
| 1971 | </div>
|
|---|
| 1972 |
|
|---|
| 1973 |
|
|---|
| 1974 | </div>
|
|---|
| 1975 |
|
|---|
| 1976 |
|
|---|
| 1977 | <div class="sect2"><a name="samba2-CHP-8-SECT-4.2"/>
|
|---|
| 1978 |
|
|---|
| 1979 | <h3 class="head2">Mangling Options</h3>
|
|---|
| 1980 |
|
|---|
| 1981 | <p><a name="INDEX-108"/><a name="INDEX-109"/>Samba
|
|---|
| 1982 | allows more refined instructions on how it should perform name
|
|---|
| 1983 | mangling, including those controlling the case sensitivity, the
|
|---|
| 1984 | character inserted to form a mangled name, and the ability to map
|
|---|
| 1985 | filenames manually from one format to another. These options are
|
|---|
| 1986 | shown in <a href="ch08.html#samba2-CHP-8-TABLE-5">Table 8-5</a>.</p>
|
|---|
| 1987 |
|
|---|
| 1988 | <a name="samba2-CHP-8-TABLE-5"/><h4 class="head4">Table 8-5. Name-mangling options</h4><table border="1">
|
|---|
| 1989 |
|
|---|
| 1990 |
|
|---|
| 1991 |
|
|---|
| 1992 |
|
|---|
| 1993 |
|
|---|
| 1994 |
|
|---|
| 1995 | <tr>
|
|---|
| 1996 | <th>
|
|---|
| 1997 | <p>Option</p>
|
|---|
| 1998 | </th>
|
|---|
| 1999 | <th>
|
|---|
| 2000 | <p>Parameters</p>
|
|---|
| 2001 | </th>
|
|---|
| 2002 | <th>
|
|---|
| 2003 | <p>Function</p>
|
|---|
| 2004 | </th>
|
|---|
| 2005 | <th>
|
|---|
| 2006 | <p>Default</p>
|
|---|
| 2007 | </th>
|
|---|
| 2008 | <th>
|
|---|
| 2009 | <p>Scope</p>
|
|---|
| 2010 | </th>
|
|---|
| 2011 | </tr>
|
|---|
| 2012 |
|
|---|
| 2013 |
|
|---|
| 2014 | <tr>
|
|---|
| 2015 | <td>
|
|---|
| 2016 | <p><tt class="literal">case sensitive</tt></p>
|
|---|
| 2017 |
|
|---|
| 2018 | <p><tt class="literal">(casesignames)</tt></p>
|
|---|
| 2019 | </td>
|
|---|
| 2020 | <td>
|
|---|
| 2021 | <p>Boolean</p>
|
|---|
| 2022 | </td>
|
|---|
| 2023 | <td>
|
|---|
| 2024 | <p>If <tt class="literal">yes</tt>, treats filenames as case-sensitive
|
|---|
| 2025 | (Windows doesn't).</p>
|
|---|
| 2026 | </td>
|
|---|
| 2027 | <td>
|
|---|
| 2028 | <p><tt class="literal">no</tt></p>
|
|---|
| 2029 | </td>
|
|---|
| 2030 | <td>
|
|---|
| 2031 | <p>Share</p>
|
|---|
| 2032 | </td>
|
|---|
| 2033 | </tr>
|
|---|
| 2034 | <tr>
|
|---|
| 2035 | <td>
|
|---|
| 2036 | <p><tt class="literal">default case</tt></p>
|
|---|
| 2037 | </td>
|
|---|
| 2038 | <td>
|
|---|
| 2039 | <p>string (<tt class="literal">upper</tt> or <tt class="literal">lower</tt>)</p>
|
|---|
| 2040 | </td>
|
|---|
| 2041 | <td>
|
|---|
| 2042 | <p>Case to assume as default (used only when preserve case is
|
|---|
| 2043 | <tt class="literal">no</tt>).</p>
|
|---|
| 2044 | </td>
|
|---|
| 2045 | <td>
|
|---|
| 2046 | <p>Lower</p>
|
|---|
| 2047 | </td>
|
|---|
| 2048 | <td>
|
|---|
| 2049 | <p>Share</p>
|
|---|
| 2050 | </td>
|
|---|
| 2051 | </tr>
|
|---|
| 2052 | <tr>
|
|---|
| 2053 | <td>
|
|---|
| 2054 | <p><tt class="literal">preserve case</tt></p>
|
|---|
| 2055 | </td>
|
|---|
| 2056 | <td>
|
|---|
| 2057 | <p>Boolean</p>
|
|---|
| 2058 | </td>
|
|---|
| 2059 | <td>
|
|---|
| 2060 | <p>If <tt class="literal">yes</tt>, keep the case the client supplied (i.e.,
|
|---|
| 2061 | do not convert to <tt class="literal">default</tt>
|
|---|
| 2062 | <tt class="literal">case</tt>).</p>
|
|---|
| 2063 | </td>
|
|---|
| 2064 | <td>
|
|---|
| 2065 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2066 | </td>
|
|---|
| 2067 | <td>
|
|---|
| 2068 | <p>Share</p>
|
|---|
| 2069 | </td>
|
|---|
| 2070 | </tr>
|
|---|
| 2071 | <tr>
|
|---|
| 2072 | <td>
|
|---|
| 2073 | <p><tt class="literal">short preserve case</tt></p>
|
|---|
| 2074 | </td>
|
|---|
| 2075 | <td>
|
|---|
| 2076 | <p>Boolean</p>
|
|---|
| 2077 | </td>
|
|---|
| 2078 | <td>
|
|---|
| 2079 | <p>If <tt class="literal">yes</tt>, preserve case of 8.3-format names that the
|
|---|
| 2080 | client provides.</p>
|
|---|
| 2081 | </td>
|
|---|
| 2082 | <td>
|
|---|
| 2083 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2084 | </td>
|
|---|
| 2085 | <td>
|
|---|
| 2086 | <p>Share</p>
|
|---|
| 2087 | </td>
|
|---|
| 2088 | </tr>
|
|---|
| 2089 | <tr>
|
|---|
| 2090 | <td>
|
|---|
| 2091 | <p><tt class="literal">mangled names</tt></p>
|
|---|
| 2092 | </td>
|
|---|
| 2093 | <td>
|
|---|
| 2094 | <p>Boolean</p>
|
|---|
| 2095 | </td>
|
|---|
| 2096 | <td>
|
|---|
| 2097 | <p>Mangles long names into 8.3 DOS format.</p>
|
|---|
| 2098 | </td>
|
|---|
| 2099 | <td>
|
|---|
| 2100 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2101 | </td>
|
|---|
| 2102 | <td>
|
|---|
| 2103 | <p>Share</p>
|
|---|
| 2104 | </td>
|
|---|
| 2105 | </tr>
|
|---|
| 2106 | <tr>
|
|---|
| 2107 | <td>
|
|---|
| 2108 | <p><tt class="literal">mangle case</tt></p>
|
|---|
| 2109 | </td>
|
|---|
| 2110 | <td>
|
|---|
| 2111 | <p>Boolean</p>
|
|---|
| 2112 | </td>
|
|---|
| 2113 | <td>
|
|---|
| 2114 | <p>Mangle a name if it is mixed case.</p>
|
|---|
| 2115 | </td>
|
|---|
| 2116 | <td>
|
|---|
| 2117 | <p><tt class="literal">no</tt></p>
|
|---|
| 2118 | </td>
|
|---|
| 2119 | <td>
|
|---|
| 2120 | <p>Share</p>
|
|---|
| 2121 | </td>
|
|---|
| 2122 | </tr>
|
|---|
| 2123 | <tr>
|
|---|
| 2124 | <td>
|
|---|
| 2125 | <p><tt class="literal">mangling char</tt></p>
|
|---|
| 2126 | </td>
|
|---|
| 2127 | <td>
|
|---|
| 2128 | <p>string (single character)</p>
|
|---|
| 2129 | </td>
|
|---|
| 2130 | <td>
|
|---|
| 2131 | <p>Gives mangling character.</p>
|
|---|
| 2132 | </td>
|
|---|
| 2133 | <td>
|
|---|
| 2134 | <p><tt class="literal">~</tt></p>
|
|---|
| 2135 | </td>
|
|---|
| 2136 | <td>
|
|---|
| 2137 | <p>Share</p>
|
|---|
| 2138 | </td>
|
|---|
| 2139 | </tr>
|
|---|
| 2140 | <tr>
|
|---|
| 2141 | <td>
|
|---|
| 2142 | <p><tt class="literal">mangled stack</tt></p>
|
|---|
| 2143 | </td>
|
|---|
| 2144 | <td>
|
|---|
| 2145 | <p>numeric</p>
|
|---|
| 2146 | </td>
|
|---|
| 2147 | <td>
|
|---|
| 2148 | <p>Number of mangled names to keep on the local mangling stack.</p>
|
|---|
| 2149 | </td>
|
|---|
| 2150 | <td>
|
|---|
| 2151 | <p><tt class="literal">50</tt></p>
|
|---|
| 2152 | </td>
|
|---|
| 2153 | <td>
|
|---|
| 2154 | <p>Global</p>
|
|---|
| 2155 | </td>
|
|---|
| 2156 | </tr>
|
|---|
| 2157 | <tr>
|
|---|
| 2158 | <td>
|
|---|
| 2159 | <p><tt class="literal">mangled map</tt></p>
|
|---|
| 2160 | </td>
|
|---|
| 2161 | <td>
|
|---|
| 2162 | <p>string (list of patterns)</p>
|
|---|
| 2163 | </td>
|
|---|
| 2164 | <td>
|
|---|
| 2165 | <p>Allows mapping of filenames from one format into another.</p>
|
|---|
| 2166 | </td>
|
|---|
| 2167 | <td>
|
|---|
| 2168 | <p>None</p>
|
|---|
| 2169 | </td>
|
|---|
| 2170 | <td>
|
|---|
| 2171 | <p>Share</p>
|
|---|
| 2172 | </td>
|
|---|
| 2173 | </tr>
|
|---|
| 2174 |
|
|---|
| 2175 | </table>
|
|---|
| 2176 |
|
|---|
| 2177 |
|
|---|
| 2178 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.1"/>
|
|---|
| 2179 |
|
|---|
| 2180 | <a name="INDEX-110"/><h3 class="head3">case sensitive</h3>
|
|---|
| 2181 |
|
|---|
| 2182 | <p>This share-level option, which has the obtuse synonym
|
|---|
| 2183 | <tt class="literal">casesignames</tt>, specifies whether Samba should
|
|---|
| 2184 | preserve case when resolving filenames in a specific share. The
|
|---|
| 2185 | default value for this option is <tt class="literal">no</tt>, which is how
|
|---|
| 2186 | Windows handles file resolution. If clients are using an operating
|
|---|
| 2187 | system that takes advantage of case-sensitive filenames, you can set
|
|---|
| 2188 | this configuration option to <tt class="literal">yes</tt> as shown here:</p>
|
|---|
| 2189 |
|
|---|
| 2190 | <blockquote><pre class="code">[accounting]
|
|---|
| 2191 | case sensitive = yes</pre></blockquote>
|
|---|
| 2192 |
|
|---|
| 2193 | <p>Otherwise, we recommend that you leave this option set to its default.</p>
|
|---|
| 2194 |
|
|---|
| 2195 |
|
|---|
| 2196 | </div>
|
|---|
| 2197 |
|
|---|
| 2198 |
|
|---|
| 2199 |
|
|---|
| 2200 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.2"/>
|
|---|
| 2201 |
|
|---|
| 2202 | <h3 class="head3">default case</h3>
|
|---|
| 2203 |
|
|---|
| 2204 | <p>The <tt class="literal">default</tt><a name="INDEX-111"/> <tt class="literal">case</tt> option
|
|---|
| 2205 | is used with <tt class="literal">preserve</tt> <tt class="literal">case</tt>.
|
|---|
| 2206 | This specifies the default case (upper or lower) Samba uses to create
|
|---|
| 2207 | a file on one of its shares on behalf of a client. The default case
|
|---|
| 2208 | is <tt class="literal">lower</tt>, which means that newly created files
|
|---|
| 2209 | will have lowercase names. If you need to, you can override this
|
|---|
| 2210 | global option by specifying the following:</p>
|
|---|
| 2211 |
|
|---|
| 2212 | <blockquote><pre class="code">[global]
|
|---|
| 2213 | default case = upper</pre></blockquote>
|
|---|
| 2214 |
|
|---|
| 2215 | <p>If you specify this value, the names of newly created files are
|
|---|
| 2216 | translated into uppercase and cannot be overridden in a program. We
|
|---|
| 2217 | recommend that you use the default value unless you are dealing with
|
|---|
| 2218 | a Windows for Workgroups or other 8.3 client, in which case it should
|
|---|
| 2219 | be <tt class="literal">upper</tt>.</p>
|
|---|
| 2220 |
|
|---|
| 2221 |
|
|---|
| 2222 | </div>
|
|---|
| 2223 |
|
|---|
| 2224 |
|
|---|
| 2225 |
|
|---|
| 2226 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.3"/>
|
|---|
| 2227 |
|
|---|
| 2228 | <a name="INDEX-112"/><h3 class="head3">preserve case</h3>
|
|---|
| 2229 |
|
|---|
| 2230 | <p>This option specifies whether a file created by Samba on behalf of
|
|---|
| 2231 | the client is created with the case provided by the client operating
|
|---|
| 2232 | system or the case specified by the earlier
|
|---|
| 2233 | <tt class="literal">default</tt> <tt class="literal">case</tt> configuration
|
|---|
| 2234 | option. The default value is <tt class="literal">yes</tt>, which uses the
|
|---|
| 2235 | case provided by the client operating system. If it is set to
|
|---|
| 2236 | <tt class="literal">no</tt>, the value of the <tt class="literal">default</tt>
|
|---|
| 2237 | <tt class="literal">case</tt> option (upper or lower) is used.</p>
|
|---|
| 2238 |
|
|---|
| 2239 | <p>Note that this option does not handle 8.3 file requests sent from the
|
|---|
| 2240 | client—see the upcoming <tt class="literal">short</tt>
|
|---|
| 2241 | <tt class="literal">preserve</tt> <tt class="literal">case</tt> option. You might
|
|---|
| 2242 | want to set this option to <tt class="literal">yes</tt>, for example, if
|
|---|
| 2243 | applications that create files on the Samba server demand the file be
|
|---|
| 2244 | all uppercase. If instead you want Samba to mimic the behavior of a
|
|---|
| 2245 | Windows NT filesystem, you can leave this option set to its default,
|
|---|
| 2246 | <tt class="literal">yes</tt>.</p>
|
|---|
| 2247 |
|
|---|
| 2248 |
|
|---|
| 2249 | </div>
|
|---|
| 2250 |
|
|---|
| 2251 |
|
|---|
| 2252 |
|
|---|
| 2253 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.4"/>
|
|---|
| 2254 |
|
|---|
| 2255 | <a name="INDEX-113"/><h3 class="head3">short preserve case</h3>
|
|---|
| 2256 |
|
|---|
| 2257 | <p>This option specifies whether an 8.3 filename created by Samba on
|
|---|
| 2258 | behalf of the client is created with the default case of the client
|
|---|
| 2259 | operating system or the case specified by the
|
|---|
| 2260 | <tt class="literal">default</tt> <tt class="literal">case</tt> configuration
|
|---|
| 2261 | option. The default value is <tt class="literal">yes</tt>, which uses the
|
|---|
| 2262 | case provided by the client operating system. You can let Samba
|
|---|
| 2263 | choose the case through the <tt class="literal">default</tt>
|
|---|
| 2264 | <tt class="literal">case</tt> option by setting it as follows:</p>
|
|---|
| 2265 |
|
|---|
| 2266 | <blockquote><pre class="code">[global]
|
|---|
| 2267 | short preserve case = no</pre></blockquote>
|
|---|
| 2268 |
|
|---|
| 2269 | <p>If you want to force Samba to mimic the behavior of a Windows NT
|
|---|
| 2270 | filesystem, you can leave this option set to its default,
|
|---|
| 2271 | <tt class="literal">yes</tt>.</p>
|
|---|
| 2272 |
|
|---|
| 2273 |
|
|---|
| 2274 | </div>
|
|---|
| 2275 |
|
|---|
| 2276 |
|
|---|
| 2277 |
|
|---|
| 2278 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.5"/>
|
|---|
| 2279 |
|
|---|
| 2280 | <a name="INDEX-114"/><h3 class="head3">mangled names</h3>
|
|---|
| 2281 |
|
|---|
| 2282 | <p>This share-level option specifies whether Samba will mangle filenames
|
|---|
| 2283 | for 8.3 clients. If the option is set to <tt class="literal">no</tt>, Samba
|
|---|
| 2284 | will not mangle the names, and (depending on the client) they will
|
|---|
| 2285 | either be invisible or appear truncated to those using 8.3 operating
|
|---|
| 2286 | systems. The default value is <tt class="literal">yes</tt>. You can
|
|---|
| 2287 | override it per share as follows:</p>
|
|---|
| 2288 |
|
|---|
| 2289 | <blockquote><pre class="code">[data]
|
|---|
| 2290 | mangled names = no</pre></blockquote>
|
|---|
| 2291 |
|
|---|
| 2292 |
|
|---|
| 2293 | </div>
|
|---|
| 2294 |
|
|---|
| 2295 |
|
|---|
| 2296 |
|
|---|
| 2297 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.6"/>
|
|---|
| 2298 |
|
|---|
| 2299 | <a name="INDEX-115"/><h3 class="head3">mangle case</h3>
|
|---|
| 2300 |
|
|---|
| 2301 | <p>This option tells Samba whether it should mangle filenames that are
|
|---|
| 2302 | not composed entirely of the case specified using the
|
|---|
| 2303 | <tt class="literal">default</tt> <tt class="literal">case</tt> configuration
|
|---|
| 2304 | option. The default for this option is <tt class="literal">no</tt>. If you
|
|---|
| 2305 | set it to <tt class="literal">yes</tt>, you should be sure that all clients
|
|---|
| 2306 | can handle the mangled filenames that result. You can override it per
|
|---|
| 2307 | share as follows:</p>
|
|---|
| 2308 |
|
|---|
| 2309 | <blockquote><pre class="code">[data]
|
|---|
| 2310 | mangle case = yes</pre></blockquote>
|
|---|
| 2311 |
|
|---|
| 2312 | <p>We recommend that you leave this option alone unless you have a
|
|---|
| 2313 | well-justified need to change it.</p>
|
|---|
| 2314 |
|
|---|
| 2315 |
|
|---|
| 2316 | </div>
|
|---|
| 2317 |
|
|---|
| 2318 |
|
|---|
| 2319 |
|
|---|
| 2320 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.7"/>
|
|---|
| 2321 |
|
|---|
| 2322 | <a name="INDEX-116"/><h3 class="head3">mangling char</h3>
|
|---|
| 2323 |
|
|---|
| 2324 | <p>This share-level option specifies the mangling character used when
|
|---|
| 2325 | Samba mangles filenames into the 8.3 format. The default character
|
|---|
| 2326 | used is a tilde (~). You can reset it to whatever character you wish.
|
|---|
| 2327 | For instance:</p>
|
|---|
| 2328 |
|
|---|
| 2329 | <blockquote><pre class="code">[data]
|
|---|
| 2330 | mangling char = #</pre></blockquote>
|
|---|
| 2331 |
|
|---|
| 2332 |
|
|---|
| 2333 | </div>
|
|---|
| 2334 |
|
|---|
| 2335 |
|
|---|
| 2336 |
|
|---|
| 2337 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.8"/>
|
|---|
| 2338 |
|
|---|
| 2339 | <a name="INDEX-117"/><h3 class="head3">mangled stack</h3>
|
|---|
| 2340 |
|
|---|
| 2341 | <p>Samba maintains a local stack of recently mangled 8.3 filenames; this
|
|---|
| 2342 | stack can be used to reverse-map mangled filenames back to their
|
|---|
| 2343 | original state. This is often needed by applications that create and
|
|---|
| 2344 | save a file, close it, and need to modify it later. The default
|
|---|
| 2345 | number of long filename/mangled filename pairs stored on this stack
|
|---|
| 2346 | is 50. However, if you want to cut down on the amount of processor
|
|---|
| 2347 | time used to mangle filenames, you can increase the size of the stack
|
|---|
| 2348 | to whatever you wish, at the expense of memory and slightly slower
|
|---|
| 2349 | file access:</p>
|
|---|
| 2350 |
|
|---|
| 2351 | <blockquote><pre class="code">[global]
|
|---|
| 2352 | mangled stack = 100</pre></blockquote>
|
|---|
| 2353 |
|
|---|
| 2354 |
|
|---|
| 2355 | </div>
|
|---|
| 2356 |
|
|---|
| 2357 |
|
|---|
| 2358 |
|
|---|
| 2359 | <div class="sect3"><a name="samba2-CHP-8-SECT-4.2.9"/>
|
|---|
| 2360 |
|
|---|
| 2361 | <a name="INDEX-118"/><h3 class="head3">mangled map</h3>
|
|---|
| 2362 |
|
|---|
| 2363 | <p>If the default behavior of name mangling is not sufficient, you can
|
|---|
| 2364 | give Samba further instructions on how to behave using the
|
|---|
| 2365 | <tt class="literal">mangled</tt> <tt class="literal">map</tt> option. This option
|
|---|
| 2366 | allows you to specify mapping patterns that can be used in place of
|
|---|
| 2367 | name mangling performed by Samba. For example:</p>
|
|---|
| 2368 |
|
|---|
| 2369 | <blockquote><pre class="code">[data]
|
|---|
| 2370 | mangled map =(*.database *.db) (*.class *.cls)</pre></blockquote>
|
|---|
| 2371 |
|
|---|
| 2372 | <p>Here, Samba is instructed to search each encountered file for
|
|---|
| 2373 | characters that match the first pattern specified in the parenthesis
|
|---|
| 2374 | and convert them to the modified second pattern in the parenthesis
|
|---|
| 2375 | for display on an 8.3 client. This is useful in the event that name
|
|---|
| 2376 | mangling converts the filename incorrectly or converts it to a format
|
|---|
| 2377 | that the client cannot understand readily. Patterns are separated by
|
|---|
| 2378 | whitespaces. <a name="INDEX-119"/><a name="INDEX-120"/> <a name="INDEX-121"/><a name="INDEX-122"/></p>
|
|---|
| 2379 |
|
|---|
| 2380 |
|
|---|
| 2381 | </div>
|
|---|
| 2382 |
|
|---|
| 2383 |
|
|---|
| 2384 | </div>
|
|---|
| 2385 |
|
|---|
| 2386 |
|
|---|
| 2387 | </div>
|
|---|
| 2388 |
|
|---|
| 2389 |
|
|---|
| 2390 |
|
|---|
| 2391 | <div class="sect1"><a name="samba2-CHP-8-SECT-5"/>
|
|---|
| 2392 |
|
|---|
| 2393 | <h2 class="head1">Locks and Oplocks</h2>
|
|---|
| 2394 |
|
|---|
| 2395 | <p><a name="INDEX-123"/><a name="INDEX-124"/><a name="INDEX-125"/><a name="INDEX-126"/>Concurrent
|
|---|
| 2396 | writes to a single file are not desirable in any operating system. To
|
|---|
| 2397 | prevent this, most operating systems use <em class="firstterm">locks</em>
|
|---|
| 2398 | to guarantee that only one process can write to a file at a time.
|
|---|
| 2399 | Operating systems traditionally lock entire files, although newer
|
|---|
| 2400 | ones allow a range of bytes within a file to be locked. If another
|
|---|
| 2401 | process attempts to write to a file (or section of one) that is
|
|---|
| 2402 | already locked, it receives an error from the operating system and
|
|---|
| 2403 | will have to wait until the lock is released.</p>
|
|---|
| 2404 |
|
|---|
| 2405 | <p>Samba supports the standard DOS and NT filesystem (deny-mode) locking
|
|---|
| 2406 | requests—which allow only one process to write to an entire
|
|---|
| 2407 | file on a server at a given time—as well as byte-range locking.
|
|---|
| 2408 | In addition, Samba supports a locking mechanism known in the Windows
|
|---|
| 2409 | NT world as <em class="firstterm">opportunistic locking,
|
|---|
| 2410 | </em><a name="INDEX-127"/>or<em class="firstterm">
|
|---|
| 2411 | </em><em class="emphasis">oplock</em> for short.</p>
|
|---|
| 2412 |
|
|---|
| 2413 |
|
|---|
| 2414 | <div class="sect2"><a name="samba2-CHP-8-SECT-5.1"/>
|
|---|
| 2415 |
|
|---|
| 2416 | <h3 class="head2">Opportunistic Locking</h3>
|
|---|
| 2417 |
|
|---|
| 2418 | <p>Opportunistic locking allows a client to notify the Samba server that
|
|---|
| 2419 | it will not only be the exclusive writer of a file, but will also
|
|---|
| 2420 | cache its changes to that file locally to speed up access by reducing
|
|---|
| 2421 | network activity. This can result in a large performance
|
|---|
| 2422 | gain—typically 30%—while at the same time reserving
|
|---|
| 2423 | network bandwidth for other purposes.</p>
|
|---|
| 2424 |
|
|---|
| 2425 | <p>Because exclusive access can be obtained using regular file locks,
|
|---|
| 2426 | the value of opportunistic locks is not so much to lock the file as
|
|---|
| 2427 | it is to cache it. In fact, a better name for opportunistic locking
|
|---|
| 2428 | might be <em class="firstterm">opportunistic caching</em>.</p>
|
|---|
| 2429 |
|
|---|
| 2430 | <p>When Samba knows that a file in one of its shares has been oplocked
|
|---|
| 2431 | by a client, it marks its version as having an opportunistic lock and
|
|---|
| 2432 | waits for the client to complete work on the file, at which point it
|
|---|
| 2433 | expects the client to send its changes back to the Samba server for
|
|---|
| 2434 | synchronization with the copy on the server.</p>
|
|---|
| 2435 |
|
|---|
| 2436 | <p>If a second client requests access to that file before the first
|
|---|
| 2437 | client has finished working on it, Samba sends an oplock break
|
|---|
| 2438 | request to the first client. This tells the client to stop caching
|
|---|
| 2439 | its changes and return the current state of the file to the server so
|
|---|
| 2440 | that the interrupting client can use it as it sees fit. An
|
|---|
| 2441 | opportunistic lock, however, is not a replacement for a standard
|
|---|
| 2442 | deny-mode lock. It is not unheard of for the interrupting process to
|
|---|
| 2443 | be granted an oplock break only to discover that the original process
|
|---|
| 2444 | also has a deny-mode lock on a file as well. <a href="ch08.html#samba2-CHP-8-FIG-11">Figure 8-11</a> illustrates this <a name="INDEX-128"/>opportunistic locking process.</p>
|
|---|
| 2445 |
|
|---|
| 2446 | <div class="figure"><a name="samba2-CHP-8-FIG-11"/><img src="figs/sam2_0811.gif"/></div><h4 class="head4">Figure 8-11. Opportunistic locking</h4>
|
|---|
| 2447 |
|
|---|
| 2448 | <p>In most cases, the extra performance resulting from the use of
|
|---|
| 2449 | oplocks is highly desirable. However, allowing the client to cache
|
|---|
| 2450 | data can be a big risk if either the client or network hardware are
|
|---|
| 2451 | unreliable. Suppose a client opens a file for writing, creating an
|
|---|
| 2452 | oplock on it. When another client also tries to open the file, an
|
|---|
| 2453 | oplock break request is sent to the first client. If this request
|
|---|
| 2454 | goes unfulfilled for any reason and the second client starts writing
|
|---|
| 2455 | to the file, the file can be easily corrupted as a result of the two
|
|---|
| 2456 | processes writing to it concurrently. Unfortunately, this scenario is
|
|---|
| 2457 | very real. Uncoordinated behavior such as this has been observed many
|
|---|
| 2458 | times among Windows clients in SMB networks (with files served by
|
|---|
| 2459 | Windows NT/2000 or Samba). Typically, the affected files are database
|
|---|
| 2460 | files, which multiple clients open concurrently for writing.</p>
|
|---|
| 2461 |
|
|---|
| 2462 | <p>A more concrete example of <a name="INDEX-129"/>oplock failure occurs when database
|
|---|
| 2463 | files are very large. If a client is allowed to oplock this kind of
|
|---|
| 2464 | file, there can be a huge delay while the client copies the entire
|
|---|
| 2465 | file from the server to cache it, even though it might need to update
|
|---|
| 2466 | only one record. The situation goes from bad to worse when another
|
|---|
| 2467 | client tries to open the oplocked file. The first client might need
|
|---|
| 2468 | to write the entire file back to the server before the second
|
|---|
| 2469 | client's file open request can succeed. This results
|
|---|
| 2470 | in another huge delay (for both clients), which in practice often
|
|---|
| 2471 | results in a failed open due to a timeout on the second client,
|
|---|
| 2472 | perhaps along with a message warning of possible database corruption!</p>
|
|---|
| 2473 |
|
|---|
| 2474 | <p>If you are having problems of this variety, you can turn off oplocks
|
|---|
| 2475 | for the affected files by using the
|
|---|
| 2476 | <tt class="literal">veto</tt><a name="INDEX-130"/> <tt class="literal">oplock</tt>
|
|---|
| 2477 | <tt class="literal">files</tt> parameter:</p>
|
|---|
| 2478 |
|
|---|
| 2479 | <blockquote><pre class="code">[dbdata]
|
|---|
| 2480 | veto oplock files = /*.dbm/</pre></blockquote>
|
|---|
| 2481 |
|
|---|
| 2482 | <p>Use the value of the parameter (a list of filename-matching patterns
|
|---|
| 2483 | separated by slash characters) to match all the files in the share
|
|---|
| 2484 | that might be a source of trouble. The syntax of this parameter is
|
|---|
| 2485 | similar to that of the <tt class="literal">veto</tt>
|
|---|
| 2486 | <tt class="literal">files</tt> parameter.</p>
|
|---|
| 2487 |
|
|---|
| 2488 | <p>If you want to be really careful and can live with reduced
|
|---|
| 2489 | performance, you can turn off oplocks altogether, preventing the
|
|---|
| 2490 | oplock break problem from ever occurring:</p>
|
|---|
| 2491 |
|
|---|
| 2492 | <blockquote><pre class="code">[global]
|
|---|
| 2493 | oplocks = no</pre></blockquote>
|
|---|
| 2494 |
|
|---|
| 2495 | <p>This disables oplocks for all files in all shares served by the Samba
|
|---|
| 2496 | server. If you wish to disable oplocks in just a specific share, you
|
|---|
| 2497 | can specify the <tt class="literal">oplocks</tt> <tt class="literal">=</tt>
|
|---|
| 2498 | <tt class="literal">no</tt> parameter in just that share:</p>
|
|---|
| 2499 |
|
|---|
| 2500 | <blockquote><pre class="code">[database]
|
|---|
| 2501 | oplocks = no</pre></blockquote>
|
|---|
| 2502 |
|
|---|
| 2503 | <p>This example allows other shares, which might have less sensitive
|
|---|
| 2504 | data, to attain better performance, while trading performance for
|
|---|
| 2505 | better data integrity for files in the <tt class="literal">[database]</tt>
|
|---|
| 2506 | share.</p>
|
|---|
| 2507 |
|
|---|
| 2508 |
|
|---|
| 2509 | </div>
|
|---|
| 2510 |
|
|---|
| 2511 |
|
|---|
| 2512 | <div class="sect2"><a name="samba2-CHP-8-SECT-5.2"/>
|
|---|
| 2513 |
|
|---|
| 2514 | <h3 class="head2">Unix and Oplocks</h3>
|
|---|
| 2515 |
|
|---|
| 2516 | <p><a name="INDEX-131"/>Most of the time, oplocks help Windows
|
|---|
| 2517 | client systems cooperate to avoid overwriting each
|
|---|
| 2518 | other's changes. Unix systems also have file-locking
|
|---|
| 2519 | mechanisms to allow Unix processes to cooperate with each other. But
|
|---|
| 2520 | if a file stored on a Samba system is accessed by both a Windows
|
|---|
| 2521 | network client and a local Unix process—without an additional
|
|---|
| 2522 | coordination between the two systems—the Unix process could
|
|---|
| 2523 | easily ride roughshod over an oplock.</p>
|
|---|
| 2524 |
|
|---|
| 2525 | <p>Some Unix systems have enhanced kernels that understand the Windows
|
|---|
| 2526 | oplocks maintained by Samba. Currently the support exists only in SGI
|
|---|
| 2527 | Irix and Linux.</p>
|
|---|
| 2528 |
|
|---|
| 2529 | <p>If you leave oplocks enabled and your Unix system does not support
|
|---|
| 2530 | kernel oplocks, you could end up with corrupted data when somebody
|
|---|
| 2531 | runs a Unix process that reads or writes a file that Windows users
|
|---|
| 2532 | also access. This is another case where the
|
|---|
| 2533 | <tt class="literal">veto</tt><a name="INDEX-132"/> <tt class="literal">oplock</tt>
|
|---|
| 2534 | <tt class="literal">files</tt> parameter can be used, assuming you can
|
|---|
| 2535 | anticipate which Samba files are used by both Windows users and Unix
|
|---|
| 2536 | users. For example, suppose the <tt class="literal">[usrfiles]</tt> share
|
|---|
| 2537 | contains some ASCII text files with the <em class="filename">.txt</em>
|
|---|
| 2538 | filename extension and OpenOffice word processor documents with the
|
|---|
| 2539 | <em class="filename">.doc</em> filename extension, which Unix and Windows
|
|---|
| 2540 | users both modify. We can use <tt class="literal">veto</tt>
|
|---|
| 2541 | <tt class="literal">oplock</tt> <tt class="literal">files</tt> like this:</p>
|
|---|
| 2542 |
|
|---|
| 2543 | <blockquote><pre class="code">[usrfiles]
|
|---|
| 2544 | veto oplock files = /*.txt/*.doc/</pre></blockquote>
|
|---|
| 2545 |
|
|---|
| 2546 | <p>This will suppress the use of oplocks on <em class="filename">.txt</em>
|
|---|
| 2547 | and <em class="filename">.doc</em> files, which will suppress client
|
|---|
| 2548 | caching, while allowing the Windows and Unix programs to use regular
|
|---|
| 2549 | file locking to prevent concurrent writes to the same file.</p>
|
|---|
| 2550 |
|
|---|
| 2551 |
|
|---|
| 2552 | </div>
|
|---|
| 2553 |
|
|---|
| 2554 |
|
|---|
| 2555 | <div class="sect2"><a name="samba2-CHP-8-SECT-5.3"/>
|
|---|
| 2556 |
|
|---|
| 2557 | <h3 class="head2">Locks and Oplocks Configuration Options</h3>
|
|---|
| 2558 |
|
|---|
| 2559 | <p><a name="INDEX-133"/><a name="INDEX-134"/>Samba's options for
|
|---|
| 2560 | locks and oplocks are given in <a href="ch08.html#samba2-CHP-8-TABLE-6">Table 8-6</a>.</p>
|
|---|
| 2561 |
|
|---|
| 2562 | <a name="samba2-CHP-8-TABLE-6"/><h4 class="head4">Table 8-6. Locks and oplocks configuration options</h4><table border="1">
|
|---|
| 2563 |
|
|---|
| 2564 |
|
|---|
| 2565 |
|
|---|
| 2566 |
|
|---|
| 2567 |
|
|---|
| 2568 |
|
|---|
| 2569 | <tr>
|
|---|
| 2570 | <th>
|
|---|
| 2571 | <p>Option</p>
|
|---|
| 2572 | </th>
|
|---|
| 2573 | <th>
|
|---|
| 2574 | <p>Parameters</p>
|
|---|
| 2575 | </th>
|
|---|
| 2576 | <th>
|
|---|
| 2577 | <p>Function</p>
|
|---|
| 2578 | </th>
|
|---|
| 2579 | <th>
|
|---|
| 2580 | <p>Default</p>
|
|---|
| 2581 | </th>
|
|---|
| 2582 | <th>
|
|---|
| 2583 | <p>Scope</p>
|
|---|
| 2584 | </th>
|
|---|
| 2585 | </tr>
|
|---|
| 2586 |
|
|---|
| 2587 |
|
|---|
| 2588 | <tr>
|
|---|
| 2589 | <td>
|
|---|
| 2590 | <p><tt class="literal">locking</tt></p>
|
|---|
| 2591 | </td>
|
|---|
| 2592 | <td>
|
|---|
| 2593 | <p>Boolean</p>
|
|---|
| 2594 | </td>
|
|---|
| 2595 | <td>
|
|---|
| 2596 | <p>If <tt class="literal">yes</tt>, turns on byte-range locks.</p>
|
|---|
| 2597 | </td>
|
|---|
| 2598 | <td>
|
|---|
| 2599 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2600 | </td>
|
|---|
| 2601 | <td>
|
|---|
| 2602 | <p>Share</p>
|
|---|
| 2603 | </td>
|
|---|
| 2604 | </tr>
|
|---|
| 2605 | <tr>
|
|---|
| 2606 | <td>
|
|---|
| 2607 | <p><tt class="literal">strict</tt> <tt class="literal">locking</tt></p>
|
|---|
| 2608 | </td>
|
|---|
| 2609 | <td>
|
|---|
| 2610 | <p>Boolean</p>
|
|---|
| 2611 | </td>
|
|---|
| 2612 | <td>
|
|---|
| 2613 | <p>If <tt class="literal">yes</tt>, denies access to an entire file if a
|
|---|
| 2614 | byte-range lock exists in it.</p>
|
|---|
| 2615 | </td>
|
|---|
| 2616 | <td>
|
|---|
| 2617 | <p><tt class="literal">no</tt></p>
|
|---|
| 2618 | </td>
|
|---|
| 2619 | <td>
|
|---|
| 2620 | <p>Share</p>
|
|---|
| 2621 | </td>
|
|---|
| 2622 | </tr>
|
|---|
| 2623 | <tr>
|
|---|
| 2624 | <td>
|
|---|
| 2625 | <p><tt class="literal">posix locking</tt></p>
|
|---|
| 2626 | </td>
|
|---|
| 2627 | <td>
|
|---|
| 2628 | <p>Boolean</p>
|
|---|
| 2629 | </td>
|
|---|
| 2630 | <td>
|
|---|
| 2631 | <p>If <tt class="literal">yes</tt>, maps oplocks to POSIX locks on the local
|
|---|
| 2632 | system.</p>
|
|---|
| 2633 | </td>
|
|---|
| 2634 | <td>
|
|---|
| 2635 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2636 | </td>
|
|---|
| 2637 | <td>
|
|---|
| 2638 | <p>Share</p>
|
|---|
| 2639 | </td>
|
|---|
| 2640 | </tr>
|
|---|
| 2641 | <tr>
|
|---|
| 2642 | <td>
|
|---|
| 2643 | <p><tt class="literal">oplocks</tt></p>
|
|---|
| 2644 | </td>
|
|---|
| 2645 | <td>
|
|---|
| 2646 | <p>Boolean</p>
|
|---|
| 2647 | </td>
|
|---|
| 2648 | <td>
|
|---|
| 2649 | <p>If <tt class="literal">yes</tt>, turns on local caching of files on the
|
|---|
| 2650 | client for this share.</p>
|
|---|
| 2651 | </td>
|
|---|
| 2652 | <td>
|
|---|
| 2653 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2654 | </td>
|
|---|
| 2655 | <td>
|
|---|
| 2656 | <p>Share</p>
|
|---|
| 2657 | </td>
|
|---|
| 2658 | </tr>
|
|---|
| 2659 | <tr>
|
|---|
| 2660 | <td>
|
|---|
| 2661 | <p><tt class="literal">kernel</tt> <tt class="literal">oplocks</tt></p>
|
|---|
| 2662 | </td>
|
|---|
| 2663 | <td>
|
|---|
| 2664 | <p>Boolean</p>
|
|---|
| 2665 | </td>
|
|---|
| 2666 | <td>
|
|---|
| 2667 | <p>If <tt class="literal">yes</tt>, indicates that the kernel supports oplocks.</p>
|
|---|
| 2668 | </td>
|
|---|
| 2669 | <td>
|
|---|
| 2670 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2671 | </td>
|
|---|
| 2672 | <td>
|
|---|
| 2673 | <p>Global</p>
|
|---|
| 2674 | </td>
|
|---|
| 2675 | </tr>
|
|---|
| 2676 | <tr>
|
|---|
| 2677 | <td>
|
|---|
| 2678 | <p><tt class="literal">level2 oplocks</tt></p>
|
|---|
| 2679 | </td>
|
|---|
| 2680 | <td>
|
|---|
| 2681 | <p>Boolean</p>
|
|---|
| 2682 | </td>
|
|---|
| 2683 | <td>
|
|---|
| 2684 | <p>If <tt class="literal">yes</tt>, allows oplocks to downgrade to read-only.</p>
|
|---|
| 2685 | </td>
|
|---|
| 2686 | <td>
|
|---|
| 2687 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2688 | </td>
|
|---|
| 2689 | <td>
|
|---|
| 2690 | <p>Share</p>
|
|---|
| 2691 | </td>
|
|---|
| 2692 | </tr>
|
|---|
| 2693 | <tr>
|
|---|
| 2694 | <td>
|
|---|
| 2695 | <p><tt class="literal">fake oplocks</tt></p>
|
|---|
| 2696 | </td>
|
|---|
| 2697 | <td>
|
|---|
| 2698 | <p>Boolean</p>
|
|---|
| 2699 | </td>
|
|---|
| 2700 | <td>
|
|---|
| 2701 | <p>If <tt class="literal">yes</tt>, tells client the lock was obtained, but
|
|---|
| 2702 | doesn't actually lock it.</p>
|
|---|
| 2703 | </td>
|
|---|
| 2704 | <td>
|
|---|
| 2705 | <p><tt class="literal">no</tt></p>
|
|---|
| 2706 | </td>
|
|---|
| 2707 | <td>
|
|---|
| 2708 | <p>Share</p>
|
|---|
| 2709 | </td>
|
|---|
| 2710 | </tr>
|
|---|
| 2711 | <tr>
|
|---|
| 2712 | <td>
|
|---|
| 2713 | <p><tt class="literal">blocking</tt> <tt class="literal">locks</tt></p>
|
|---|
| 2714 | </td>
|
|---|
| 2715 | <td>
|
|---|
| 2716 | <p>Boolean</p>
|
|---|
| 2717 | </td>
|
|---|
| 2718 | <td>
|
|---|
| 2719 | <p>Allows lock requestor to wait for the lock to be granted.</p>
|
|---|
| 2720 | </td>
|
|---|
| 2721 | <td>
|
|---|
| 2722 | <p><tt class="literal">yes</tt></p>
|
|---|
| 2723 | </td>
|
|---|
| 2724 | <td>
|
|---|
| 2725 | <p>Share</p>
|
|---|
| 2726 | </td>
|
|---|
| 2727 | </tr>
|
|---|
| 2728 | <tr>
|
|---|
| 2729 | <td>
|
|---|
| 2730 | <p><tt class="literal">veto oplock</tt> <tt class="literal">files</tt></p>
|
|---|
| 2731 | </td>
|
|---|
| 2732 | <td>
|
|---|
| 2733 | <p>string (list of filenames)</p>
|
|---|
| 2734 | </td>
|
|---|
| 2735 | <td>
|
|---|
| 2736 | <p>Does not oplock specified files.</p>
|
|---|
| 2737 | </td>
|
|---|
| 2738 | <td>
|
|---|
| 2739 | <p>None</p>
|
|---|
| 2740 | </td>
|
|---|
| 2741 | <td>
|
|---|
| 2742 | <p>Share</p>
|
|---|
| 2743 | </td>
|
|---|
| 2744 | </tr>
|
|---|
| 2745 | <tr>
|
|---|
| 2746 | <td>
|
|---|
| 2747 | <p><tt class="literal">lock</tt> <tt class="literal">directory</tt></p>
|
|---|
| 2748 | </td>
|
|---|
| 2749 | <td>
|
|---|
| 2750 | <p>string (fully qualified pathname)</p>
|
|---|
| 2751 | </td>
|
|---|
| 2752 | <td>
|
|---|
| 2753 | <p>Sets the location where various Samba files, including locks, are
|
|---|
| 2754 | stored.</p>
|
|---|
| 2755 | </td>
|
|---|
| 2756 | <td>
|
|---|
| 2757 | <p>As specified in Samba makefile</p>
|
|---|
| 2758 | </td>
|
|---|
| 2759 | <td>
|
|---|
| 2760 | <p>Global</p>
|
|---|
| 2761 | </td>
|
|---|
| 2762 | </tr>
|
|---|
| 2763 |
|
|---|
| 2764 | </table>
|
|---|
| 2765 |
|
|---|
| 2766 |
|
|---|
| 2767 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.1"/>
|
|---|
| 2768 |
|
|---|
| 2769 | <h3 class="head3">locking</h3>
|
|---|
| 2770 |
|
|---|
| 2771 | <p>The <tt class="literal">locking</tt><a name="INDEX-135"/> option can be used to tell
|
|---|
| 2772 | Samba to engage or disengage server-side byte-range locks on behalf
|
|---|
| 2773 | of the client. Samba implements byte-range locks on the server side
|
|---|
| 2774 | with normal Unix advisory locks and consequently prevents other
|
|---|
| 2775 | properly behaved Unix processes from overwriting a locked byte range.</p>
|
|---|
| 2776 |
|
|---|
| 2777 | <p>This option can be specified per share as follows:</p>
|
|---|
| 2778 |
|
|---|
| 2779 | <blockquote><pre class="code">[accounting]
|
|---|
| 2780 | locking = yes</pre></blockquote>
|
|---|
| 2781 |
|
|---|
| 2782 | <p>If the <tt class="literal">locking</tt> option is set to
|
|---|
| 2783 | <tt class="literal">yes</tt>, the requestor is delayed until the holder of
|
|---|
| 2784 | either type of lock releases it (or crashes). If, however, the option
|
|---|
| 2785 | is set to <tt class="literal">no</tt>, no byte-range locks are kept for the
|
|---|
| 2786 | files, although requests to lock and unlock files will appear to
|
|---|
| 2787 | succeed. The option is set to <tt class="literal">yes</tt> by default;
|
|---|
| 2788 | however, you can turn this option off if you have read-only media.</p>
|
|---|
| 2789 |
|
|---|
| 2790 |
|
|---|
| 2791 | </div>
|
|---|
| 2792 |
|
|---|
| 2793 |
|
|---|
| 2794 |
|
|---|
| 2795 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.2"/>
|
|---|
| 2796 |
|
|---|
| 2797 | <a name="INDEX-136"/><h3 class="head3">strict locking</h3>
|
|---|
| 2798 |
|
|---|
| 2799 | <p>This option checks every file access for a byte-range lock on the
|
|---|
| 2800 | range of bytes being accessed. This is typically not needed if a
|
|---|
| 2801 | client adheres to all the locking mechanisms in place. This option is
|
|---|
| 2802 | set to <tt class="literal">no</tt> by default; however, you can reset it
|
|---|
| 2803 | per share as follows:</p>
|
|---|
| 2804 |
|
|---|
| 2805 | <blockquote><pre class="code">[accounting]
|
|---|
| 2806 | strict locking = yes</pre></blockquote>
|
|---|
| 2807 |
|
|---|
| 2808 | <p>If this option is set to <tt class="literal">yes</tt>, mandatory locks are
|
|---|
| 2809 | enforced on any file with byte-range locks.</p>
|
|---|
| 2810 |
|
|---|
| 2811 |
|
|---|
| 2812 | </div>
|
|---|
| 2813 |
|
|---|
| 2814 |
|
|---|
| 2815 |
|
|---|
| 2816 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.3"/>
|
|---|
| 2817 |
|
|---|
| 2818 | <a name="INDEX-137"/><h3 class="head3">posix locking</h3>
|
|---|
| 2819 |
|
|---|
| 2820 | <p>On systems that support POSIX locking, Samba automatically maps
|
|---|
| 2821 | oplocks to POSIX locks. This behavior can be disabled by setting
|
|---|
| 2822 | <tt class="literal">posix</tt> <tt class="literal">locking</tt>
|
|---|
| 2823 | <tt class="literal">=</tt> <tt class="literal">no</tt>. You should never need to
|
|---|
| 2824 | change the default behavior, which is <tt class="literal">posix</tt>
|
|---|
| 2825 | <tt class="literal">locking</tt> <tt class="literal">=</tt>
|
|---|
| 2826 | <tt class="literal">yes</tt>.</p>
|
|---|
| 2827 |
|
|---|
| 2828 |
|
|---|
| 2829 | </div>
|
|---|
| 2830 |
|
|---|
| 2831 |
|
|---|
| 2832 |
|
|---|
| 2833 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.4"/>
|
|---|
| 2834 |
|
|---|
| 2835 | <a name="INDEX-138"/><h3 class="head3">oplocks</h3>
|
|---|
| 2836 |
|
|---|
| 2837 | <p>This option enables or disables support for oplocks on the client.
|
|---|
| 2838 | The option is enabled by default. However, you can disable it with
|
|---|
| 2839 | the following command:</p>
|
|---|
| 2840 |
|
|---|
| 2841 | <blockquote><pre class="code">[data]
|
|---|
| 2842 | oplocks = no</pre></blockquote>
|
|---|
| 2843 |
|
|---|
| 2844 | <p>If you are in an extremely unstable network environment or have many
|
|---|
| 2845 | clients that cannot take advantage of opportunistic locking, it might
|
|---|
| 2846 | be better to shut this Samba feature off. If the host operating
|
|---|
| 2847 | system does not support kernel oplocks, oplocks should be disabled if
|
|---|
| 2848 | users are accessing the same files from both Unix applications (such
|
|---|
| 2849 | as <em class="emphasis">vi</em>) and SMB clients.</p>
|
|---|
| 2850 |
|
|---|
| 2851 |
|
|---|
| 2852 | </div>
|
|---|
| 2853 |
|
|---|
| 2854 |
|
|---|
| 2855 |
|
|---|
| 2856 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.5"/>
|
|---|
| 2857 |
|
|---|
| 2858 | <a name="INDEX-139"/><h3 class="head3">kernel oplocks</h3>
|
|---|
| 2859 |
|
|---|
| 2860 | <p>If a Unix application on the Samba host system (that is not part of
|
|---|
| 2861 | the Samba suite) tries to open a file for writing that Samba has
|
|---|
| 2862 | oplocked to a Windows client, it is likely to succeed (depending on
|
|---|
| 2863 | the operating system), and both Samba and the client are never aware
|
|---|
| 2864 | of it.</p>
|
|---|
| 2865 |
|
|---|
| 2866 | <p>Some versions of Unix have support for oplocks in the kernel that can
|
|---|
| 2867 | work along with Samba's oplocks. In this case, the
|
|---|
| 2868 | Unix process trying to open the file is suspended while Samba directs
|
|---|
| 2869 | the client to write its copy back. After that has happened, the
|
|---|
| 2870 | operating system allows the open to complete. At the time of this
|
|---|
| 2871 | writing, this feature is supported only by SGI Irix and Linux.</p>
|
|---|
| 2872 |
|
|---|
| 2873 |
|
|---|
| 2874 | </div>
|
|---|
| 2875 |
|
|---|
| 2876 |
|
|---|
| 2877 |
|
|---|
| 2878 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.6"/>
|
|---|
| 2879 |
|
|---|
| 2880 | <a name="INDEX-140"/><h3 class="head3">level2 oplocks</h3>
|
|---|
| 2881 |
|
|---|
| 2882 | <p>Windows NT/2000/XP clients can downgrade their read-write oplocks to
|
|---|
| 2883 | read-only oplocks when another client opens the same file. This can
|
|---|
| 2884 | result in significant improvements in performance on files that are
|
|---|
| 2885 | written infrequently or not at all—especially
|
|---|
| 2886 | executables—because all clients can then maintain a read-ahead
|
|---|
| 2887 | cache for the file. By default, <tt class="literal">level2</tt>
|
|---|
| 2888 | <tt class="literal">oplocks</tt> is set to <tt class="literal">yes</tt>, and you
|
|---|
| 2889 | probably won't need to change it.</p>
|
|---|
| 2890 |
|
|---|
| 2891 | <p>Currently, Samba cannot support level 2 oplocks along with kernel
|
|---|
| 2892 | oplocks and automatically disables level 2 oplocks when kernel
|
|---|
| 2893 | oplocks are in use. (This might change in future releases as improved
|
|---|
| 2894 | support for oplocks is added by the Samba developers.) If you are
|
|---|
| 2895 | running Samba on a host system that supports kernel oplocks, you must
|
|---|
| 2896 | set <tt class="literal">kernel</tt> <tt class="literal">oplocks</tt>
|
|---|
| 2897 | <tt class="literal">=</tt> <tt class="literal">no</tt> to enable support for
|
|---|
| 2898 | level 2 oplocks.</p>
|
|---|
| 2899 |
|
|---|
| 2900 | <p>Disabling oplocks with <tt class="literal">oplocks</tt>
|
|---|
| 2901 | <tt class="literal">=</tt> <tt class="literal">no</tt> also disables level 2
|
|---|
| 2902 | oplocks.</p>
|
|---|
| 2903 |
|
|---|
| 2904 | <p>Samba can automatically detect its Unix host's
|
|---|
| 2905 | support of kernel oplocks and will set the value of
|
|---|
| 2906 | <tt class="literal">kernel</tt> <tt class="literal">oplocks</tt> automatically.
|
|---|
| 2907 | You should never need to set this option in your Samba configuration
|
|---|
| 2908 | file.</p>
|
|---|
| 2909 |
|
|---|
| 2910 |
|
|---|
| 2911 | </div>
|
|---|
| 2912 |
|
|---|
| 2913 |
|
|---|
| 2914 |
|
|---|
| 2915 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.7"/>
|
|---|
| 2916 |
|
|---|
| 2917 | <a name="INDEX-141"/><h3 class="head3">fake oplocks</h3>
|
|---|
| 2918 |
|
|---|
| 2919 | <p>When this option is set to <tt class="literal">yes</tt>, Samba pretends to
|
|---|
| 2920 | allow oplocks rather than actually supporting them. If this option is
|
|---|
| 2921 | enabled on a read-only share (such as a shared CD-ROM drive), all
|
|---|
| 2922 | clients are told that the files are available for opportunistic
|
|---|
| 2923 | locking and never warned of simultaneous access. As a result, Windows
|
|---|
| 2924 | clients cache more of the file's data and obtain
|
|---|
| 2925 | much better performance.</p>
|
|---|
| 2926 |
|
|---|
| 2927 | <p>This option was added to Samba before opportunistic-locking support
|
|---|
| 2928 | was available, and it is now generally considered better to use real
|
|---|
| 2929 | oplocks. Do not ever enable <tt class="literal">fake</tt>
|
|---|
| 2930 | <tt class="literal">oplocks</tt> on a read/write share.</p>
|
|---|
| 2931 |
|
|---|
| 2932 |
|
|---|
| 2933 | </div>
|
|---|
| 2934 |
|
|---|
| 2935 |
|
|---|
| 2936 |
|
|---|
| 2937 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.8"/>
|
|---|
| 2938 |
|
|---|
| 2939 | <h3 class="head3">blocking locks</h3>
|
|---|
| 2940 |
|
|---|
| 2941 | <p>Samba also supports <em class="firstterm">blocking locks</em>, a minor
|
|---|
| 2942 | variant of range locks. Here, if the range of bytes is not available,
|
|---|
| 2943 | the client specifies an amount of time that it's
|
|---|
| 2944 | willing to wait. The server then caches the lock request,
|
|---|
| 2945 | periodically checking to see if the file is available. If it is, it
|
|---|
| 2946 | notifies the client; however, if time expires, Samba will tell the
|
|---|
| 2947 | client that the request has failed. This strategy prevents the client
|
|---|
| 2948 | from continually polling to see if the lock is available.</p>
|
|---|
| 2949 |
|
|---|
| 2950 | <p>You can disable this option per share as follows:</p>
|
|---|
| 2951 |
|
|---|
| 2952 | <blockquote><pre class="code">[accounting]
|
|---|
| 2953 | blocking locks = no</pre></blockquote>
|
|---|
| 2954 |
|
|---|
| 2955 | <p>When set to <tt class="literal">yes</tt>, blocking locks are enforced on
|
|---|
| 2956 | the file. If this option is set to <tt class="literal">no</tt>, Samba
|
|---|
| 2957 | behaves as if normal locking mechanisms are in place on the file. The
|
|---|
| 2958 | default is <tt class="literal">yes</tt>.</p>
|
|---|
| 2959 |
|
|---|
| 2960 |
|
|---|
| 2961 | </div>
|
|---|
| 2962 |
|
|---|
| 2963 |
|
|---|
| 2964 |
|
|---|
| 2965 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.9"/>
|
|---|
| 2966 |
|
|---|
| 2967 | <a name="INDEX-142"/><h3 class="head3">veto oplock files</h3>
|
|---|
| 2968 |
|
|---|
| 2969 | <p>You can provide a list of filenames that are never granted
|
|---|
| 2970 | opportunistic locks with the <tt class="literal">veto</tt>
|
|---|
| 2971 | <tt class="literal">oplock</tt> <tt class="literal">files</tt> option. This
|
|---|
| 2972 | option can be set either globally or on a per-share basis. For
|
|---|
| 2973 | example:</p>
|
|---|
| 2974 |
|
|---|
| 2975 | <blockquote><pre class="code">veto oplock files = /*.bat/*.htm/</pre></blockquote>
|
|---|
| 2976 |
|
|---|
| 2977 | <p>The value of this option is a series of patterns. Each pattern entry
|
|---|
| 2978 | must begin, end, or be separated from another with a slash ( / )
|
|---|
| 2979 | character, even if only one pattern is listed. Asterisks can be used
|
|---|
| 2980 | as a wildcard to represent zero or more characters. Questions marks
|
|---|
| 2981 | can be used to represent exactly one character.</p>
|
|---|
| 2982 |
|
|---|
| 2983 | <p>We recommend that you disable oplocks on any files that are meant to
|
|---|
| 2984 | be updated by Unix or are intended for simultaneous sharing by
|
|---|
| 2985 | several processes.</p>
|
|---|
| 2986 |
|
|---|
| 2987 |
|
|---|
| 2988 | </div>
|
|---|
| 2989 |
|
|---|
| 2990 |
|
|---|
| 2991 |
|
|---|
| 2992 | <div class="sect3"><a name="samba2-CHP-8-SECT-5.3.10"/>
|
|---|
| 2993 |
|
|---|
| 2994 | <a name="INDEX-143"/><h3 class="head3">lock directory</h3>
|
|---|
| 2995 |
|
|---|
| 2996 | <p>This option (sometimes called <tt class="literal">lock</tt>
|
|---|
| 2997 | <tt class="literal">dir</tt>) specifies the location of a directory where
|
|---|
| 2998 | Samba will store SMB deny-mode lock files. Samba stores other files
|
|---|
| 2999 | in this directory as well, such as browse lists and its shared memory
|
|---|
| 3000 | file. If WINS is enabled, the WINS database is written to this
|
|---|
| 3001 | directory as well. The default for this option is specified in the
|
|---|
| 3002 | Samba makefile; it is typically
|
|---|
| 3003 | <em class="filename">/usr/local/samba/var/locks</em>. You can override
|
|---|
| 3004 | this location as follows:</p>
|
|---|
| 3005 |
|
|---|
| 3006 | <blockquote><pre class="code">[global]
|
|---|
| 3007 | lock directory = /usr/local/samba/locks</pre></blockquote>
|
|---|
| 3008 |
|
|---|
| 3009 | <p>You typically would not need to override this option, unless you want
|
|---|
| 3010 | to move the lock files to a more standard location, such as
|
|---|
| 3011 | <em class="filename">/var/spool/locks</em>. <a name="INDEX-144"/> <a name="INDEX-145"/><a name="INDEX-146"/></p>
|
|---|
| 3012 |
|
|---|
| 3013 |
|
|---|
| 3014 | </div>
|
|---|
| 3015 |
|
|---|
| 3016 |
|
|---|
| 3017 | </div>
|
|---|
| 3018 |
|
|---|
| 3019 |
|
|---|
| 3020 | </div>
|
|---|
| 3021 |
|
|---|
| 3022 |
|
|---|
| 3023 |
|
|---|
| 3024 | <div class="sect1"><a name="samba2-CHP-8-SECT-6"/>
|
|---|
| 3025 |
|
|---|
| 3026 | <h2 class="head1">Connection Scripts</h2>
|
|---|
| 3027 |
|
|---|
| 3028 | <p><a name="INDEX-147"/><a name="INDEX-148"/><a name="INDEX-149"/>Samba supports a mechanism called
|
|---|
| 3029 | <em class="firstterm">connection scripts</em>, by which commands can be
|
|---|
| 3030 | executed on the server as clients connect to a share or later
|
|---|
| 3031 | disconnect from it. By using configuration file variables along with
|
|---|
| 3032 | some custom programming, you can create connection scripts that
|
|---|
| 3033 | perform a wide range of functions. As a simple example, here is a
|
|---|
| 3034 | "quick and dirty" way to monitor
|
|---|
| 3035 | connections to shares on the Samba server in real time. First, the
|
|---|
| 3036 | value of the <tt class="literal">preexec</tt><a name="INDEX-150"/> parameter is set as
|
|---|
| 3037 | follows:</p>
|
|---|
| 3038 |
|
|---|
| 3039 | <blockquote><pre class="code">[global]
|
|---|
| 3040 | preexec = /bin/echo %u at %m connected to //%L/%S on %T >>/tmp/smblog</pre></blockquote>
|
|---|
| 3041 |
|
|---|
| 3042 | <p>This causes information about the user and the connection to be
|
|---|
| 3043 | written to the file <em class="filename">/tmp/smblog</em> whenever any
|
|---|
| 3044 | client connects to any share. To watch clients connect, run the
|
|---|
| 3045 | following command:</p>
|
|---|
| 3046 |
|
|---|
| 3047 | <blockquote><pre class="code">$ <tt class="userinput"><b>tail -f /tmp/smblog</b></tt>
|
|---|
| 3048 | jay at maya connected to //toltec/data on 2002/11/21 21:21:15
|
|---|
| 3049 | david at apache connected to //toltec/techs on 2002/11/21 21:21:57
|
|---|
| 3050 | sally at seminole connected to //toltec/payroll on 2002/11/21 21:22:16
|
|---|
| 3051 | martha at dine connected to //toltec/profiles on 2002/11/21 21:23:38
|
|---|
| 3052 | martha at dine connected to //toltec/netlogon on 2002/11/21 21:23:39
|
|---|
| 3053 | martha at dine connected to //toltec/martha on 2002/11/21 21:23:40
|
|---|
| 3054 | aaron at huastec connected to //toltec/netlogon on 2002/11/21 21:24:19
|
|---|
| 3055 | aaron at huastec connected to //toltec/aaron on 2002/11/21 21:24:20</pre></blockquote>
|
|---|
| 3056 |
|
|---|
| 3057 | <p>With the <em class="emphasis">-f</em> option, the
|
|---|
| 3058 | <em class="emphasis">tail</em> command monitors
|
|---|
| 3059 | <em class="filename">/tmp/smblog</em> and prints additional output as new
|
|---|
| 3060 | data is appended to the file. Every time a new connection is made, an
|
|---|
| 3061 | additional line is printed, showing the output of the
|
|---|
| 3062 | <tt class="literal">preexec</tt> command. Notice the lines resulting from
|
|---|
| 3063 | connections by user <tt class="literal">martha</tt> and
|
|---|
| 3064 | <tt class="literal">aaron</tt>. User <tt class="literal">martha</tt> logged on to
|
|---|
| 3065 | the domain from a Windows NT client, which accessed the
|
|---|
| 3066 | <tt class="literal">[profiles]</tt> share to download her profile, then the
|
|---|
| 3067 | <tt class="literal">[netlogon]</tt> share to read the logon script, and
|
|---|
| 3068 | then her home directory (because her logon script contains a
|
|---|
| 3069 | <tt class="literal">net</tt> <tt class="literal">use</tt> <tt class="literal">H</tt>:
|
|---|
| 3070 | <tt class="literal">/home</tt> command) to connect her home directory to
|
|---|
| 3071 | drive letter H. The connections from <tt class="literal">aaron</tt> are
|
|---|
| 3072 | similar, except that he connected from a Windows 98 system, which
|
|---|
| 3073 | does not use the <tt class="literal">[profiles]</tt> share. (See <a href="ch04.html">Chapter 4</a> for more information about domain logons.)</p>
|
|---|
| 3074 |
|
|---|
| 3075 | <p>A more advanced use of
|
|---|
| 3076 | <a name="INDEX-151"/><a name="INDEX-152"/>connection scripts is to monitor the
|
|---|
| 3077 | contents of users' home directories and/or other
|
|---|
| 3078 | shared directories and perform checks ensuring that local
|
|---|
| 3079 | administrative policies are followed. Checked items might include the
|
|---|
| 3080 | following:</p>
|
|---|
| 3081 |
|
|---|
| 3082 | <ul><li>
|
|---|
| 3083 | <p>Disk usage, on a per-share, per-directory, or per-file basis</p>
|
|---|
| 3084 | </li><li>
|
|---|
| 3085 | <p>Types of files stored on the server</p>
|
|---|
| 3086 | </li><li>
|
|---|
| 3087 | <p>Whether filenames follow naming guidelines</p>
|
|---|
| 3088 | </li><li>
|
|---|
| 3089 | <p>Whether viruses have copied themselves to the Samba server</p>
|
|---|
| 3090 | </li></ul>
|
|---|
| 3091 | <p>To handle this kind of task, a shell script or other program would be
|
|---|
| 3092 | written to perform the checks and take appropriate actions, such as
|
|---|
| 3093 | removing offending files. The <tt class="literal">root</tt>
|
|---|
| 3094 | <tt class="literal">preexec</tt> parameter would be used to run the command
|
|---|
| 3095 | as the root user, using configuration file variables to pass
|
|---|
| 3096 | arguments. For example:</p>
|
|---|
| 3097 |
|
|---|
| 3098 | <blockquote><pre class="code">[homes]
|
|---|
| 3099 | root preexec = admin_checks %S
|
|---|
| 3100 | root preexec close = yes</pre></blockquote>
|
|---|
| 3101 |
|
|---|
| 3102 | <p>In this example, a specially written administrative checking program
|
|---|
| 3103 | (<em class="emphasis">admin_checks</em>) is used to monitor
|
|---|
| 3104 | users' home directories on the Samba server. The
|
|---|
| 3105 | <tt class="literal">%S</tt> variable is used to pass the name of the home
|
|---|
| 3106 | directory to the script. The
|
|---|
| 3107 | <tt class="literal">root</tt><a name="INDEX-153"/> <tt class="literal">preexec</tt>
|
|---|
| 3108 | <tt class="literal">close</tt> parameter has been set to
|
|---|
| 3109 | <tt class="literal">yes</tt> so that if <em class="emphasis">admin_checks</em>
|
|---|
| 3110 | detects a serious violation of local policy, it can exit with a
|
|---|
| 3111 | nonzero status, and the client is prevented from connecting.</p>
|
|---|
| 3112 |
|
|---|
| 3113 |
|
|---|
| 3114 | <div class="sect2"><a name="samba2-CHP-8-SECT-6.1"/>
|
|---|
| 3115 |
|
|---|
| 3116 | <h3 class="head2">Connection Script Options</h3>
|
|---|
| 3117 |
|
|---|
| 3118 | <p><a href="ch08.html#samba2-CHP-8-TABLE-7">Table 8-7</a> introduces some of the configuration
|
|---|
| 3119 | options provided for setting up users.</p>
|
|---|
| 3120 |
|
|---|
| 3121 | <a name="samba2-CHP-8-TABLE-7"/><h4 class="head4">Table 8-7. Connection script options</h4><table border="1">
|
|---|
| 3122 |
|
|---|
| 3123 |
|
|---|
| 3124 |
|
|---|
| 3125 |
|
|---|
| 3126 |
|
|---|
| 3127 |
|
|---|
| 3128 | <tr>
|
|---|
| 3129 | <th>
|
|---|
| 3130 | <p>Option</p>
|
|---|
| 3131 | </th>
|
|---|
| 3132 | <th>
|
|---|
| 3133 | <p>Parameters</p>
|
|---|
| 3134 | </th>
|
|---|
| 3135 | <th>
|
|---|
| 3136 | <p>Function</p>
|
|---|
| 3137 | </th>
|
|---|
| 3138 | <th>
|
|---|
| 3139 | <p>Default</p>
|
|---|
| 3140 | </th>
|
|---|
| 3141 | <th>
|
|---|
| 3142 | <p>Scope</p>
|
|---|
| 3143 | </th>
|
|---|
| 3144 | </tr>
|
|---|
| 3145 |
|
|---|
| 3146 |
|
|---|
| 3147 | <tr>
|
|---|
| 3148 | <td>
|
|---|
| 3149 | <p><tt class="literal">root preexec</tt></p>
|
|---|
| 3150 | </td>
|
|---|
| 3151 | <td>
|
|---|
| 3152 | <p>string (Unix command)</p>
|
|---|
| 3153 | </td>
|
|---|
| 3154 | <td>
|
|---|
| 3155 | <p>Sets a Unix command to run as <tt class="literal">root</tt>, before
|
|---|
| 3156 | connecting to the share.</p>
|
|---|
| 3157 | </td>
|
|---|
| 3158 | <td>
|
|---|
| 3159 | <p>None</p>
|
|---|
| 3160 | </td>
|
|---|
| 3161 | <td>
|
|---|
| 3162 | <p>Share</p>
|
|---|
| 3163 | </td>
|
|---|
| 3164 | </tr>
|
|---|
| 3165 | <tr>
|
|---|
| 3166 | <td>
|
|---|
| 3167 | <p><tt class="literal">root preexec close</tt></p>
|
|---|
| 3168 | </td>
|
|---|
| 3169 | <td>
|
|---|
| 3170 | <p>Boolean</p>
|
|---|
| 3171 | </td>
|
|---|
| 3172 | <td>
|
|---|
| 3173 | <p>If set to <tt class="literal">yes</tt>, nonzero exit status of
|
|---|
| 3174 | <tt class="literal">root preexec</tt> command will disconnect.</p>
|
|---|
| 3175 | </td>
|
|---|
| 3176 | <td>
|
|---|
| 3177 | <p><tt class="literal">no</tt></p>
|
|---|
| 3178 | </td>
|
|---|
| 3179 | <td>
|
|---|
| 3180 | <p>Share</p>
|
|---|
| 3181 | </td>
|
|---|
| 3182 | </tr>
|
|---|
| 3183 | <tr>
|
|---|
| 3184 | <td>
|
|---|
| 3185 | <p><tt class="literal">preexec</tt> <tt class="literal">(exec)</tt></p>
|
|---|
| 3186 | </td>
|
|---|
| 3187 | <td>
|
|---|
| 3188 | <p>string (Unix command)</p>
|
|---|
| 3189 | </td>
|
|---|
| 3190 | <td>
|
|---|
| 3191 | <p>Sets a Unix command to run as the user before connecting to the share.</p>
|
|---|
| 3192 | </td>
|
|---|
| 3193 | <td>
|
|---|
| 3194 | <p>None</p>
|
|---|
| 3195 | </td>
|
|---|
| 3196 | <td>
|
|---|
| 3197 | <p>Share</p>
|
|---|
| 3198 | </td>
|
|---|
| 3199 | </tr>
|
|---|
| 3200 | <tr>
|
|---|
| 3201 | <td>
|
|---|
| 3202 | <p><tt class="literal">preexec close</tt></p>
|
|---|
| 3203 | </td>
|
|---|
| 3204 | <td>
|
|---|
| 3205 | <p>Boolean</p>
|
|---|
| 3206 | </td>
|
|---|
| 3207 | <td>
|
|---|
| 3208 | <p>If set to <tt class="literal">yes</tt>, nonzero exit status of
|
|---|
| 3209 | <tt class="literal">preexec</tt> command will disconnect.</p>
|
|---|
| 3210 | </td>
|
|---|
| 3211 | <td>
|
|---|
| 3212 | <p><tt class="literal">no</tt></p>
|
|---|
| 3213 | </td>
|
|---|
| 3214 | <td>
|
|---|
| 3215 | <p>Share</p>
|
|---|
| 3216 | </td>
|
|---|
| 3217 | </tr>
|
|---|
| 3218 | <tr>
|
|---|
| 3219 | <td>
|
|---|
| 3220 | <p><tt class="literal">postexec</tt></p>
|
|---|
| 3221 | </td>
|
|---|
| 3222 | <td>
|
|---|
| 3223 | <p>string (Unix command)</p>
|
|---|
| 3224 | </td>
|
|---|
| 3225 | <td>
|
|---|
| 3226 | <p>Sets a Unix command to run as the user after disconnecting from the
|
|---|
| 3227 | share.</p>
|
|---|
| 3228 | </td>
|
|---|
| 3229 | <td>
|
|---|
| 3230 | <p>None</p>
|
|---|
| 3231 | </td>
|
|---|
| 3232 | <td>
|
|---|
| 3233 | <p>Share</p>
|
|---|
| 3234 | </td>
|
|---|
| 3235 | </tr>
|
|---|
| 3236 | <tr>
|
|---|
| 3237 | <td>
|
|---|
| 3238 | <p><tt class="literal">root</tt> <tt class="literal">postexec</tt></p>
|
|---|
| 3239 | </td>
|
|---|
| 3240 | <td>
|
|---|
| 3241 | <p>string (Unix command)</p>
|
|---|
| 3242 | </td>
|
|---|
| 3243 | <td>
|
|---|
| 3244 | <p>Sets a Unix command to run as <tt class="literal">root</tt> after
|
|---|
| 3245 | disconnecting from the share.</p>
|
|---|
| 3246 | </td>
|
|---|
| 3247 | <td>
|
|---|
| 3248 | <p>None</p>
|
|---|
| 3249 | </td>
|
|---|
| 3250 | <td>
|
|---|
| 3251 | <p>Share</p>
|
|---|
| 3252 | </td>
|
|---|
| 3253 | </tr>
|
|---|
| 3254 |
|
|---|
| 3255 | </table>
|
|---|
| 3256 |
|
|---|
| 3257 |
|
|---|
| 3258 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.1"/>
|
|---|
| 3259 |
|
|---|
| 3260 | <a name="INDEX-156"/><h3 class="head3">root preexec</h3>
|
|---|
| 3261 |
|
|---|
| 3262 | <p>This option specifies as its value a Unix command to be run
|
|---|
| 3263 | <em class="emphasis">as the root user</em> before any connection to a
|
|---|
| 3264 | share is completed. You should use this option specifically for
|
|---|
| 3265 | performing actions that require root privilege.</p>
|
|---|
| 3266 |
|
|---|
| 3267 | <p>To ensure security, users should never be able to modify the target
|
|---|
| 3268 | of the <tt class="literal">root</tt> <tt class="literal">preexec</tt> command. In
|
|---|
| 3269 | addition, unless you explicitly redirect it, any information the
|
|---|
| 3270 | command sends to standard output will be discarded. If you intend to
|
|---|
| 3271 | use any <tt class="literal">preexec</tt> or <tt class="literal">postexec</tt>
|
|---|
| 3272 | script, you should ensure that it will run correctly before having
|
|---|
| 3273 | Samba invoke it.</p>
|
|---|
| 3274 |
|
|---|
| 3275 |
|
|---|
| 3276 | </div>
|
|---|
| 3277 |
|
|---|
| 3278 |
|
|---|
| 3279 |
|
|---|
| 3280 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.2"/>
|
|---|
| 3281 |
|
|---|
| 3282 | <a name="INDEX-157"/><h3 class="head3">root preexec close</h3>
|
|---|
| 3283 |
|
|---|
| 3284 | <p>Sometimes you might want the share to disconnect if the
|
|---|
| 3285 | <tt class="literal">root</tt> <tt class="literal">preexec</tt> script fails,
|
|---|
| 3286 | giving the client an error rather than allowing it to connect. For
|
|---|
| 3287 | example, if you are using <tt class="literal">root</tt>
|
|---|
| 3288 | <tt class="literal">preexec</tt> to mount a CD-ROM or filesystem, it would
|
|---|
| 3289 | make no sense to connect the client to it in the event that the mount
|
|---|
| 3290 | fails. If you specify <tt class="literal">root</tt>
|
|---|
| 3291 | <tt class="literal">preexec</tt> <tt class="literal">close</tt>
|
|---|
| 3292 | <tt class="literal">=</tt> <tt class="literal">yes</tt>, the share will fail to
|
|---|
| 3293 | connect if the <tt class="literal">root</tt> <tt class="literal">preexec</tt>
|
|---|
| 3294 | script returns a nonzero exit status.</p>
|
|---|
| 3295 |
|
|---|
| 3296 |
|
|---|
| 3297 | </div>
|
|---|
| 3298 |
|
|---|
| 3299 |
|
|---|
| 3300 |
|
|---|
| 3301 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.3"/>
|
|---|
| 3302 |
|
|---|
| 3303 | <a name="INDEX-158"/><h3 class="head3">preexec</h3>
|
|---|
| 3304 |
|
|---|
| 3305 | <p>Sometimes just called <tt class="literal">exec</tt>, this option defines an
|
|---|
| 3306 | ordinary unprivileged command run by Samba as the user specified by
|
|---|
| 3307 | the variable <tt class="literal">%u</tt>. For example, a common use of this
|
|---|
| 3308 | option is to perform logging, such as the following:</p>
|
|---|
| 3309 |
|
|---|
| 3310 | <blockquote><pre class="code">[homes]
|
|---|
| 3311 | preexec = echo "%u connected from %m (%I)\" >>/tmp/.log</pre></blockquote>
|
|---|
| 3312 |
|
|---|
| 3313 | <p>You must redirect the standard output of the command if you want to
|
|---|
| 3314 | use it. Otherwise, it is discarded. This warning also applies to the
|
|---|
| 3315 | command's standard error output. If you intend to
|
|---|
| 3316 | use a <tt class="literal">preexec</tt> script, you should ensure that it
|
|---|
| 3317 | will run correctly before having Samba invoke it.</p>
|
|---|
| 3318 |
|
|---|
| 3319 |
|
|---|
| 3320 | </div>
|
|---|
| 3321 |
|
|---|
| 3322 |
|
|---|
| 3323 |
|
|---|
| 3324 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.4"/>
|
|---|
| 3325 |
|
|---|
| 3326 | <a name="INDEX-159"/><h3 class="head3">preexec close</h3>
|
|---|
| 3327 |
|
|---|
| 3328 | <p>This is similar to <tt class="literal">root</tt> <tt class="literal">preexec</tt>
|
|---|
| 3329 | <tt class="literal">close</tt>, except that it goes with the
|
|---|
| 3330 | <tt class="literal">preexec</tt> option. By setting
|
|---|
| 3331 | <tt class="literal">preexec</tt> <tt class="literal">close</tt>
|
|---|
| 3332 | <tt class="literal">=</tt> <tt class="literal">yes</tt>, a
|
|---|
| 3333 | <tt class="literal">preexec</tt> script that returns nonzero will cause the
|
|---|
| 3334 | share to disconnect immediately.</p>
|
|---|
| 3335 |
|
|---|
| 3336 |
|
|---|
| 3337 | </div>
|
|---|
| 3338 |
|
|---|
| 3339 |
|
|---|
| 3340 |
|
|---|
| 3341 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.5"/>
|
|---|
| 3342 |
|
|---|
| 3343 | <a name="INDEX-160"/><h3 class="head3">postexec</h3>
|
|---|
| 3344 |
|
|---|
| 3345 | <p>Once the user disconnects from the share, the command specified with
|
|---|
| 3346 | <tt class="literal">postexec</tt> is run as the user on the Samba server to
|
|---|
| 3347 | do any necessary cleanup. This option is essentially the same as the
|
|---|
| 3348 | <tt class="literal">preexec</tt> option. Again, remember that the command
|
|---|
| 3349 | is run as the user represented by <tt class="literal">%u</tt>, and any
|
|---|
| 3350 | information sent to standard output will be ignored.</p>
|
|---|
| 3351 |
|
|---|
| 3352 |
|
|---|
| 3353 | </div>
|
|---|
| 3354 |
|
|---|
| 3355 |
|
|---|
| 3356 |
|
|---|
| 3357 | <div class="sect3"><a name="samba2-CHP-8-SECT-6.1.6"/>
|
|---|
| 3358 |
|
|---|
| 3359 | <a name="INDEX-161"/><h3 class="head3">root postexec</h3>
|
|---|
| 3360 |
|
|---|
| 3361 | <p>Following the <tt class="literal">postexec</tt> option, the
|
|---|
| 3362 | <tt class="literal">root</tt> <tt class="literal">postexec</tt> command is run,
|
|---|
| 3363 | if one has been specified. Again, this option specifies as its value
|
|---|
| 3364 | a Unix command to be run <em class="emphasis">as the root user</em> before
|
|---|
| 3365 | disconnecting from a share. You should use this option specifically
|
|---|
| 3366 | for performing actions that require root privilege. <a name="INDEX-162"/> <a name="INDEX-163"/><a name="INDEX-164"/></p>
|
|---|
| 3367 |
|
|---|
| 3368 |
|
|---|
| 3369 | </div>
|
|---|
| 3370 |
|
|---|
| 3371 |
|
|---|
| 3372 | </div>
|
|---|
| 3373 |
|
|---|
| 3374 |
|
|---|
| 3375 | </div>
|
|---|
| 3376 |
|
|---|
| 3377 |
|
|---|
| 3378 |
|
|---|
| 3379 | <div class="sect1"><a name="samba2-CHP-8-SECT-7"/>
|
|---|
| 3380 |
|
|---|
| 3381 | <h2 class="head1">Microsoft Distributed Filesystems</h2>
|
|---|
| 3382 |
|
|---|
| 3383 | <p><a name="INDEX-165"/>In a
|
|---|
| 3384 | large network where many shared folders are spread out over a large
|
|---|
| 3385 | number of servers, it can be difficult for users to locate the
|
|---|
| 3386 | resources they are trying to find. Browsing through Network
|
|---|
| 3387 | Neighborhood or My Network Places can become an ordeal rather than a
|
|---|
| 3388 | time-saving convenience. To mitigate this problem, Microsoft added an
|
|---|
| 3389 | extension to file sharing called <em class="firstterm">Distributed
|
|---|
| 3390 | filesystem</em><a name="INDEX-166"/><a name="INDEX-167"/> (Dfs). Using Dfs, it
|
|---|
| 3391 | is possible to organize file shares on the network so that they
|
|---|
| 3392 | appear to users as organized in a single directory tree on a single
|
|---|
| 3393 | server, regardless of which servers on the network actually contain
|
|---|
| 3394 | the resources. Instead of having to browse the entire network, users
|
|---|
| 3395 | can go to the Dfs share and locate their data much more easily.</p>
|
|---|
| 3396 |
|
|---|
| 3397 | <p>Dfs can also help administrators because it provides a level of
|
|---|
| 3398 | indirection between the name of a shared folder and its actual
|
|---|
| 3399 | location. The Dfs share contains references to resources on the
|
|---|
| 3400 | network, and when a resource is accessed, the Dfs server hands the
|
|---|
| 3401 | client off to the actual server of the resource. When moving
|
|---|
| 3402 | resources to another computer, the reference to the resource in the
|
|---|
| 3403 | Dfs share can be redirected to the new location in one step, with the
|
|---|
| 3404 | change being entirely seamless for users.</p>
|
|---|
| 3405 |
|
|---|
| 3406 | <p>To a limited extent, Dfs also can help improve performance for
|
|---|
| 3407 | read-only shares because it provides <a name="INDEX-168"/>load balancing. It is possible
|
|---|
| 3408 | to set up a Dfs reference to point to identical shares on two or more
|
|---|
| 3409 | servers. The Dfs server then divides requests between the servers,
|
|---|
| 3410 | dividing the client load among them. However, this works well only
|
|---|
| 3411 | for static, read-only data because no provision is included in Dfs
|
|---|
| 3412 | for synchronization among the servers when changes are made on any of
|
|---|
| 3413 | them.</p>
|
|---|
| 3414 |
|
|---|
| 3415 |
|
|---|
| 3416 | <div class="sect2"><a name="samba2-CHP-8-SECT-7.1"/>
|
|---|
| 3417 |
|
|---|
| 3418 | <h3 class="head2">Windows Dfs Clients</h3>
|
|---|
| 3419 |
|
|---|
| 3420 | <p><a name="INDEX-169"/>Modern versions of Windows come with
|
|---|
| 3421 | client-side support for Dfs, and no extra configuration is required.
|
|---|
| 3422 | Support is more limited for older versions, however. Windows for
|
|---|
| 3423 | Workgroups cannot function as a Dfs client at all. Windows NT 4.0
|
|---|
| 3424 | must be upgraded to at least Service Pack 3 to act as a Dfs client,
|
|---|
| 3425 | and the Dfs Client must be installed. Later service packs (such as
|
|---|
| 3426 | Service Pack 6) include the Dfs Client. Windows 95 must also have the
|
|---|
| 3427 | Dfs Client software installed to act as a Dfs client. Without the Dfs
|
|---|
| 3428 | Client software, double-clicking a remote folder in a Dfs share will
|
|---|
| 3429 | show an empty folder, and no error message will appear.</p>
|
|---|
| 3430 |
|
|---|
| 3431 | <a name="samba2-CHP-8-NOTE-140"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
|
|---|
| 3432 | <p>To use the Dfs Client for Windows 95 or Windows NT, you must first
|
|---|
| 3433 | download and install it. See the web page <a href="http://microsoft.com/ntserver/nts/downloads/winfeatures/NTSDistrFile/default.asp">http://microsoft.com/ntserver/nts/downloads/winfeatures/NTSDistrFile/default.asp</a>
|
|---|
| 3434 | for a link to download the installation program and instructions on
|
|---|
| 3435 | how to install the Dfs Client.</p>
|
|---|
| 3436 | </blockquote>
|
|---|
| 3437 |
|
|---|
| 3438 |
|
|---|
| 3439 | </div>
|
|---|
| 3440 |
|
|---|
| 3441 |
|
|---|
| 3442 | <div class="sect2"><a name="samba2-CHP-8-SECT-7.2"/>
|
|---|
| 3443 |
|
|---|
| 3444 | <h3 class="head2">Configuring Samba for Dfs</h3>
|
|---|
| 3445 |
|
|---|
| 3446 | <p><a name="INDEX-170"/>To act as a Dfs server, Samba 2.2 must
|
|---|
| 3447 | be compiled with the <tt class="literal">--with-msdfs</tt> configure
|
|---|
| 3448 | option. (See <a href="ch02.html">Chapter 2</a> for instructions on
|
|---|
| 3449 | configuring and compiling Samba.) Samba 3.0 includes Dfs support by
|
|---|
| 3450 | default and does not need to be compiled with the
|
|---|
| 3451 | <tt class="literal">--with-msdfs</tt> configure option.</p>
|
|---|
| 3452 |
|
|---|
| 3453 | <p>Once a Dfs-enabled Samba server is running, there are just two steps
|
|---|
| 3454 | to serving a Dfs share. First we will set up a Dfs root directory on
|
|---|
| 3455 | the server, and then we will modify the <em class="filename">smb.conf</em>
|
|---|
| 3456 | configuration file to enable the share.</p>
|
|---|
| 3457 |
|
|---|
| 3458 |
|
|---|
| 3459 | <div class="sect3"><a name="samba2-CHP-8-SECT-7.2.1"/>
|
|---|
| 3460 |
|
|---|
| 3461 | <h3 class="head3">Setting up the Dfs root</h3>
|
|---|
| 3462 |
|
|---|
| 3463 | <p>First we need to create a directory to act as the Dfs root:</p>
|
|---|
| 3464 |
|
|---|
| 3465 | <blockquote><pre class="code"># <tt class="userinput"><b>mkdir /usr/local/samba/dfs</b></tt></pre></blockquote>
|
|---|
| 3466 |
|
|---|
| 3467 | <p>This can be any directory, but it is important that it be owned by
|
|---|
| 3468 | root and given the proper permissions:</p>
|
|---|
| 3469 |
|
|---|
| 3470 | <blockquote><pre class="code"># <tt class="userinput"><b>chown root:root /usr/local/samba/dfs</b></tt>
|
|---|
| 3471 | # <tt class="userinput"><b>chmod 755 /usr/local/samba/dfs</b></tt></pre></blockquote>
|
|---|
| 3472 |
|
|---|
| 3473 | <p>The Dfs directory tree can have subdirectories and files, just like
|
|---|
| 3474 | any other shared directory. These will function just as they would in
|
|---|
| 3475 | any other share, allowing clients to access the directories and files
|
|---|
| 3476 | on the Samba server. The whole idea of Dfs, though, is to gather
|
|---|
| 3477 | together shares on other servers by making references to them in the
|
|---|
| 3478 | Dfs tree. The way this is implemented with Samba involves a clever
|
|---|
| 3479 | use of symbolic links, which can be in the Dfs root directory or any
|
|---|
| 3480 | subdirectory in the Dfs tree.</p>
|
|---|
| 3481 |
|
|---|
| 3482 | <p>You are probably familiar with using symbolic links to create
|
|---|
| 3483 | references to files that exist on the same system, and perhaps
|
|---|
| 3484 | crossing a local filesystem boundary (which ordinary Unix links
|
|---|
| 3485 | cannot do). But maybe you didn't know that symbolic
|
|---|
| 3486 | links have a more general functionality. Although we
|
|---|
| 3487 | can't display its contents directly, as we could
|
|---|
| 3488 | with a text or binary file, a symbolic link
|
|---|
| 3489 | "contains" an ASCII text string
|
|---|
| 3490 | naming what the link points to. For example, take a look at the
|
|---|
| 3491 | listing for these symbolic links:</p>
|
|---|
| 3492 |
|
|---|
| 3493 | <blockquote><pre class="code">$ <tt class="userinput"><b>ls -l wrdlnk alnk</b></tt>
|
|---|
| 3494 | lrwxrwxrwx 1 jay jay 15 Mar 14 06:50 wrdlnk -> /usr/dict/words
|
|---|
| 3495 | lrwxrwxrwx 1 jay jay 9 Mar 14 06:53 alnk -> dreamtime</pre></blockquote>
|
|---|
| 3496 |
|
|---|
| 3497 | <p>As you can infer from the size of the <em class="filename">wrdlnk</em>
|
|---|
| 3498 | link (15 bytes), the string <tt class="literal">/usr/dict/words</tt> is
|
|---|
| 3499 | encoded into it. The size of <em class="filename">alnk</em> (9 bytes) is
|
|---|
| 3500 | smaller, corresponding to the shorter name of
|
|---|
| 3501 | <em class="filename">dreamtime</em>.</p>
|
|---|
| 3502 |
|
|---|
| 3503 | <p>Now let's create a link in our Dfs root for an SMB
|
|---|
| 3504 | share:</p>
|
|---|
| 3505 |
|
|---|
| 3506 | <blockquote><pre class="code"># <tt class="userinput"><b>cd /usr/local/samba/dfs</b></tt>
|
|---|
| 3507 | # <tt class="userinput"><b>ln -s 'msdfs:maya\e' maya-e</b></tt>
|
|---|
| 3508 | # <tt class="userinput"><b>ls -l maya-e</b></tt>
|
|---|
| 3509 | lrwxrwxrwx 1 root root 12 Mar 13 17:34 maya-e -> msdfs:maya\e</pre></blockquote>
|
|---|
| 3510 |
|
|---|
| 3511 | <p>This link might appear as a
|
|---|
| 3512 | "broken" link in a directory
|
|---|
| 3513 | listing because it points to something that isn't a
|
|---|
| 3514 | file on the local system. For example, the <em class="emphasis">file</em>
|
|---|
| 3515 | command will report:</p>
|
|---|
| 3516 |
|
|---|
| 3517 | <blockquote><pre class="code">$ <tt class="userinput"><b>file maya-e</b></tt>
|
|---|
| 3518 | maya-e: broken symbolic link to msdfs:maya\e</pre></blockquote>
|
|---|
| 3519 |
|
|---|
| 3520 | <p>However, <em class="filename">maya-e</em> is a valid reference to the
|
|---|
| 3521 | <em class="filename">\\maya\e</em> share when used with
|
|---|
| 3522 | Samba's Dfs support. When Samba encounters this
|
|---|
| 3523 | file, it sees the leading <tt class="literal">msdfs</tt>: and interprets
|
|---|
| 3524 | the rest as the name of a remote share. The client is then redirected
|
|---|
| 3525 | to the remote share.</p>
|
|---|
| 3526 |
|
|---|
| 3527 | <p>When creating links in the Dfs root directory, simply follow the same
|
|---|
| 3528 | format, which in general is
|
|---|
| 3529 | <tt class="literal">msdfs</tt>:<em class="replaceable">server</em>\<em class="replaceable">share</em>.
|
|---|
| 3530 | Note that this is similar to a UNC appended onto the
|
|---|
| 3531 | <tt class="literal">msdfs</tt>: string, except that in this case, the two
|
|---|
| 3532 | backslashes preceding the server's name are omitted.</p>
|
|---|
| 3533 |
|
|---|
| 3534 | <a name="samba2-CHP-8-NOTE-141"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
|
|---|
| 3535 | <p>The names for the symbolic links in Dfs shares must be in all
|
|---|
| 3536 | lowercase.</p>
|
|---|
| 3537 | </blockquote>
|
|---|
| 3538 |
|
|---|
| 3539 | <p>In addition to regular network shares, you can use symbolic links of
|
|---|
| 3540 | this type to reference Dfs shares on other Dfs servers. However,
|
|---|
| 3541 | referencing printer shares does not work. Dfs is for sharing files
|
|---|
| 3542 | only. <a name="INDEX-171"/></p>
|
|---|
| 3543 |
|
|---|
| 3544 |
|
|---|
| 3545 | </div>
|
|---|
| 3546 |
|
|---|
| 3547 |
|
|---|
| 3548 |
|
|---|
| 3549 | <div class="sect3"><a name="samba2-CHP-8-SECT-7.2.2"/>
|
|---|
| 3550 |
|
|---|
| 3551 | <h3 class="head3">Load balancing</h3>
|
|---|
| 3552 |
|
|---|
| 3553 | <p><a name="INDEX-172"/>To
|
|---|
| 3554 | set up a load-balancing Dfs share, create the symbolic link like
|
|---|
| 3555 | this:</p>
|
|---|
| 3556 |
|
|---|
| 3557 | <blockquote><pre class="code"># <tt class="userinput"><b>ln -s 'msdfs:toltec\data,msdfs:mixtec\data' lb-data</b></tt></pre></blockquote>
|
|---|
| 3558 |
|
|---|
| 3559 | <p>That is, simply use a list of shares separated by commas as the
|
|---|
| 3560 | reference. Remember, it is up to you to make sure the shared folders
|
|---|
| 3561 | remain identical. Set up permissions on the servers to make the
|
|---|
| 3562 | shares read-only to users.</p>
|
|---|
| 3563 |
|
|---|
| 3564 | <p>The last thing we need to do is to modify the
|
|---|
| 3565 | <em class="filename">smb.conf</em> file to define the Dfs root share and
|
|---|
| 3566 | add Dfs support. The Dfs root is added as a share definition:</p>
|
|---|
| 3567 |
|
|---|
| 3568 | <a name="INDEX-173"/><blockquote><pre class="code">[dfs]
|
|---|
| 3569 | path = /usr/local/samba/dfs
|
|---|
| 3570 | msdfs root = yes</pre></blockquote>
|
|---|
| 3571 |
|
|---|
| 3572 | <p>You can use any name you like for the share. The path is set to the
|
|---|
| 3573 | Dfs root directory we just set up, and the parameter
|
|---|
| 3574 | <tt class="literal">msdfs</tt> <tt class="literal">root</tt> <tt class="literal">=</tt>
|
|---|
| 3575 | <tt class="literal">yes</tt> tells Samba that this share is a Dfs root.</p>
|
|---|
| 3576 |
|
|---|
| 3577 | <p>To enable support for Dfs in the server, we need to add one line to
|
|---|
| 3578 | the <tt class="literal">[global]</tt> section:</p>
|
|---|
| 3579 |
|
|---|
| 3580 | <a name="INDEX-174"/><blockquote><pre class="code">[global]
|
|---|
| 3581 | host msdfs = yes</pre></blockquote>
|
|---|
| 3582 |
|
|---|
| 3583 | <p>Restart the Samba daemons—or just wait a minute for them to
|
|---|
| 3584 | reread the configuration file—and you will see the new share
|
|---|
| 3585 | from Windows clients. If you have trouble accessing any of the remote
|
|---|
| 3586 | shares in the Dfs share, recheck your symbolic links to make sure
|
|---|
| 3587 | they were created correctly. <a name="INDEX-175"/></p>
|
|---|
| 3588 |
|
|---|
| 3589 | <a name="samba2-CHP-8-NOTE-142"/><blockquote class="note"><h4 class="objtitle">TIP</h4>
|
|---|
| 3590 | <p>If you previously had a share by the same name as your Dfs share, you
|
|---|
| 3591 | might need to reboot Windows clients before they can access the share
|
|---|
| 3592 | as a Dfs share.</p>
|
|---|
| 3593 | </blockquote>
|
|---|
| 3594 |
|
|---|
| 3595 |
|
|---|
| 3596 | </div>
|
|---|
| 3597 |
|
|---|
| 3598 |
|
|---|
| 3599 | </div>
|
|---|
| 3600 |
|
|---|
| 3601 |
|
|---|
| 3602 | </div>
|
|---|
| 3603 |
|
|---|
| 3604 |
|
|---|
| 3605 |
|
|---|
| 3606 | <div class="sect1"><a name="samba2-CHP-8-SECT-8"/>
|
|---|
| 3607 |
|
|---|
| 3608 | <h2 class="head1">Working with NIS</h2>
|
|---|
| 3609 |
|
|---|
| 3610 | <p>In networks where NIS and NFS are in use, it is common for
|
|---|
| 3611 | users' home directories to be mounted over the
|
|---|
| 3612 | network by NFS. If a Samba server being used to authenticate user
|
|---|
| 3613 | logons is running on a system with NFS-mounted home directories
|
|---|
| 3614 | shared with a <tt class="literal">[homes]</tt> share, the additional
|
|---|
| 3615 | overhead can result in poor performance—about 30% of normal
|
|---|
| 3616 | Samba speed.</p>
|
|---|
| 3617 |
|
|---|
| 3618 | <p>Samba has the ability to work with <a name="INDEX-176"/>NIS and NIS+ to find the
|
|---|
| 3619 | server on which the home directories actually reside so that they can
|
|---|
| 3620 | be shared directly from that server. For this to work, the server
|
|---|
| 3621 | that holds the home directories must also have Samba running, with a
|
|---|
| 3622 | <tt class="literal">[homes]</tt> share of its own.</p>
|
|---|
| 3623 |
|
|---|
| 3624 |
|
|---|
| 3625 | <div class="sect2"><a name="samba2-CHP-8-SECT-8.1"/>
|
|---|
| 3626 |
|
|---|
| 3627 | <h3 class="head2">NIS Configuration Options</h3>
|
|---|
| 3628 |
|
|---|
| 3629 | <p><a href="ch08.html#samba2-CHP-8-TABLE-8">Table 8-8</a> introduces the
|
|---|
| 3630 | <a name="INDEX-177"/><a name="INDEX-178"/>NIS configuration options specifically
|
|---|
| 3631 | for setting up users.</p>
|
|---|
| 3632 |
|
|---|
| 3633 | <a name="samba2-CHP-8-TABLE-8"/><h4 class="head4">Table 8-8. NIS options</h4><table border="1">
|
|---|
| 3634 |
|
|---|
| 3635 |
|
|---|
| 3636 |
|
|---|
| 3637 |
|
|---|
| 3638 |
|
|---|
| 3639 |
|
|---|
| 3640 | <tr>
|
|---|
| 3641 | <th>
|
|---|
| 3642 | <p>Option</p>
|
|---|
| 3643 | </th>
|
|---|
| 3644 | <th>
|
|---|
| 3645 | <p>Parameters</p>
|
|---|
| 3646 | </th>
|
|---|
| 3647 | <th>
|
|---|
| 3648 | <p>Function</p>
|
|---|
| 3649 | </th>
|
|---|
| 3650 | <th>
|
|---|
| 3651 | <p>Default</p>
|
|---|
| 3652 | </th>
|
|---|
| 3653 | <th>
|
|---|
| 3654 | <p>Scope</p>
|
|---|
| 3655 | </th>
|
|---|
| 3656 | </tr>
|
|---|
| 3657 |
|
|---|
| 3658 |
|
|---|
| 3659 | <tr>
|
|---|
| 3660 | <td>
|
|---|
| 3661 | <p><tt class="literal">nis homedir</tt></p>
|
|---|
| 3662 | </td>
|
|---|
| 3663 | <td>
|
|---|
| 3664 | <p>Boolean</p>
|
|---|
| 3665 | </td>
|
|---|
| 3666 | <td>
|
|---|
| 3667 | <p>If <tt class="literal">yes</tt>, uses NIS instead of
|
|---|
| 3668 | <em class="filename">/etc/passwd</em> to look up the path of a
|
|---|
| 3669 | user's home directory.</p>
|
|---|
| 3670 | </td>
|
|---|
| 3671 | <td>
|
|---|
| 3672 | <p><tt class="literal">no</tt></p>
|
|---|
| 3673 | </td>
|
|---|
| 3674 | <td>
|
|---|
| 3675 | <p>Global</p>
|
|---|
| 3676 | </td>
|
|---|
| 3677 | </tr>
|
|---|
| 3678 | <tr>
|
|---|
| 3679 | <td>
|
|---|
| 3680 | <p><tt class="literal">homedir map</tt></p>
|
|---|
| 3681 | </td>
|
|---|
| 3682 | <td>
|
|---|
| 3683 | <p>string (NIS map name)</p>
|
|---|
| 3684 | </td>
|
|---|
| 3685 | <td>
|
|---|
| 3686 | <p>Sets the NIS map to use to look up a user's home
|
|---|
| 3687 | directory.</p>
|
|---|
| 3688 | </td>
|
|---|
| 3689 | <td>
|
|---|
| 3690 | <p>None</p>
|
|---|
| 3691 | </td>
|
|---|
| 3692 | <td>
|
|---|
| 3693 | <p>Global</p>
|
|---|
| 3694 | </td>
|
|---|
| 3695 | </tr>
|
|---|
| 3696 |
|
|---|
| 3697 | </table>
|
|---|
| 3698 |
|
|---|
| 3699 |
|
|---|
| 3700 | <div class="sect3"><a name="samba2-CHP-8-SECT-8.1.1"/>
|
|---|
| 3701 |
|
|---|
| 3702 | <h3 class="head3">nis homedir, homedir map</h3>
|
|---|
| 3703 |
|
|---|
| 3704 | <p>The <tt class="literal">nis</tt><a name="INDEX-179"/> <tt class="literal">homedir</tt> and
|
|---|
| 3705 | <tt class="literal">homedir</tt><a name="INDEX-180"/> <tt class="literal">map</tt> options
|
|---|
| 3706 | are for Samba servers on network sites where Unix home directories
|
|---|
| 3707 | are provided using NFS, the automounter, and NIS.</p>
|
|---|
| 3708 |
|
|---|
| 3709 | <p>The <tt class="literal">nis</tt> <tt class="literal">homedir</tt> option
|
|---|
| 3710 | indicates that the home-directory server for the user needs to be
|
|---|
| 3711 | looked up in NIS. The <tt class="literal">homedir</tt>
|
|---|
| 3712 | <tt class="literal">map</tt> option tells Samba in which NIS map to look
|
|---|
| 3713 | for the server that has the user's home directory.
|
|---|
| 3714 | The server needs to be a Samba server so that the client can do an
|
|---|
| 3715 | SMB connect to it, and the other Samba servers need to have NIS
|
|---|
| 3716 | installed so that they can do the lookup.</p>
|
|---|
| 3717 |
|
|---|
| 3718 | <p>For example, if user <tt class="literal">joe</tt> asks for a share called
|
|---|
| 3719 | <tt class="literal">[joe]</tt>, and the <tt class="literal">nis</tt>
|
|---|
| 3720 | <tt class="literal">homedir</tt> option is set to <tt class="literal">yes</tt>,
|
|---|
| 3721 | Samba will look in the file specified by <tt class="literal">homedir</tt>
|
|---|
| 3722 | <tt class="literal">map</tt> for a home directory for
|
|---|
| 3723 | <tt class="literal">joe</tt>. If it finds one, Samba will return the
|
|---|
| 3724 | associated system name to the client. The client will then try to
|
|---|
| 3725 | connect to that machine and get the share from there. Enabling NIS
|
|---|
| 3726 | lookups looks like the following:</p>
|
|---|
| 3727 |
|
|---|
| 3728 | <blockquote><pre class="code">[globals]
|
|---|
| 3729 | nis homedir = yes
|
|---|
| 3730 | homedir map = amd.map</pre></blockquote>
|
|---|
| 3731 |
|
|---|
| 3732 |
|
|---|
| 3733 | </div>
|
|---|
| 3734 |
|
|---|
| 3735 |
|
|---|
| 3736 | </div>
|
|---|
| 3737 |
|
|---|
| 3738 |
|
|---|
| 3739 | </div>
|
|---|
| 3740 |
|
|---|
| 3741 | <hr/><h4 class="head4">Footnotes</h4><blockquote><a name="FOOTNOTE-1"/> <p><a href="#FNPTR-1">[1]</a> The system checkbox will
|
|---|
| 3742 | probably be grayed for your file. Don't worry about
|
|---|
| 3743 | that—you should still be able to see when the box is checked
|
|---|
| 3744 | and when it isn't.</p> </blockquote><hr/><h4 class="head4"><a href="toc.html">TOC</a></h4></body></html>
|
|---|