merge from 2.2
[samba.git] / docs / htmldocs / Samba-HOWTO-Collection.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >SAMBA Project Documentation</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.57"></HEAD
8 ><BODY
9 CLASS="BOOK"
10 BGCOLOR="#FFFFFF"
11 TEXT="#000000"
12 LINK="#0000FF"
13 VLINK="#840084"
14 ALINK="#0000FF"
15 ><DIV
16 CLASS="BOOK"
17 ><A
18 NAME="SAMBA-PROJECT-DOCUMENTATION"
19 ></A
20 ><DIV
21 CLASS="TITLEPAGE"
22 ><H1
23 CLASS="TITLE"
24 ><A
25 NAME="SAMBA-PROJECT-DOCUMENTATION"
26 >SAMBA Project Documentation</A
27 ></H1
28 ><H3
29 CLASS="AUTHOR"
30 ><A
31 NAME="AEN4"
32 >SAMBA Team</A
33 ></H3
34 ><HR></DIV
35 ><HR><H1
36 ><A
37 NAME="AEN9"
38 >Abstract</A
39 ></H1
40 ><P
41 >This book is a collection of HOWTOs added to Samba documentation over the years.
42 I try to ensure that all are current, but sometimes the is a larger job
43 than one person can maintain.  The most recent version of this document
44 can be found at <A
45 HREF="http://www.samba.org/"
46 TARGET="_top"
47 >http://www.samba.org/</A
48 >
49 on the "Documentation" page.  Please send updates to <A
50 HREF="mailto:jerry@samba.org"
51 TARGET="_top"
52 >jerry@samba.org</A
53 >.</P
54 ><P
55 >Cheers, jerry</P
56 ><DIV
57 CLASS="TOC"
58 ><DL
59 ><DT
60 ><B
61 >Table of Contents</B
62 ></DT
63 ><DT
64 >1. <A
65 HREF="#AEN15"
66 >How to Install and Test SAMBA</A
67 ></DT
68 ><DD
69 ><DL
70 ><DT
71 >1.1. <A
72 HREF="#AEN17"
73 >Step 0: Read the man pages</A
74 ></DT
75 ><DT
76 >1.2. <A
77 HREF="#AEN25"
78 >Step 1: Building the Binaries</A
79 ></DT
80 ><DT
81 >1.3. <A
82 HREF="#AEN53"
83 >Step 2: The all important step</A
84 ></DT
85 ><DT
86 >1.4. <A
87 HREF="#AEN57"
88 >Step 3: Create the smb configuration file.</A
89 ></DT
90 ><DT
91 >1.5. <A
92 HREF="#AEN71"
93 >Step 4: Test your config file with 
94         <B
95 CLASS="COMMAND"
96 >testparm</B
97 ></A
98 ></DT
99 ><DT
100 >1.6. <A
101 HREF="#AEN77"
102 >Step 5: Starting the smbd and nmbd</A
103 ></DT
104 ><DD
105 ><DL
106 ><DT
107 >1.6.1. <A
108 HREF="#AEN87"
109 >Step 5a: Starting from inetd.conf</A
110 ></DT
111 ><DT
112 >1.6.2. <A
113 HREF="#AEN116"
114 >Step 5b. Alternative: starting it as a daemon</A
115 ></DT
116 ></DL
117 ></DD
118 ><DT
119 >1.7. <A
120 HREF="#AEN132"
121 >Step 6: Try listing the shares available on your 
122         server</A
123 ></DT
124 ><DT
125 >1.8. <A
126 HREF="#AEN141"
127 >Step 7: Try connecting with the unix client</A
128 ></DT
129 ><DT
130 >1.9. <A
131 HREF="#AEN157"
132 >Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, 
133         Win2k, OS/2, etc... client</A
134 ></DT
135 ><DT
136 >1.10. <A
137 HREF="#AEN171"
138 >What If Things Don't Work?</A
139 ></DT
140 ><DD
141 ><DL
142 ><DT
143 >1.10.1. <A
144 HREF="#AEN176"
145 >Diagnosing Problems</A
146 ></DT
147 ><DT
148 >1.10.2. <A
149 HREF="#AEN180"
150 >Scope IDs</A
151 ></DT
152 ><DT
153 >1.10.3. <A
154 HREF="#AEN183"
155 >Choosing the Protocol Level</A
156 ></DT
157 ><DT
158 >1.10.4. <A
159 HREF="#AEN192"
160 >Printing from UNIX to a Client PC</A
161 ></DT
162 ><DT
163 >1.10.5. <A
164 HREF="#AEN196"
165 >Locking</A
166 ></DT
167 ><DT
168 >1.10.6. <A
169 HREF="#AEN206"
170 >Mapping Usernames</A
171 ></DT
172 ><DT
173 >1.10.7. <A
174 HREF="#AEN209"
175 >Other Character Sets</A
176 ></DT
177 ></DL
178 ></DD
179 ></DL
180 ></DD
181 ><DT
182 >2. <A
183 HREF="#AEN212"
184 >Integrating MS Windows networks with Samba</A
185 ></DT
186 ><DD
187 ><DL
188 ><DT
189 >2.1. <A
190 HREF="#AEN223"
191 >Agenda</A
192 ></DT
193 ><DT
194 >2.2. <A
195 HREF="#AEN245"
196 >Name Resolution in a pure Unix/Linux world</A
197 ></DT
198 ><DD
199 ><DL
200 ><DT
201 >2.2.1. <A
202 HREF="#AEN248"
203 ><TT
204 CLASS="FILENAME"
205 >/etc/hosts</TT
206 ></A
207 ></DT
208 ><DT
209 >2.2.2. <A
210 HREF="#AEN264"
211 ><TT
212 CLASS="FILENAME"
213 >/etc/resolv.conf</TT
214 ></A
215 ></DT
216 ><DT
217 >2.2.3. <A
218 HREF="#AEN275"
219 ><TT
220 CLASS="FILENAME"
221 >/etc/host.conf</TT
222 ></A
223 ></DT
224 ><DT
225 >2.2.4. <A
226 HREF="#AEN283"
227 ><TT
228 CLASS="FILENAME"
229 >/etc/nsswitch.conf</TT
230 ></A
231 ></DT
232 ></DL
233 ></DD
234 ><DT
235 >2.3. <A
236 HREF="#AEN295"
237 >Name resolution as used within MS Windows networking</A
238 ></DT
239 ><DD
240 ><DL
241 ><DT
242 >2.3.1. <A
243 HREF="#AEN307"
244 >The NetBIOS Name Cache</A
245 ></DT
246 ><DT
247 >2.3.2. <A
248 HREF="#AEN312"
249 >The LMHOSTS file</A
250 ></DT
251 ><DT
252 >2.3.3. <A
253 HREF="#AEN320"
254 >HOSTS file</A
255 ></DT
256 ><DT
257 >2.3.4. <A
258 HREF="#AEN325"
259 >DNS Lookup</A
260 ></DT
261 ><DT
262 >2.3.5. <A
263 HREF="#AEN328"
264 >WINS Lookup</A
265 ></DT
266 ></DL
267 ></DD
268 ><DT
269 >2.4. <A
270 HREF="#AEN342"
271 >How browsing functions and how to deploy stable and 
272 dependable browsing using Samba</A
273 ></DT
274 ><DT
275 >2.5. <A
276 HREF="#AEN352"
277 >MS Windows security options and how to configure 
278 Samba for seemless integration</A
279 ></DT
280 ><DD
281 ><DL
282 ><DT
283 >2.5.1. <A
284 HREF="#AEN369"
285 >Use MS Windows NT as an authentication server</A
286 ></DT
287 ><DT
288 >2.5.2. <A
289 HREF="#AEN377"
290 >Make Samba a member of an MS Windows NT security domain</A
291 ></DT
292 ><DT
293 >2.5.3. <A
294 HREF="#AEN391"
295 >Configure Samba as an authentication server</A
296 ></DT
297 ><DD
298 ><DL
299 ><DT
300 >2.5.3.1. <A
301 HREF="#AEN398"
302 >Users</A
303 ></DT
304 ><DT
305 >2.5.3.2. <A
306 HREF="#AEN405"
307 >MS Windows NT Machine Accounts</A
308 ></DT
309 ></DL
310 ></DD
311 ></DL
312 ></DD
313 ><DT
314 >2.6. <A
315 HREF="#AEN410"
316 >Configuration of Samba as ...</A
317 ></DT
318 ></DL
319 ></DD
320 ><DT
321 >3. <A
322 HREF="#AEN421"
323 >LanMan and NT Password Encryption in Samba 2.x</A
324 ></DT
325 ><DD
326 ><DL
327 ><DT
328 >3.1. <A
329 HREF="#AEN432"
330 >Introduction</A
331 ></DT
332 ><DT
333 >3.2. <A
334 HREF="#AEN436"
335 >How does it work?</A
336 ></DT
337 ><DT
338 >3.3. <A
339 HREF="#AEN447"
340 >Important Notes About Security</A
341 ></DT
342 ><DD
343 ><DL
344 ><DT
345 >3.3.1. <A
346 HREF="#AEN466"
347 >Advantages of SMB Encryption</A
348 ></DT
349 ><DT
350 >3.3.2. <A
351 HREF="#AEN473"
352 >Advantages of non-encrypted passwords</A
353 ></DT
354 ></DL
355 ></DD
356 ><DT
357 >3.4. <A
358 HREF="#AEN482"
359 ><A
360 NAME="SMBPASSWDFILEFORMAT"
361 ></A
362 >The smbpasswd file</A
363 ></DT
364 ><DT
365 >3.5. <A
366 HREF="#AEN534"
367 >The smbpasswd Command</A
368 ></DT
369 ><DT
370 >3.6. <A
371 HREF="#AEN573"
372 >Setting up Samba to support LanManager Encryption</A
373 ></DT
374 ></DL
375 ></DD
376 ><DT
377 >4. <A
378 HREF="#AEN588"
379 >Hosting a Microsoft Distributed File System tree on Samba</A
380 ></DT
381 ><DD
382 ><DL
383 ><DT
384 >4.1. <A
385 HREF="#AEN599"
386 >Instructions</A
387 ></DT
388 ><DD
389 ><DL
390 ><DT
391 >4.1.1. <A
392 HREF="#AEN634"
393 >Notes</A
394 ></DT
395 ></DL
396 ></DD
397 ></DL
398 ></DD
399 ><DT
400 >5. <A
401 HREF="#AEN643"
402 >Printing Support in Samba 2.2.x</A
403 ></DT
404 ><DD
405 ><DL
406 ><DT
407 >5.1. <A
408 HREF="#AEN654"
409 >Introduction</A
410 ></DT
411 ><DT
412 >5.2. <A
413 HREF="#AEN676"
414 >Configuration</A
415 ></DT
416 ><DD
417 ><DL
418 ><DT
419 >5.2.1. <A
420 HREF="#AEN687"
421 >Creating [print$]</A
422 ></DT
423 ><DT
424 >5.2.2. <A
425 HREF="#AEN722"
426 >Setting Drivers for Existing Printers</A
427 ></DT
428 ><DT
429 >5.2.3. <A
430 HREF="#AEN739"
431 >Support a large number of printers</A
432 ></DT
433 ><DT
434 >5.2.4. <A
435 HREF="#AEN750"
436 >Adding New Printers via the Windows NT APW</A
437 ></DT
438 ><DT
439 >5.2.5. <A
440 HREF="#AEN775"
441 >Samba and Printer Ports</A
442 ></DT
443 ></DL
444 ></DD
445 ><DT
446 >5.3. <A
447 HREF="#AEN783"
448 >The Imprints Toolset</A
449 ></DT
450 ><DD
451 ><DL
452 ><DT
453 >5.3.1. <A
454 HREF="#AEN787"
455 >What is Imprints?</A
456 ></DT
457 ><DT
458 >5.3.2. <A
459 HREF="#AEN797"
460 >Creating Printer Driver Packages</A
461 ></DT
462 ><DT
463 >5.3.3. <A
464 HREF="#AEN800"
465 >The Imprints server</A
466 ></DT
467 ><DT
468 >5.3.4. <A
469 HREF="#AEN804"
470 >The Installation Client</A
471 ></DT
472 ></DL
473 ></DD
474 ><DT
475 >5.4. <A
476 HREF="#AEN826"
477 ><A
478 NAME="MIGRATION"
479 ></A
480 >Migration to from Samba 2.0.x to 2.2.x</A
481 ></DT
482 ></DL
483 ></DD
484 ><DT
485 >6. <A
486 HREF="#AEN870"
487 >security = domain in Samba 2.x</A
488 ></DT
489 ><DD
490 ><DL
491 ><DT
492 >6.1. <A
493 HREF="#AEN888"
494 >Joining an NT Domain with Samba 2.2</A
495 ></DT
496 ><DT
497 >6.2. <A
498 HREF="#AEN952"
499 >Samba and Windows 2000 Domains</A
500 ></DT
501 ><DT
502 >6.3. <A
503 HREF="#AEN957"
504 >Why is this better than security = server?</A
505 ></DT
506 ></DL
507 ></DD
508 ><DT
509 >7. <A
510 HREF="#AEN973"
511 >How to Configure Samba 2.2 as a Primary Domain Controller</A
512 ></DT
513 ><DD
514 ><DL
515 ><DT
516 >7.1. <A
517 HREF="#AEN990"
518 >Prerequisite Reading</A
519 ></DT
520 ><DT
521 >7.2. <A
522 HREF="#AEN996"
523 >Background</A
524 ></DT
525 ><DT
526 >7.3. <A
527 HREF="#AEN1036"
528 >Configuring the Samba Domain Controller</A
529 ></DT
530 ><DT
531 >7.4. <A
532 HREF="#AEN1079"
533 >Creating Machine Trust Accounts and Joining Clients 
534 to the Domain</A
535 ></DT
536 ><DD
537 ><DL
538 ><DT
539 >7.4.1. <A
540 HREF="#AEN1093"
541 >Manually creating machine trust accounts</A
542 ></DT
543 ><DT
544 >7.4.2. <A
545 HREF="#AEN1121"
546 >Creating machine trust accounts "on the fly"</A
547 ></DT
548 ></DL
549 ></DD
550 ><DT
551 >7.5. <A
552 HREF="#AEN1132"
553 >Common Problems and Errors</A
554 ></DT
555 ><DT
556 >7.6. <A
557 HREF="#AEN1180"
558 >System Policies and Profiles</A
559 ></DT
560 ><DT
561 >7.7. <A
562 HREF="#AEN1224"
563 >What other help can I get ?</A
564 ></DT
565 ><DT
566 >7.8. <A
567 HREF="#AEN1338"
568 >Domain Control for Windows 9x/ME</A
569 ></DT
570 ><DD
571 ><DL
572 ><DT
573 >7.8.1. <A
574 HREF="#AEN1368"
575 >Configuration Instructions:    Network Logons</A
576 ></DT
577 ><DT
578 >7.8.2. <A
579 HREF="#AEN1402"
580 >Configuration Instructions:    Setting up Roaming User Profiles</A
581 ></DT
582 ><DD
583 ><DL
584 ><DT
585 >7.8.2.1. <A
586 HREF="#AEN1410"
587 >Windows NT Configuration</A
588 ></DT
589 ><DT
590 >7.8.2.2. <A
591 HREF="#AEN1418"
592 >Windows 9X Configuration</A
593 ></DT
594 ><DT
595 >7.8.2.3. <A
596 HREF="#AEN1426"
597 >Win9X and WinNT Configuration</A
598 ></DT
599 ><DT
600 >7.8.2.4. <A
601 HREF="#AEN1433"
602 >Windows 9X Profile Setup</A
603 ></DT
604 ><DT
605 >7.8.2.5. <A
606 HREF="#AEN1469"
607 >Windows NT Workstation 4.0</A
608 ></DT
609 ><DT
610 >7.8.2.6. <A
611 HREF="#AEN1482"
612 >Windows NT Server</A
613 ></DT
614 ><DT
615 >7.8.2.7. <A
616 HREF="#AEN1485"
617 >Sharing Profiles between W95 and NT Workstation 4.0</A
618 ></DT
619 ></DL
620 ></DD
621 ></DL
622 ></DD
623 ><DT
624 >7.9. <A
625 HREF="#AEN1495"
626 >DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
627 ></DT
628 ></DL
629 ></DD
630 ><DT
631 >8. <A
632 HREF="#AEN1520"
633 >Unifed Logons between Windows NT and UNIX using Winbind</A
634 ></DT
635 ><DD
636 ><DL
637 ><DT
638 >8.1. <A
639 HREF="#AEN1538"
640 >Abstract</A
641 ></DT
642 ><DT
643 >8.2. <A
644 HREF="#AEN1542"
645 >Introduction</A
646 ></DT
647 ><DT
648 >8.3. <A
649 HREF="#AEN1555"
650 >What Winbind Provides</A
651 ></DT
652 ><DD
653 ><DL
654 ><DT
655 >8.3.1. <A
656 HREF="#AEN1562"
657 >Target Uses</A
658 ></DT
659 ></DL
660 ></DD
661 ><DT
662 >8.4. <A
663 HREF="#AEN1566"
664 >How Winbind Works</A
665 ></DT
666 ><DD
667 ><DL
668 ><DT
669 >8.4.1. <A
670 HREF="#AEN1571"
671 >Microsoft Remote Procedure Calls</A
672 ></DT
673 ><DT
674 >8.4.2. <A
675 HREF="#AEN1575"
676 >Name Service Switch</A
677 ></DT
678 ><DT
679 >8.4.3. <A
680 HREF="#AEN1591"
681 >Pluggable Authentication Modules</A
682 ></DT
683 ><DT
684 >8.4.4. <A
685 HREF="#AEN1599"
686 >User and Group ID Allocation</A
687 ></DT
688 ><DT
689 >8.4.5. <A
690 HREF="#AEN1603"
691 >Result Caching</A
692 ></DT
693 ></DL
694 ></DD
695 ><DT
696 >8.5. <A
697 HREF="#AEN1606"
698 >Installation and Configuration</A
699 ></DT
700 ><DT
701 >8.6. <A
702 HREF="#AEN1612"
703 >Limitations</A
704 ></DT
705 ><DT
706 >8.7. <A
707 HREF="#AEN1624"
708 >Conclusion</A
709 ></DT
710 ></DL
711 ></DD
712 ><DT
713 >9. <A
714 HREF="#AEN1627"
715 >UNIX Permission Bits and WIndows NT Access Control Lists</A
716 ></DT
717 ><DD
718 ><DL
719 ><DT
720 >9.1. <A
721 HREF="#AEN1638"
722 >Viewing and changing UNIX permissions using the NT 
723         security dialogs</A
724 ></DT
725 ><DT
726 >9.2. <A
727 HREF="#AEN1647"
728 >How to view file security on a Samba share</A
729 ></DT
730 ><DT
731 >9.3. <A
732 HREF="#AEN1658"
733 >Viewing file ownership</A
734 ></DT
735 ><DT
736 >9.4. <A
737 HREF="#AEN1678"
738 >Viewing file or directory permissions</A
739 ></DT
740 ><DD
741 ><DL
742 ><DT
743 >9.4.1. <A
744 HREF="#AEN1693"
745 >File Permissions</A
746 ></DT
747 ><DT
748 >9.4.2. <A
749 HREF="#AEN1707"
750 >Directory Permissions</A
751 ></DT
752 ></DL
753 ></DD
754 ><DT
755 >9.5. <A
756 HREF="#AEN1714"
757 >Modifying file or directory permissions</A
758 ></DT
759 ><DT
760 >9.6. <A
761 HREF="#AEN1736"
762 >Interaction with the standard Samba create mask 
763         parameters</A
764 ></DT
765 ><DT
766 >9.7. <A
767 HREF="#AEN1800"
768 >Interaction with the standard Samba file attribute 
769         mapping</A
770 ></DT
771 ></DL
772 ></DD
773 ><DT
774 >10. <A
775 HREF="#AEN1810"
776 >OS2 Client HOWTO</A
777 ></DT
778 ><DD
779 ><DL
780 ><DT
781 >10.1. <A
782 HREF="#AEN1821"
783 >FAQs</A
784 ></DT
785 ><DD
786 ><DL
787 ><DT
788 >10.1.1. <A
789 HREF="#AEN1823"
790 >How can I configure OS/2 Warp Connect or 
791                 OS/2 Warp 4 as a client for Samba?</A
792 ></DT
793 ><DT
794 >10.1.2. <A
795 HREF="#AEN1838"
796 >How can I configure OS/2 Warp 3 (not Connect), 
797                 OS/2 1.2, 1.3 or 2.x for Samba?</A
798 ></DT
799 ><DT
800 >10.1.3. <A
801 HREF="#AEN1847"
802 >Are there any other issues when OS/2 (any version) 
803                 is used as a client?</A
804 ></DT
805 ><DT
806 >10.1.4. <A
807 HREF="#AEN1851"
808 >How do I get printer driver download working 
809                 for OS/2 clients?</A
810 ></DT
811 ></DL
812 ></DD
813 ></DL
814 ></DD
815 ><DT
816 >11. <A
817 HREF="#AEN1860"
818 >HOWTO Access Samba source code via CVS</A
819 ></DT
820 ><DD
821 ><DL
822 ><DT
823 >11.1. <A
824 HREF="#AEN1867"
825 >Introduction</A
826 ></DT
827 ><DT
828 >11.2. <A
829 HREF="#AEN1872"
830 >CVS Access to samba.org</A
831 ></DT
832 ><DD
833 ><DL
834 ><DT
835 >11.2.1. <A
836 HREF="#AEN1875"
837 >Access via CVSweb</A
838 ></DT
839 ><DT
840 >11.2.2. <A
841 HREF="#AEN1880"
842 >Access via cvs</A
843 ></DT
844 ></DL
845 ></DD
846 ></DL
847 ></DD
848 ></DL
849 ></DIV
850 ><DIV
851 CLASS="CHAPTER"
852 ><HR><H1
853 ><A
854 NAME="AEN15"
855 >Chapter 1. How to Install and Test SAMBA</A
856 ></H1
857 ><DIV
858 CLASS="SECT1"
859 ><H1
860 CLASS="SECT1"
861 ><A
862 NAME="AEN17"
863 >1.1. Step 0: Read the man pages</A
864 ></H1
865 ><P
866 >The man pages distributed with SAMBA contain 
867         lots of useful info that will help to get you started. 
868         If you don't know how to read man pages then try 
869         something like:</P
870 ><P
871 ><TT
872 CLASS="PROMPT"
873 >$ </TT
874 ><TT
875 CLASS="USERINPUT"
876 ><B
877 >nroff -man smbd.8 | more
878         </B
879 ></TT
880 ></P
881 ><P
882 >Other sources of information are pointed to 
883         by the Samba web site,<A
884 HREF="http://www.samba.org/"
885 TARGET="_top"
886 >       http://www.samba.org</A
887 ></P
888 ></DIV
889 ><DIV
890 CLASS="SECT1"
891 ><HR><H1
892 CLASS="SECT1"
893 ><A
894 NAME="AEN25"
895 >1.2. Step 1: Building the Binaries</A
896 ></H1
897 ><P
898 >To do this, first run the program <B
899 CLASS="COMMAND"
900 >./configure
901         </B
902 > in the source directory. This should automatically 
903         configure Samba for your operating system. If you have unusual 
904         needs then you may wish to run</P
905 ><P
906 ><TT
907 CLASS="PROMPT"
908 >root# </TT
909 ><TT
910 CLASS="USERINPUT"
911 ><B
912 >./configure --help
913         </B
914 ></TT
915 ></P
916 ><P
917 >first to see what special options you can enable.
918         Then exectuting</P
919 ><P
920 ><TT
921 CLASS="PROMPT"
922 >root# </TT
923 ><TT
924 CLASS="USERINPUT"
925 ><B
926 >make</B
927 ></TT
928 ></P
929 ><P
930 >will create the binaries. Once it's successfully 
931         compiled you can use </P
932 ><P
933 ><TT
934 CLASS="PROMPT"
935 >root# </TT
936 ><TT
937 CLASS="USERINPUT"
938 ><B
939 >make install</B
940 ></TT
941 ></P
942 ><P
943 >to install the binaries and manual pages. You can 
944         separately install the binaries and/or man pages using</P
945 ><P
946 ><TT
947 CLASS="PROMPT"
948 >root# </TT
949 ><TT
950 CLASS="USERINPUT"
951 ><B
952 >make installbin
953         </B
954 ></TT
955 ></P
956 ><P
957 >and</P
958 ><P
959 ><TT
960 CLASS="PROMPT"
961 >root# </TT
962 ><TT
963 CLASS="USERINPUT"
964 ><B
965 >make installman
966         </B
967 ></TT
968 ></P
969 ><P
970 >Note that if you are upgrading for a previous version 
971         of Samba you might like to know that the old versions of 
972         the binaries will be renamed with a ".old" extension. You 
973         can go back to the previous version with</P
974 ><P
975 ><TT
976 CLASS="PROMPT"
977 >root# </TT
978 ><TT
979 CLASS="USERINPUT"
980 ><B
981 >make revert
982         </B
983 ></TT
984 ></P
985 ><P
986 >if you find this version a disaster!</P
987 ></DIV
988 ><DIV
989 CLASS="SECT1"
990 ><HR><H1
991 CLASS="SECT1"
992 ><A
993 NAME="AEN53"
994 >1.3. Step 2: The all important step</A
995 ></H1
996 ><P
997 >At this stage you must fetch yourself a 
998         coffee or other drink you find stimulating. Getting the rest 
999         of the install right can sometimes be tricky, so you will 
1000         probably need it.</P
1001 ><P
1002 >If you have installed samba before then you can skip 
1003         this step.</P
1004 ></DIV
1005 ><DIV
1006 CLASS="SECT1"
1007 ><HR><H1
1008 CLASS="SECT1"
1009 ><A
1010 NAME="AEN57"
1011 >1.4. Step 3: Create the smb configuration file.</A
1012 ></H1
1013 ><P
1014 >There are sample configuration files in the examples 
1015         subdirectory in the distribution. I suggest you read them 
1016         carefully so you can see how the options go together in 
1017         practice. See the man page for all the options.</P
1018 ><P
1019 >The simplest useful configuration file would be 
1020         something like this:</P
1021 ><P
1022 ><TABLE
1023 BORDER="0"
1024 BGCOLOR="#E0E0E0"
1025 WIDTH="100%"
1026 ><TR
1027 ><TD
1028 ><PRE
1029 CLASS="PROGRAMLISTING"
1030 >       [global]
1031            workgroup = MYGROUP
1032
1033            [homes]
1034               guest ok = no
1035               read only = no
1036         </PRE
1037 ></TD
1038 ></TR
1039 ></TABLE
1040 ></P
1041 ><P
1042 >which would allow connections by anyone with an 
1043         account on the server, using either their login name or 
1044         "homes" as the service name. (Note that I also set the 
1045         workgroup that Samba is part of. See BROWSING.txt for defails)</P
1046 ><P
1047 >Note that <B
1048 CLASS="COMMAND"
1049 >make install</B
1050 > will not install 
1051         a <TT
1052 CLASS="FILENAME"
1053 >smb.conf</TT
1054 > file. You need to create it 
1055         yourself. </P
1056 ><P
1057 >Make sure you put the smb.conf file in the same place 
1058         you specified in the<TT
1059 CLASS="FILENAME"
1060 >Makefile</TT
1061 > (the default is to 
1062         look for it in <TT
1063 CLASS="FILENAME"
1064 >/usr/local/samba/lib/</TT
1065 >).</P
1066 ><P
1067 >For more information about security settings for the 
1068         [homes] share please refer to the document UNIX_SECURITY.txt.</P
1069 ></DIV
1070 ><DIV
1071 CLASS="SECT1"
1072 ><HR><H1
1073 CLASS="SECT1"
1074 ><A
1075 NAME="AEN71"
1076 >1.5. Step 4: Test your config file with 
1077         <B
1078 CLASS="COMMAND"
1079 >testparm</B
1080 ></A
1081 ></H1
1082 ><P
1083 >It's important that you test the validity of your
1084         <TT
1085 CLASS="FILENAME"
1086 >smb.conf</TT
1087 > file using the testparm program. 
1088         If testparm runs OK then it will list the loaded services. If 
1089         not it will give an error message.</P
1090 ><P
1091 >Make sure it runs OK and that the services look 
1092         resonable before proceeding. </P
1093 ></DIV
1094 ><DIV
1095 CLASS="SECT1"
1096 ><HR><H1
1097 CLASS="SECT1"
1098 ><A
1099 NAME="AEN77"
1100 >1.6. Step 5: Starting the smbd and nmbd</A
1101 ></H1
1102 ><P
1103 >You must choose to start smbd and nmbd either 
1104         as daemons or from <B
1105 CLASS="COMMAND"
1106 >inetd</B
1107 >. Don't try 
1108         to do both!  Either you can put them in <TT
1109 CLASS="FILENAME"
1110 >       inetd.conf</TT
1111 > and have them started on demand 
1112         by <B
1113 CLASS="COMMAND"
1114 >inetd</B
1115 >, or you can start them as
1116         daemons either from the command line or in <TT
1117 CLASS="FILENAME"
1118 >       /etc/rc.local</TT
1119 >. See the man pages for details 
1120         on the command line options. Take particular care to read 
1121         the bit about what user you need to be in order to start 
1122         Samba.  In many cases you must be root.</P
1123 ><P
1124 >The main advantage of starting <B
1125 CLASS="COMMAND"
1126 >smbd</B
1127 >
1128         and <B
1129 CLASS="COMMAND"
1130 >nmbd</B
1131 > as a daemon is that they will 
1132         respond slightly more quickly to an initial connection
1133         request. This is, however, unlikely to be a problem.</P
1134 ><DIV
1135 CLASS="SECT2"
1136 ><HR><H2
1137 CLASS="SECT2"
1138 ><A
1139 NAME="AEN87"
1140 >1.6.1. Step 5a: Starting from inetd.conf</A
1141 ></H2
1142 ><P
1143 >NOTE; The following will be different if 
1144                 you use NIS or NIS+ to distributed services maps.</P
1145 ><P
1146 >Look at your <TT
1147 CLASS="FILENAME"
1148 >/etc/services</TT
1149 >. 
1150                 What is defined at port 139/tcp. If nothing is defined 
1151                 then add a line like this:</P
1152 ><P
1153 ><TT
1154 CLASS="USERINPUT"
1155 ><B
1156 >netbios-ssn     139/tcp</B
1157 ></TT
1158 ></P
1159 ><P
1160 >similarly for 137/udp you should have an entry like:</P
1161 ><P
1162 ><TT
1163 CLASS="USERINPUT"
1164 ><B
1165 >netbios-ns     137/udp</B
1166 ></TT
1167 ></P
1168 ><P
1169 >Next edit your <TT
1170 CLASS="FILENAME"
1171 >/etc/inetd.conf</TT
1172
1173                 and add two lines something like this:</P
1174 ><P
1175 ><TABLE
1176 BORDER="0"
1177 BGCOLOR="#E0E0E0"
1178 WIDTH="100%"
1179 ><TR
1180 ><TD
1181 ><PRE
1182 CLASS="PROGRAMLISTING"
1183 >               netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd 
1184                 netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd 
1185                 </PRE
1186 ></TD
1187 ></TR
1188 ></TABLE
1189 ></P
1190 ><P
1191 >The exact syntax of <TT
1192 CLASS="FILENAME"
1193 >/etc/inetd.conf</TT
1194
1195                 varies between unixes. Look at the other entries in inetd.conf 
1196                 for a guide.</P
1197 ><P
1198 >NOTE: Some unixes already have entries like netbios_ns 
1199                 (note the underscore) in <TT
1200 CLASS="FILENAME"
1201 >/etc/services</TT
1202 >. 
1203                 You must either edit <TT
1204 CLASS="FILENAME"
1205 >/etc/services</TT
1206 > or
1207                 <TT
1208 CLASS="FILENAME"
1209 >/etc/inetd.conf</TT
1210 > to make them consistant.</P
1211 ><P
1212 >NOTE: On many systems you may need to use the 
1213                 "interfaces" option in smb.conf to specify the IP address 
1214                 and netmask of your interfaces. Run <B
1215 CLASS="COMMAND"
1216 >ifconfig</B
1217
1218                 as root if you don't know what the broadcast is for your
1219                 net. <B
1220 CLASS="COMMAND"
1221 >nmbd</B
1222 > tries to determine it at run 
1223                 time, but fails on somunixes. See the section on "testing nmbd" 
1224                 for a method of finding if you need to do this.</P
1225 ><P
1226 >!!!WARNING!!! Many unixes only accept around 5 
1227                 parameters on the command line in <TT
1228 CLASS="FILENAME"
1229 >inetd.conf</TT
1230 >. 
1231                 This means you shouldn't use spaces between the options and 
1232                 arguments, or you should use a script, and start the script 
1233                 from <B
1234 CLASS="COMMAND"
1235 >inetd</B
1236 >.</P
1237 ><P
1238 >Restart <B
1239 CLASS="COMMAND"
1240 >inetd</B
1241 >, perhaps just send 
1242                 it a HUP. If you have installed an earlier version of <B
1243 CLASS="COMMAND"
1244 >               nmbd</B
1245 > then you may need to kill nmbd as well.</P
1246 ></DIV
1247 ><DIV
1248 CLASS="SECT2"
1249 ><HR><H2
1250 CLASS="SECT2"
1251 ><A
1252 NAME="AEN116"
1253 >1.6.2. Step 5b. Alternative: starting it as a daemon</A
1254 ></H2
1255 ><P
1256 >To start the server as a daemon you should create 
1257                 a script something like this one, perhaps calling 
1258                 it <TT
1259 CLASS="FILENAME"
1260 >startsmb</TT
1261 >.</P
1262 ><P
1263 ><TABLE
1264 BORDER="0"
1265 BGCOLOR="#E0E0E0"
1266 WIDTH="100%"
1267 ><TR
1268 ><TD
1269 ><PRE
1270 CLASS="PROGRAMLISTING"
1271 >               #!/bin/sh
1272                 /usr/local/samba/bin/smbd -D 
1273                 /usr/local/samba/bin/nmbd -D 
1274                 </PRE
1275 ></TD
1276 ></TR
1277 ></TABLE
1278 ></P
1279 ><P
1280 >then make it executable with <B
1281 CLASS="COMMAND"
1282 >chmod 
1283                 +x startsmb</B
1284 ></P
1285 ><P
1286 >You can then run <B
1287 CLASS="COMMAND"
1288 >startsmb</B
1289 > by 
1290                 hand or execute it from <TT
1291 CLASS="FILENAME"
1292 >/etc/rc.local</TT
1293 >
1294                 </P
1295 ><P
1296 >To kill it send a kill signal to the processes 
1297                 <B
1298 CLASS="COMMAND"
1299 >nmbd</B
1300 > and <B
1301 CLASS="COMMAND"
1302 >smbd</B
1303 >.</P
1304 ><P
1305 >NOTE: If you use the SVR4 style init system then 
1306                 you may like to look at the <TT
1307 CLASS="FILENAME"
1308 >examples/svr4-startup</TT
1309 >
1310                 script to make Samba fit into that system.</P
1311 ></DIV
1312 ></DIV
1313 ><DIV
1314 CLASS="SECT1"
1315 ><HR><H1
1316 CLASS="SECT1"
1317 ><A
1318 NAME="AEN132"
1319 >1.7. Step 6: Try listing the shares available on your 
1320         server</A
1321 ></H1
1322 ><P
1323 ><TT
1324 CLASS="PROMPT"
1325 >$ </TT
1326 ><TT
1327 CLASS="USERINPUT"
1328 ><B
1329 >smbclient -L 
1330         <TT
1331 CLASS="REPLACEABLE"
1332 ><I
1333 >yourhostname</I
1334 ></TT
1335 ></B
1336 ></TT
1337 ></P
1338 ><P
1339 >Your should get back a list of shares available on 
1340         your server. If you don't then something is incorrectly setup. 
1341         Note that this method can also be used to see what shares 
1342         are available on other LanManager clients (such as WfWg).</P
1343 ><P
1344 >If you choose user level security then you may find 
1345         that Samba requests a password before it will list the shares. 
1346         See the <B
1347 CLASS="COMMAND"
1348 >smbclient</B
1349 > man page for details. (you 
1350         can force it to list the shares without a password by
1351         adding the option -U% to the command line. This will not work 
1352         with non-Samba servers)</P
1353 ></DIV
1354 ><DIV
1355 CLASS="SECT1"
1356 ><HR><H1
1357 CLASS="SECT1"
1358 ><A
1359 NAME="AEN141"
1360 >1.8. Step 7: Try connecting with the unix client</A
1361 ></H1
1362 ><P
1363 ><TT
1364 CLASS="PROMPT"
1365 >$ </TT
1366 ><TT
1367 CLASS="USERINPUT"
1368 ><B
1369 >smbclient <TT
1370 CLASS="REPLACEABLE"
1371 ><I
1372 >       //yourhostname/aservice</I
1373 ></TT
1374 ></B
1375 ></TT
1376 ></P
1377 ><P
1378 >Typically the <TT
1379 CLASS="REPLACEABLE"
1380 ><I
1381 >yourhostname</I
1382 ></TT
1383
1384         would be the name of the host where you installed <B
1385 CLASS="COMMAND"
1386 >       smbd</B
1387 >. The <TT
1388 CLASS="REPLACEABLE"
1389 ><I
1390 >aservice</I
1391 ></TT
1392 > is 
1393         any service you have defined in the <TT
1394 CLASS="FILENAME"
1395 >smb.conf</TT
1396
1397         file. Try your user name if you just have a [homes] section
1398         in <TT
1399 CLASS="FILENAME"
1400 >smb.conf</TT
1401 >.</P
1402 ><P
1403 >For example if your unix host is bambi and your login 
1404         name is fred you would type:</P
1405 ><P
1406 ><TT
1407 CLASS="PROMPT"
1408 >$ </TT
1409 ><TT
1410 CLASS="USERINPUT"
1411 ><B
1412 >smbclient //bambi/fred
1413         </B
1414 ></TT
1415 ></P
1416 ></DIV
1417 ><DIV
1418 CLASS="SECT1"
1419 ><HR><H1
1420 CLASS="SECT1"
1421 ><A
1422 NAME="AEN157"
1423 >1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, 
1424         Win2k, OS/2, etc... client</A
1425 ></H1
1426 ><P
1427 >Try mounting disks. eg:</P
1428 ><P
1429 ><TT
1430 CLASS="PROMPT"
1431 >C:\WINDOWS\&#62; </TT
1432 ><TT
1433 CLASS="USERINPUT"
1434 ><B
1435 >net use d: \\servername\service
1436         </B
1437 ></TT
1438 ></P
1439 ><P
1440 >Try printing. eg:</P
1441 ><P
1442 ><TT
1443 CLASS="PROMPT"
1444 >C:\WINDOWS\&#62; </TT
1445 ><TT
1446 CLASS="USERINPUT"
1447 ><B
1448 >net use lpt1:
1449         \\servername\spoolservice</B
1450 ></TT
1451 ></P
1452 ><P
1453 ><TT
1454 CLASS="PROMPT"
1455 >C:\WINDOWS\&#62; </TT
1456 ><TT
1457 CLASS="USERINPUT"
1458 ><B
1459 >print filename
1460         </B
1461 ></TT
1462 ></P
1463 ><P
1464 >Celebrate, or send me a bug report!</P
1465 ></DIV
1466 ><DIV
1467 CLASS="SECT1"
1468 ><HR><H1
1469 CLASS="SECT1"
1470 ><A
1471 NAME="AEN171"
1472 >1.10. What If Things Don't Work?</A
1473 ></H1
1474 ><P
1475 >If nothing works and you start to think "who wrote 
1476         this pile of trash" then I suggest you do step 2 again (and 
1477         again) till you calm down.</P
1478 ><P
1479 >Then you might read the file DIAGNOSIS.txt and the 
1480         FAQ. If you are still stuck then try the mailing list or 
1481         newsgroup (look in the README for details). Samba has been 
1482         successfully installed at thousands of sites worldwide, so maybe 
1483         someone else has hit your problem and has overcome it. You could 
1484         also use the WWW site to scan back issues of the samba-digest.</P
1485 ><P
1486 >When you fix the problem PLEASE send me some updates to the
1487         documentation (or source code) so that the next person will find it
1488         easier. </P
1489 ><DIV
1490 CLASS="SECT2"
1491 ><HR><H2
1492 CLASS="SECT2"
1493 ><A
1494 NAME="AEN176"
1495 >1.10.1. Diagnosing Problems</A
1496 ></H2
1497 ><P
1498 >If you have instalation problems then go to 
1499                 <TT
1500 CLASS="FILENAME"
1501 >DIAGNOSIS.txt</TT
1502 > to try to find the 
1503                 problem.</P
1504 ></DIV
1505 ><DIV
1506 CLASS="SECT2"
1507 ><HR><H2
1508 CLASS="SECT2"
1509 ><A
1510 NAME="AEN180"
1511 >1.10.2. Scope IDs</A
1512 ></H2
1513 ><P
1514 >By default Samba uses a blank scope ID. This means 
1515                 all your windows boxes must also have a blank scope ID. 
1516                 If you really want to use a non-blank scope ID then you will 
1517                 need to use the -i &#60;scope&#62; option to nmbd, smbd, and 
1518                 smbclient. All your PCs will need to have the same setting for 
1519                 this to work. I do not recommend scope IDs.</P
1520 ></DIV
1521 ><DIV
1522 CLASS="SECT2"
1523 ><HR><H2
1524 CLASS="SECT2"
1525 ><A
1526 NAME="AEN183"
1527 >1.10.3. Choosing the Protocol Level</A
1528 ></H2
1529 ><P
1530 >The SMB protocol has many dialects. Currently 
1531                 Samba supports 5, called CORE, COREPLUS, LANMAN1, 
1532                 LANMAN2 and NT1.</P
1533 ><P
1534 >You can choose what maximum protocol to support 
1535                 in the <TT
1536 CLASS="FILENAME"
1537 >smb.conf</TT
1538 > file. The default is 
1539                 NT1 and that is the best for the vast majority of sites.</P
1540 ><P
1541 >In older versions of Samba you may have found it 
1542                 necessary to use COREPLUS. The limitations that led to 
1543                 this have mostly been fixed. It is now less likely that you 
1544                 will want to use less than LANMAN1. The only remaining advantage 
1545                 of COREPLUS is that for some obscure reason WfWg preserves 
1546                 the case of passwords in this protocol, whereas under LANMAN1, 
1547                 LANMAN2 or NT1 it uppercases all passwords before sending them,
1548                 forcing you to use the "password level=" option in some cases.</P
1549 ><P
1550 >The main advantage of LANMAN2 and NT1 is support for 
1551                 long filenames with some clients (eg: smbclient, Windows NT 
1552                 or Win95). </P
1553 ><P
1554 >See the smb.conf(5) manual page for more details.</P
1555 ><P
1556 >Note: To support print queue reporting you may find 
1557                 that you have to use TCP/IP as the default protocol under 
1558                 WfWg. For some reason if you leave Netbeui as the default 
1559                 it may break the print queue reporting on some systems. 
1560                 It is presumably a WfWg bug.</P
1561 ></DIV
1562 ><DIV
1563 CLASS="SECT2"
1564 ><HR><H2
1565 CLASS="SECT2"
1566 ><A
1567 NAME="AEN192"
1568 >1.10.4. Printing from UNIX to a Client PC</A
1569 ></H2
1570 ><P
1571 >To use a printer that is available via a smb-based 
1572                 server from a unix host you will need to compile the 
1573                 smbclient program. You then need to install the script 
1574                 "smbprint". Read the instruction in smbprint for more details.
1575                 </P
1576 ><P
1577 >There is also a SYSV style script that does much 
1578                 the same thing called smbprint.sysv. It contains instructions.</P
1579 ></DIV
1580 ><DIV
1581 CLASS="SECT2"
1582 ><HR><H2
1583 CLASS="SECT2"
1584 ><A
1585 NAME="AEN196"
1586 >1.10.5. Locking</A
1587 ></H2
1588 ><P
1589 >One area which sometimes causes trouble is locking.</P
1590 ><P
1591 >There are two types of locking which need to be 
1592                 performed by a SMB server. The first is "record locking" 
1593                 which allows a client to lock a range of bytes in a open file. 
1594                 The second is the "deny modes" that are specified when a file 
1595                 is open.</P
1596 ><P
1597 >Samba supports "record locking" using the fcntl() unix system
1598                 call. This is often implemented using rpc calls to a rpc.lockd process
1599                 running on the system that owns the filesystem. Unfortunately many
1600                 rpc.lockd implementations are very buggy, particularly when made to
1601                 talk to versions from other vendors. It is not uncommon for the
1602                 rpc.lockd to crash.</P
1603 ><P
1604 >There is also a problem translating the 32 bit lock 
1605                 requests generated by PC clients to 31 bit requests supported 
1606                 by most unixes. Unfortunately many PC applications (typically 
1607                 OLE2 applications) use byte ranges with the top bit set 
1608                 as semaphore sets. Samba attempts translation to support 
1609                 these types of applications, and the translation has proved 
1610                 to be quite successful.</P
1611 ><P
1612 >Strictly a SMB server should check for locks before 
1613                 every read and write call on a file. Unfortunately with the 
1614                 way fcntl() works this can be slow and may overstress the 
1615                 rpc.lockd. It is also almost always unnecessary as clients 
1616                 are supposed to independently make locking calls before reads 
1617                 and writes anyway if locking is important to them. By default 
1618                 Samba only makes locking calls when explicitly asked
1619                 to by a client, but if you set "strict locking = yes" then it will
1620                 make lock checking calls on every read and write. </P
1621 ><P
1622 >You can also disable by range locking completely 
1623                 using "locking = no". This is useful for those shares that 
1624                 don't support locking or don't need it (such as cdroms). In 
1625                 this case Samba fakes the return codes of locking calls to 
1626                 tell clients that everything is OK.</P
1627 ><P
1628 >The second class of locking is the "deny modes". These 
1629                 are set by an application when it opens a file to determine 
1630                 what types of access should be allowed simultaneously with 
1631                 its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE 
1632                 or DENY_ALL. There are also special compatability modes called 
1633                 DENY_FCB and  DENY_DOS.</P
1634 ><P
1635 >You can disable share modes using "share modes = no". 
1636                 This may be useful on a heavily loaded server as the share 
1637                 modes code is very slow. See also the FAST_SHARE_MODES 
1638                 option in the Makefile for a way to do full share modes 
1639                 very fast using shared memory (if your OS supports it).</P
1640 ></DIV
1641 ><DIV
1642 CLASS="SECT2"
1643 ><HR><H2
1644 CLASS="SECT2"
1645 ><A
1646 NAME="AEN206"
1647 >1.10.6. Mapping Usernames</A
1648 ></H2
1649 ><P
1650 >If you have different usernames on the PCs and 
1651                 the unix server then take a look at the "username map" option. 
1652                 See the smb.conf man page for details.</P
1653 ></DIV
1654 ><DIV
1655 CLASS="SECT2"
1656 ><HR><H2
1657 CLASS="SECT2"
1658 ><A
1659 NAME="AEN209"
1660 >1.10.7. Other Character Sets</A
1661 ></H2
1662 ><P
1663 >If you have problems using filenames with accented 
1664                 characters in them (like the German, French or Scandinavian 
1665                 character sets) then I recommmend you look at the "valid chars" 
1666                 option in smb.conf and also take a look at the validchars 
1667                 package in the examples directory.</P
1668 ></DIV
1669 ></DIV
1670 ></DIV
1671 ><DIV
1672 CLASS="CHAPTER"
1673 ><HR><H1
1674 ><A
1675 NAME="AEN212"
1676 >Chapter 2. Integrating MS Windows networks with Samba</A
1677 ></H1
1678 ><DIV
1679 CLASS="SECT1"
1680 ><H1
1681 CLASS="SECT1"
1682 ><A
1683 NAME="AEN223"
1684 >2.1. Agenda</A
1685 ></H1
1686 ><P
1687 >To identify the key functional mechanisms of MS Windows networking 
1688 to enable the deployment of Samba as a means of extending and/or 
1689 replacing MS Windows NT/2000 technology.</P
1690 ><P
1691 >We will examine:</P
1692 ><P
1693 ></P
1694 ><OL
1695 TYPE="1"
1696 ><LI
1697 ><P
1698 >Name resolution in a pure Unix/Linux TCP/IP 
1699         environment
1700         </P
1701 ></LI
1702 ><LI
1703 ><P
1704 >Name resolution as used within MS Windows 
1705         networking
1706         </P
1707 ></LI
1708 ><LI
1709 ><P
1710 >How browsing functions and how to deploy stable 
1711         and dependable browsing using Samba
1712         </P
1713 ></LI
1714 ><LI
1715 ><P
1716 >MS Windows security options and how to 
1717         configure Samba for seemless integration
1718         </P
1719 ></LI
1720 ><LI
1721 ><P
1722 >Configuration of Samba as:</P
1723 ><P
1724 ></P
1725 ><OL
1726 TYPE="a"
1727 ><LI
1728 ><P
1729 >A stand-alone server</P
1730 ></LI
1731 ><LI
1732 ><P
1733 >An MS Windows NT 3.x/4.0 security domain member
1734                 </P
1735 ></LI
1736 ><LI
1737 ><P
1738 >An alternative to an MS Windows NT 3.x/4.0 Domain Controller
1739                 </P
1740 ></LI
1741 ></OL
1742 ></LI
1743 ></OL
1744 ></DIV
1745 ><DIV
1746 CLASS="SECT1"
1747 ><HR><H1
1748 CLASS="SECT1"
1749 ><A
1750 NAME="AEN245"
1751 >2.2. Name Resolution in a pure Unix/Linux world</A
1752 ></H1
1753 ><P
1754 >The key configuration files : </P
1755 ><DIV
1756 CLASS="SECT2"
1757 ><HR><H2
1758 CLASS="SECT2"
1759 ><A
1760 NAME="AEN248"
1761 >2.2.1. <TT
1762 CLASS="FILENAME"
1763 >/etc/hosts</TT
1764 ></A
1765 ></H2
1766 ><P
1767 >Contains a static list of IP Addresses and names.
1768 eg:</P
1769 ><P
1770 ><TABLE
1771 BORDER="0"
1772 BGCOLOR="#E0E0E0"
1773 WIDTH="100%"
1774 ><TR
1775 ><TD
1776 ><PRE
1777 CLASS="PROGRAMLISTING"
1778 >       127.0.0.1       localhost localhost.localdomain
1779         192.168.1.1     bigbox.caldera.com      bigbox  alias4box</PRE
1780 ></TD
1781 ></TR
1782 ></TABLE
1783 ></P
1784 ><P
1785 >The purpose of <TT
1786 CLASS="FILENAME"
1787 >/etc/hosts</TT
1788 > is to provide a 
1789 name resolution mechanism so that uses do not need to remember 
1790 IP addresses.</P
1791 ><P
1792 >Network packets that are sent over the physical network transport 
1793 layer communicate not via IP addresses but rather using the Media 
1794 Access Control address, or MAC address. IP Addresses are currently 
1795 32 bits in length and are typically presented as four (4) decimal 
1796 numbers that are separated by a dot (or period). eg: 168.192.1.1</P
1797 ><P
1798 >MAC Addresses use 48 bits (or 6 bytes) and are typically represented 
1799 as two digit hexadecimal numbers separated by colons. eg: 
1800 40:8e:0a:12:34:56</P
1801 ><P
1802 >Every network interfrace must have an MAC address. Associated with 
1803 a MAC address there may be one or more IP addresses. There is NO 
1804 relationship between an IP address and a MAC address, all such assignments 
1805 are arbitary or discretionary in nature. At the most basic level all 
1806 network communications takes place using MAC addressing. Since MAC 
1807 addresses must be globally unique, and generally remains fixed for 
1808 any particular interface, the assignment of an IP address makes sense 
1809 from a network management perspective. More than one IP address can 
1810 be assigned per MAC address. One address must be the primary IP address, 
1811 this is the address that will be returned in the ARP reply.</P
1812 ><P
1813 >When a user or a process wants to communicate with another machine 
1814 the protocol implementation ensures that the "machine name" or "host 
1815 name" is resolved to an IP address in a manner that is controlled 
1816 by the TCP/IP configuration control files. The file 
1817 <TT
1818 CLASS="FILENAME"
1819 >/etc/hosts</TT
1820 > is one such file.</P
1821 ><P
1822 >When the IP address of the destination interface has been 
1823 determined a protocol called ARP/RARP isused to identify 
1824 the MAC address of the target interface. ARP stands for Address 
1825 Resolution Protocol, and is a broadcast oriented method that 
1826 uses UDP (User Datagram Protocol) to send a request to all 
1827 interfaces on the local network segment using the all 1's MAC 
1828 address. Network interfaces are programmed to respond to two 
1829 MAC addresses only; their own unique address and the address 
1830 ff:ff:ff:ff:ff:ff. The reply packet from an ARP request will 
1831 contain the MAC address and the primary IP address for each 
1832 interface.</P
1833 ><P
1834 >The <TT
1835 CLASS="FILENAME"
1836 >/etc/hosts</TT
1837 > file is foundational to all 
1838 Unix/Linux TCP/IP installations and as a minumum will contain 
1839 the localhost and local network interface IP addresses and the 
1840 primary names by which they are known within the local machine. 
1841 This file helps to prime the pump so that a basic level of name 
1842 resolution can exist before any other method of name resolution 
1843 becomes available.</P
1844 ></DIV
1845 ><DIV
1846 CLASS="SECT2"
1847 ><HR><H2
1848 CLASS="SECT2"
1849 ><A
1850 NAME="AEN264"
1851 >2.2.2. <TT
1852 CLASS="FILENAME"
1853 >/etc/resolv.conf</TT
1854 ></A
1855 ></H2
1856 ><P
1857 >This file tells the name resolution libraries:</P
1858 ><P
1859 ></P
1860 ><UL
1861 ><LI
1862 ><P
1863 >The name of the domain to which the machine 
1864         belongs
1865         </P
1866 ></LI
1867 ><LI
1868 ><P
1869 >The name(s) of any domains that should be 
1870         automatically searched when trying to resolve unqualified 
1871         host names to their IP address
1872         </P
1873 ></LI
1874 ><LI
1875 ><P
1876 >The name or IP address of available Domain 
1877         Name Servers that may be asked to perform name to address 
1878         translation lookups
1879         </P
1880 ></LI
1881 ></UL
1882 ></DIV
1883 ><DIV
1884 CLASS="SECT2"
1885 ><HR><H2
1886 CLASS="SECT2"
1887 ><A
1888 NAME="AEN275"
1889 >2.2.3. <TT
1890 CLASS="FILENAME"
1891 >/etc/host.conf</TT
1892 ></A
1893 ></H2
1894 ><P
1895 ><TT
1896 CLASS="FILENAME"
1897 >/etc/host.conf</TT
1898 > is the primary means by 
1899 which the setting in /etc/resolv.conf may be affected. It is a 
1900 critical configuration file.  This file controls the order by 
1901 which name resolution may procede. The typical structure is:</P
1902 ><P
1903 ><TABLE
1904 BORDER="0"
1905 BGCOLOR="#E0E0E0"
1906 WIDTH="100%"
1907 ><TR
1908 ><TD
1909 ><PRE
1910 CLASS="PROGRAMLISTING"
1911 >       order hosts,bind
1912         multi on</PRE
1913 ></TD
1914 ></TR
1915 ></TABLE
1916 ></P
1917 ><P
1918 >then both addresses should be returned. Please refer to the 
1919 man page for host.conf for further details.</P
1920 ></DIV
1921 ><DIV
1922 CLASS="SECT2"
1923 ><HR><H2
1924 CLASS="SECT2"
1925 ><A
1926 NAME="AEN283"
1927 >2.2.4. <TT
1928 CLASS="FILENAME"
1929 >/etc/nsswitch.conf</TT
1930 ></A
1931 ></H2
1932 ><P
1933 >This file controls the actual name resolution targets. The 
1934 file typically has resolver object specifications as follows:</P
1935 ><P
1936 ><TABLE
1937 BORDER="0"
1938 BGCOLOR="#E0E0E0"
1939 WIDTH="100%"
1940 ><TR
1941 ><TD
1942 ><PRE
1943 CLASS="PROGRAMLISTING"
1944 >       # /etc/nsswitch.conf
1945         #
1946         # Name Service Switch configuration file.
1947         #
1948
1949         passwd:         compat
1950         # Alternative entries for password authentication are:
1951         # passwd:       compat files nis ldap winbind
1952         shadow:         compat
1953         group:          compat
1954
1955         hosts:          files nis dns
1956         # Alternative entries for host name resolution are:
1957         # hosts:        files dns nis nis+ hesoid db compat ldap wins
1958         networks:       nis files dns
1959
1960         ethers:         nis files
1961         protocols:      nis files
1962         rpc:            nis files
1963         services:       nis files</PRE
1964 ></TD
1965 ></TR
1966 ></TABLE
1967 ></P
1968 ><P
1969 >Of course, each of these mechanisms requires that the appropriate 
1970 facilities and/or services are correctly configured.</P
1971 ><P
1972 >It should be noted that unless a network request/message must be 
1973 sent, TCP/IP networks are silent. All TCP/IP communications assumes a 
1974 principal of speaking only when necessary.</P
1975 ><P
1976 >Samba version 2.2.0 will add Linux support for extensions to 
1977 the name service switch infrastructure so that linux clients will 
1978 be able to obtain resolution of MS Windows NetBIOS names to IP 
1979 Addresses. To gain this functionality Samba needs to be compiled 
1980 with appropriate arguments to the make command (ie: <B
1981 CLASS="COMMAND"
1982 >make 
1983 nsswitch/libnss_wins.so</B
1984 >). The resulting library should 
1985 then be installed in the <TT
1986 CLASS="FILENAME"
1987 >/lib</TT
1988 > directory and 
1989 the "wins" parameter needs to be added to the "hosts:" line in 
1990 the <TT
1991 CLASS="FILENAME"
1992 >/etc/nsswitch.conf</TT
1993 > file. At this point it 
1994 will be possible to ping any MS Windows machine by it's NetBIOS 
1995 machine name, so long as that machine is within the workgroup to 
1996 which both the samba machine and the MS Windows machine belong.</P
1997 ></DIV
1998 ></DIV
1999 ><DIV
2000 CLASS="SECT1"
2001 ><HR><H1
2002 CLASS="SECT1"
2003 ><A
2004 NAME="AEN295"
2005 >2.3. Name resolution as used within MS Windows networking</A
2006 ></H1
2007 ><P
2008 >MS Windows networking is predicated about the name each machine 
2009 is given. This name is known variously (and inconsistently) as 
2010 the "computer name", "machine name", "networking name", "netbios name", 
2011 "SMB name". All terms mean the same thing with the exception of 
2012 "netbios name" which can apply also to the name of the workgroup or the 
2013 domain name. The terms "workgroup" and "domain" are really just a 
2014 simply name with which the machine is associated. All NetBIOS names 
2015 are exactly 16 characters in length. The 16th character is reserved. 
2016 It is used to store a one byte value that indicates service level 
2017 information for the NetBIOS name that is registered. A NetBIOS machine 
2018 name is therefore registered for each service type that is provided by 
2019 the client/server.</P
2020 ><P
2021 >The following are typical NetBIOS name/service type registrations:</P
2022 ><P
2023 ><TABLE
2024 BORDER="0"
2025 BGCOLOR="#E0E0E0"
2026 WIDTH="100%"
2027 ><TR
2028 ><TD
2029 ><PRE
2030 CLASS="PROGRAMLISTING"
2031 >       Unique NetBIOS Names:
2032                 MACHINENAME&#60;00&#62; = Server Service is running on MACHINENAME
2033                 MACHINENAME&#60;03&#62; = Generic Machine Name (NetBIOS name)
2034                 MACHINENAME&#60;20&#62; = LanMan Server service is running on MACHINENAME
2035                 WORKGROUP&#60;1b&#62; = Domain Master Browser
2036
2037         Group Names:
2038                 WORKGROUP&#60;03&#62; = Generic Name registered by all members of WORKGROUP
2039                 WORKGROUP&#60;1c&#62; = Domain Controllers / Netlogon Servers
2040                 WORKGROUP&#60;1d&#62; = Local Master Browsers
2041                 WORKGROUP&#60;1e&#62; = Internet Name Resolvers</PRE
2042 ></TD
2043 ></TR
2044 ></TABLE
2045 ></P
2046 ><P
2047 >It should be noted that all NetBIOS machines register their own 
2048 names as per the above. This is in vast contrast to TCP/IP 
2049 installations where traditionally the system administrator will 
2050 determine in the /etc/hosts or in the DNS database what names 
2051 are associated with each IP address.</P
2052 ><P
2053 >One further point of clarification should be noted, the <TT
2054 CLASS="FILENAME"
2055 >/etc/hosts</TT
2056
2057 file and the DNS records do not provide the NetBIOS name type information 
2058 that MS Windows clients depend on to locate the type of service that may 
2059 be needed. An example of this is what happens when an MS Windows client 
2060 wants to locate a domain logon server. It find this service and the IP 
2061 address of a server that provides it by performing a lookup (via a 
2062 NetBIOS broadcast) for enumeration of all machines that have 
2063 registered the name type *&#60;1c&#62;. A logon request is then sent to each 
2064 IP address that is returned in the enumerated list of IP addresses. Which 
2065 ever machine first replies then ends up providing the logon services.</P
2066 ><P
2067 >The name "workgroup" or "domain" really can be confusing since these 
2068 have the added significance of indicating what is the security 
2069 architecture of the MS Windows network. The term "workgroup" indicates 
2070 that the primary nature of the network environment is that of a 
2071 peer-to-peer design. In a WORKGROUP all machines are responsible for 
2072 their own security, and generally such security is limited to use of 
2073 just a password (known as SHARE MORE security). In most situations 
2074 with peer-to-peer networking the users who control their own machines 
2075 will simply opt to have no security at all. It is possible to have 
2076 USER MODE security in a WORKGROUP environment, thus requiring use 
2077 of a user name and a matching password.</P
2078 ><P
2079 >MS Windows networking is thus predetermined to use machine names 
2080 for all local and remote machine message passing. The protocol used is 
2081 called Server Message Block (SMB) and this is implemented using 
2082 the NetBIOS protocol (Network Basic Input Output System). NetBIOS can 
2083 be encapsulated using LLC (Logical Link Control) protocol - in which case 
2084 the resulting protocol is called NetBEUI (Network Basic Extended User 
2085 Interface). NetBIOS can also be run over IPX (Internetworking Packet 
2086 Exchange) protocol as used by Novell NetWare, and it can be run 
2087 over TCP/IP protocols - in which case the resulting protocol is called 
2088 NBT or NetBT, the NetBIOS over TCP/IP.</P
2089 ><P
2090 >MS Windows machines use a complex array of name resolution mechanisms. 
2091 Since we are primarily concerned with TCP/IP this demonstration is 
2092 limited to this area.</P
2093 ><DIV
2094 CLASS="SECT2"
2095 ><HR><H2
2096 CLASS="SECT2"
2097 ><A
2098 NAME="AEN307"
2099 >2.3.1. The NetBIOS Name Cache</A
2100 ></H2
2101 ><P
2102 >All MS Windows machines employ an in memory buffer in which is 
2103 stored the NetBIOS names and their IP addresses for all external 
2104 machines that that the local machine has communicated with over the 
2105 past 10-15 minutes. It is more efficient to obtain an IP address 
2106 for a machine from the local cache than it is to go through all the 
2107 configured name resolution mechanisms.</P
2108 ><P
2109 >If a machine whose name is in the local name cache has been shut 
2110 down before the name had been expired and flushed from the cache, then 
2111 an attempt to exchange a message with that machine will be subject 
2112 to time-out delays. ie: It's name is in the cache, so a name resolution 
2113 lookup will succeed, but the machine can not respond. This can be 
2114 frustrating for users - but it is a characteristic of the protocol.</P
2115 ><P
2116 >The MS Windows utility that allows examination of the NetBIOS 
2117 name cache is called "nbtstat". The Samba equivalent of this 
2118 is called "nmblookup".</P
2119 ></DIV
2120 ><DIV
2121 CLASS="SECT2"
2122 ><HR><H2
2123 CLASS="SECT2"
2124 ><A
2125 NAME="AEN312"
2126 >2.3.2. The LMHOSTS file</A
2127 ></H2
2128 ><P
2129 >This file is usually located in MS Windows NT 4.0 or 
2130 2000 in <TT
2131 CLASS="FILENAME"
2132 >C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
2133 > and contains 
2134 the IP Address and the machine name in matched pairs. The 
2135 <TT
2136 CLASS="FILENAME"
2137 >LMHOSTS</TT
2138 > file performs NetBIOS name 
2139 to IP address mapping oriented.</P
2140 ><P
2141 >It typically looks like:</P
2142 ><P
2143 ><TABLE
2144 BORDER="0"
2145 BGCOLOR="#E0E0E0"
2146 WIDTH="100%"
2147 ><TR
2148 ><TD
2149 ><PRE
2150 CLASS="PROGRAMLISTING"
2151 >       # Copyright (c) 1998 Microsoft Corp.
2152         #
2153         # This is a sample LMHOSTS file used by the Microsoft Wins Client (NetBIOS
2154         # over TCP/IP) stack for Windows98
2155         #
2156         # This file contains the mappings of IP addresses to NT computernames
2157         # (NetBIOS) names.  Each entry should be kept on an individual line.
2158         # The IP address should be placed in the first column followed by the
2159         # corresponding computername. The address and the comptername
2160         # should be separated by at least one space or tab. The "#" character
2161         # is generally used to denote the start of a comment (see the exceptions
2162         # below).
2163         #
2164         # This file is compatible with Microsoft LAN Manager 2.x TCP/IP lmhosts
2165         # files and offers the following extensions:
2166         #
2167         #      #PRE
2168         #      #DOM:&#60;domain&#62;
2169         #      #INCLUDE &#60;filename&#62;
2170         #      #BEGIN_ALTERNATE
2171         #      #END_ALTERNATE
2172         #      \0xnn (non-printing character support)
2173         #
2174         # Following any entry in the file with the characters "#PRE" will cause
2175         # the entry to be preloaded into the name cache. By default, entries are
2176         # not preloaded, but are parsed only after dynamic name resolution fails.
2177         #
2178         # Following an entry with the "#DOM:&#60;domain&#62;" tag will associate the
2179         # entry with the domain specified by &#60;domain&#62;. This affects how the
2180         # browser and logon services behave in TCP/IP environments. To preload
2181         # the host name associated with #DOM entry, it is necessary to also add a
2182         # #PRE to the line. The &#60;domain&#62; is always preloaded although it will not
2183         # be shown when the name cache is viewed.
2184         #
2185         # Specifying "#INCLUDE &#60;filename&#62;" will force the RFC NetBIOS (NBT)
2186         # software to seek the specified &#60;filename&#62; and parse it as if it were
2187         # local. &#60;filename&#62; is generally a UNC-based name, allowing a
2188         # centralized lmhosts file to be maintained on a server.
2189         # It is ALWAYS necessary to provide a mapping for the IP address of the
2190         # server prior to the #INCLUDE. This mapping must use the #PRE directive.
2191         # In addtion the share "public" in the example below must be in the
2192         # LanManServer list of "NullSessionShares" in order for client machines to
2193         # be able to read the lmhosts file successfully. This key is under
2194         # \machine\system\currentcontrolset\services\lanmanserver\parameters\nullsessionshares
2195         # in the registry. Simply add "public" to the list found there.
2196         #
2197         # The #BEGIN_ and #END_ALTERNATE keywords allow multiple #INCLUDE
2198         # statements to be grouped together. Any single successful include
2199         # will cause the group to succeed.
2200         #
2201         # Finally, non-printing characters can be embedded in mappings by
2202         # first surrounding the NetBIOS name in quotations, then using the
2203         # \0xnn notation to specify a hex value for a non-printing character.
2204         #
2205         # The following example illustrates all of these extensions:
2206         #
2207         # 102.54.94.97     rhino         #PRE #DOM:networking  #net group's DC
2208         # 102.54.94.102    "appname  \0x14"                    #special app server
2209         # 102.54.94.123    popular            #PRE             #source server
2210         # 102.54.94.117    localsrv           #PRE             #needed for the include
2211         #
2212         # #BEGIN_ALTERNATE
2213         # #INCLUDE \\localsrv\public\lmhosts
2214         # #INCLUDE \\rhino\public\lmhosts
2215         # #END_ALTERNATE
2216         #
2217         # In the above example, the "appname" server contains a special
2218         # character in its name, the "popular" and "localsrv" server names are
2219         # preloaded, and the "rhino" server name is specified so it can be used
2220         # to later #INCLUDE a centrally maintained lmhosts file if the "localsrv"
2221         # system is unavailable.
2222         #
2223         # Note that the whole file is parsed including comments on each lookup,
2224         # so keeping the number of comments to a minimum will improve performance.
2225         # Therefore it is not advisable to simply add lmhosts file entries onto the
2226         # end of this file.</PRE
2227 ></TD
2228 ></TR
2229 ></TABLE
2230 ></P
2231 ></DIV
2232 ><DIV
2233 CLASS="SECT2"
2234 ><HR><H2
2235 CLASS="SECT2"
2236 ><A
2237 NAME="AEN320"
2238 >2.3.3. HOSTS file</A
2239 ></H2
2240 ><P
2241 >This file is usually located in MS Windows NT 4.0 or 2000 in 
2242 <TT
2243 CLASS="FILENAME"
2244 >C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
2245 > and contains 
2246 the IP Address and the IP hostname in matched pairs. It can be 
2247 used by the name resolution infrastructure in MS Windows, depending 
2248 on how the TCP/IP environment is configured. This file is in 
2249 every way the equivalent of the Unix/Linux <TT
2250 CLASS="FILENAME"
2251 >/etc/hosts</TT
2252 > file.</P
2253 ></DIV
2254 ><DIV
2255 CLASS="SECT2"
2256 ><HR><H2
2257 CLASS="SECT2"
2258 ><A
2259 NAME="AEN325"
2260 >2.3.4. DNS Lookup</A
2261 ></H2
2262 ><P
2263 >This capability is configured in the TCP/IP setup area in the network 
2264 configuration facility. If enabled an elaborate name resolution sequence 
2265 is followed the precise nature of which isdependant on what the NetBIOS 
2266 Node Type parameter is configured to. A Node Type of 0 means use 
2267 NetBIOS broadcast (over UDP broadcast) is first used if the name 
2268 that is the subject of a name lookup is not found in the NetBIOS name 
2269 cache. If that fails then DNS, HOSTS and LMHOSTS are checked. If set to 
2270 Node Type 8, then a NetBIOS Unicast (over UDP Unicast) is sent to the 
2271 WINS Server to obtain a lookup before DNS, HOSTS, LMHOSTS, or broadcast 
2272 lookup is used.</P
2273 ></DIV
2274 ><DIV
2275 CLASS="SECT2"
2276 ><HR><H2
2277 CLASS="SECT2"
2278 ><A
2279 NAME="AEN328"
2280 >2.3.5. WINS Lookup</A
2281 ></H2
2282 ><P
2283 >Refer to above details for section <EM
2284 >DNS Lookups</EM
2285 >. A 
2286 WINS (Windows Internet Name Server) service is the equivaent of the 
2287 rfc1001/1002 specified NBNS (NetBIOS Name Server). A WINS server stores 
2288 the names and IP addresses that are registered by a Windows client 
2289 if the TCP/IP setup has been given at least one WINS Server IP Address.</P
2290 ><P
2291 >To configure Samba to be a WINS server the following parameter needs 
2292 to be added to the <TT
2293 CLASS="FILENAME"
2294 >smb.conf</TT
2295 > file:</P
2296 ><P
2297 ><TABLE
2298 BORDER="0"
2299 BGCOLOR="#E0E0E0"
2300 WIDTH="100%"
2301 ><TR
2302 ><TD
2303 ><PRE
2304 CLASS="PROGRAMLISTING"
2305 >       wins support = Yes</PRE
2306 ></TD
2307 ></TR
2308 ></TABLE
2309 ></P
2310 ><P
2311 >To configure Samba to use a WINS server the following parameters are 
2312 needed in the smb.conf file:</P
2313 ><P
2314 ><TABLE
2315 BORDER="0"
2316 BGCOLOR="#E0E0E0"
2317 WIDTH="100%"
2318 ><TR
2319 ><TD
2320 ><PRE
2321 CLASS="PROGRAMLISTING"
2322 >       wins support = No
2323         wins server = <TT
2324 CLASS="REPLACEABLE"
2325 ><I
2326 >xxx.xxx.xxx.xxx</I
2327 ></TT
2328 ></PRE
2329 ></TD
2330 ></TR
2331 ></TABLE
2332 ></P
2333 ><P
2334 >where <TT
2335 CLASS="REPLACEABLE"
2336 ><I
2337 >xxx.xxx.xxx.xxx</I
2338 ></TT
2339 > is the IP address 
2340 of the WINS server.</P
2341 ></DIV
2342 ></DIV
2343 ><DIV
2344 CLASS="SECT1"
2345 ><HR><H1
2346 CLASS="SECT1"
2347 ><A
2348 NAME="AEN342"
2349 >2.4. How browsing functions and how to deploy stable and 
2350 dependable browsing using Samba</A
2351 ></H1
2352 ><P
2353 >As stated above, MS Windows machines register their NetBIOS names 
2354 (ie: the machine name for each service type in operation) on start 
2355 up. Also, as stated above, the exact method by which this name registration 
2356 takes place is determined by whether or not the MS Windows client/server 
2357 has been given a WINS server address, whether or not LMHOSTS lookup 
2358 is enabled, or if DNS for NetBIOS name resolution is enabled, etc.</P
2359 ><P
2360 >In the case where there is no WINS server all name registrations as 
2361 well as name lookups are done by UDP broadcast. This isolates name 
2362 resolution to the local subnet, unless LMHOSTS is used to list all 
2363 names and IP addresses. In such situations Samba provides a means by 
2364 which the samba server name may be forcibly injected into the browse 
2365 list of a remote MS Windows network (using the "remote announce" parameter).</P
2366 ><P
2367 >Where a WINS server is used, the MS Windows client will use UDP 
2368 unicast to register with the WINS server. Such packets can be routed 
2369 and thus WINS allows name resolution to function across routed networks.</P
2370 ><P
2371 >During the startup process an election will take place to create a 
2372 local master browser if one does not already exist. On each NetBIOS network 
2373 one machine will be elected to function as the domain master browser. This 
2374 domain browsing has nothing to do with MS security domain control. 
2375 Instead, the domain master browser serves the role of contacting each local 
2376 master browser (found by asking WINS or from LMHOSTS) and exchanging browse 
2377 list contents. This way every master browser will eventually obtain a complete 
2378 list of all machines that are on the network. Every 11-15 minutes an election 
2379 is held to determine which machine will be the master browser. By nature of 
2380 the election criteria used, the machine with the highest uptime, or the 
2381 most senior protocol version, or other criteria, will win the election 
2382 as domain master browser.</P
2383 ><P
2384 >Clients wishing to browse the network make use of this list, but also depend 
2385 on the availability of correct name resolution to the respective IP 
2386 address/addresses. </P
2387 ><P
2388 >Any configuration that breaks name resolution and/or browsing intrinsics 
2389 will annoy users because they will have to put up with protracted 
2390 inability to use the network services.</P
2391 ><P
2392 >Samba supports a feature that allows forced synchonisation 
2393 of browse lists across routed networks using the "remote 
2394 browse sync" parameter in the smb.conf file. This causes Samba 
2395 to contact the local master browser on a remote network and 
2396 to request browse list synchronisation. This effectively bridges 
2397 two networks that are separated by routers. The two remote 
2398 networks may use either broadcast based name resolution or WINS 
2399 based name resolution, but it should be noted that the "remote 
2400 browse sync" parameter provides browse list synchronisation - and 
2401 that is distinct from name to address resolution, in other 
2402 words, for cross subnet browsing to function correctly it is 
2403 essential that a name to address resolution mechanism be provided. 
2404 This mechanism could be via DNS, <TT
2405 CLASS="FILENAME"
2406 >/etc/hosts</TT
2407 >, 
2408 and so on.</P
2409 ></DIV
2410 ><DIV
2411 CLASS="SECT1"
2412 ><HR><H1
2413 CLASS="SECT1"
2414 ><A
2415 NAME="AEN352"
2416 >2.5. MS Windows security options and how to configure 
2417 Samba for seemless integration</A
2418 ></H1
2419 ><P
2420 >MS Windows clients may use encrypted passwords alone, or encrypted 
2421 as well as plain text passwords in the authentication process. It 
2422 should be realized that with the SMB protocol the password is passed 
2423 over the network either in plain text or encrypted. When encrypted 
2424 passwords are used a password that has been entered by the user is 
2425 encrypted in two ways:</P
2426 ><P
2427 ></P
2428 ><UL
2429 ><LI
2430 ><P
2431 >The case preserved password is encrypted 
2432         using an MD5/DES one way hash
2433         </P
2434 ></LI
2435 ><LI
2436 ><P
2437 >The case is converted to upper case and then 
2438         encrypted using an MD5/DES one way hash</P
2439 ></LI
2440 ></UL
2441 ><P
2442 >Both of these enrypted passwords are sent over the network 
2443 in the one authentication datagram.</P
2444 ><P
2445 >MS Windows 95 pre-service pack 1, MS Windows NT versions 3.x 
2446 and version 4.0 pre-service pack 3 will use either mode of 
2447 password authentication. All versions of MS Windows that follow 
2448 these versions no longer support plain text passwords by default.</P
2449 ><P
2450 >MS Windows clients have a habit of dropping network mappings that 
2451 have been idle for 10 minutes or longer. When the user attempts to 
2452 use the mapped drive connection that has been dropped the SMB protocol 
2453 has a mechanism by which the connection can be re-established using 
2454 a cached copy of the password.</P
2455 ><P
2456 >When Microsoft changed the default password mode, they dropped support for 
2457 caching of the plain text password. This means that when the registry 
2458 parameter is changed to re-enable use of plain text passwords it appears to 
2459 work, but when a dropped mapping attempts to revalidate it will fail if 
2460 the remote authentication server does not support encrypted passwords. 
2461 This means that it is definitely not a good idea to re-enable plain text 
2462 password support in such clients.</P
2463 ><P
2464 >It is recommended that the following parameters be added to the 
2465 smb.conf file:</P
2466 ><P
2467 ><TABLE
2468 BORDER="0"
2469 BGCOLOR="#E0E0E0"
2470 WIDTH="100%"
2471 ><TR
2472 ><TD
2473 ><PRE
2474 CLASS="PROGRAMLISTING"
2475 >       passsword level = 8
2476         username level = 8</PRE
2477 ></TD
2478 ></TR
2479 ></TABLE
2480 ></P
2481 ><P
2482 >these configuration parameters will compensate for the fact that 
2483 in some circumstances MS Windows and MS DOS clients may twiddle the 
2484 password that has been supplied by the user by converting characters to 
2485 upper case. The above entries will try every combination of upper and 
2486 lower case for the first 8 characters. Please refer to the man page 
2487 for smb.conf for more information on use of these parameters.</P
2488 ><P
2489 >The best option to adopt is to enable support for encrypted passwords 
2490 where ever Samba is used. There are three configuration possibilities 
2491 for support of encrypted passwords:</P
2492 ><DIV
2493 CLASS="SECT2"
2494 ><HR><H2
2495 CLASS="SECT2"
2496 ><A
2497 NAME="AEN369"
2498 >2.5.1. Use MS Windows NT as an authentication server</A
2499 ></H2
2500 ><P
2501 >This method involves the additions of the following parameters 
2502 in the smb.conf file:</P
2503 ><P
2504 ><TABLE
2505 BORDER="0"
2506 BGCOLOR="#E0E0E0"
2507 WIDTH="100%"
2508 ><TR
2509 ><TD
2510 ><PRE
2511 CLASS="PROGRAMLISTING"
2512 >       encrypt passwords = Yes
2513         security = server
2514         password server = "NetBIOS_name_of_PDC"</PRE
2515 ></TD
2516 ></TR
2517 ></TABLE
2518 ></P
2519 ><P
2520 >There are two ways of identifying whether or not a username and 
2521 password pair was valid or not. One uses the reply information provided 
2522 as part of the authentication messaging process, the other uses 
2523 just and error code.</P
2524 ><P
2525 >The down-side of this mode of configuration is the fact that 
2526 for security reasons Samba will send the password server a bogus 
2527 username and a bogus password and if the remote server fails to 
2528 reject the username and password pair then an alternative mode 
2529 of identification of validation is used. Where a site uses password 
2530 lock out after a certain number of failed authentication attempts 
2531 this will result in user lockouts.</P
2532 ><P
2533 >Use of this mode of authentication does require there to be 
2534 a standard Unix account for the user, this account can be blocked 
2535 to prevent logons by other than MS Windows clients.</P
2536 ></DIV
2537 ><DIV
2538 CLASS="SECT2"
2539 ><HR><H2
2540 CLASS="SECT2"
2541 ><A
2542 NAME="AEN377"
2543 >2.5.2. Make Samba a member of an MS Windows NT security domain</A
2544 ></H2
2545 ><P
2546 >This method involves additon of the following paramters in the smb.conf file:</P
2547 ><P
2548 ><TABLE
2549 BORDER="0"
2550 BGCOLOR="#E0E0E0"
2551 WIDTH="100%"
2552 ><TR
2553 ><TD
2554 ><PRE
2555 CLASS="PROGRAMLISTING"
2556 >       encrypt passwords = Yes
2557         security = domain
2558         workgroup = "name of NT domain"
2559         password server = *</PRE
2560 ></TD
2561 ></TR
2562 ></TABLE
2563 ></P
2564 ><P
2565 >The use of the "*" argument to "password server" will cause samba 
2566 to locate the domain controller in a way analogous to the way 
2567 this is done within MS Windows NT.</P
2568 ><P
2569 >In order for this method to work the Samba server needs to join the 
2570 MS Windows NT security domain. This is done as follows:</P
2571 ><P
2572 ></P
2573 ><UL
2574 ><LI
2575 ><P
2576 >On the MS Windows NT domain controller using 
2577         the Server Manager add a machine account for the Samba server.
2578         </P
2579 ></LI
2580 ><LI
2581 ><P
2582 >Next, on the Linux system execute: 
2583         <B
2584 CLASS="COMMAND"
2585 >smbpasswd -r PDC_NAME -j DOMAIN_NAME</B
2586 >
2587         </P
2588 ></LI
2589 ></UL
2590 ><P
2591 >Use of this mode of authentication does require there to be 
2592 a standard Unix account for the user, this account can be 
2593 blocked to prevent logons by other than MS Windows clients.</P
2594 ></DIV
2595 ><DIV
2596 CLASS="SECT2"
2597 ><HR><H2
2598 CLASS="SECT2"
2599 ><A
2600 NAME="AEN391"
2601 >2.5.3. Configure Samba as an authentication server</A
2602 ></H2
2603 ><P
2604 >This mode of authentication demands that there be on the 
2605 Unix/Linux system both a Unix style account as well as and 
2606 smbpasswd entry for the user. The Unix system account can be 
2607 locked if required as only the encrypted password will be 
2608 used for SMB client authentication.</P
2609 ><P
2610 >This method involves addition of the following parameters to 
2611 the smb.conf file:</P
2612 ><P
2613 ><TABLE
2614 BORDER="0"
2615 BGCOLOR="#E0E0E0"
2616 WIDTH="100%"
2617 ><TR
2618 ><TD
2619 ><PRE
2620 CLASS="PROGRAMLISTING"
2621 >       encrypt passwords = Yes
2622         security = user</PRE
2623 ></TD
2624 ></TR
2625 ></TABLE
2626 ></P
2627 ><P
2628 >in order for this method to work a Unix system account needs 
2629 to be created for each user, as well as for each MS Windows NT/2000 
2630 machine. The following structure is required.</P
2631 ><DIV
2632 CLASS="SECT3"
2633 ><HR><H3
2634 CLASS="SECT3"
2635 ><A
2636 NAME="AEN398"
2637 >2.5.3.1. Users</A
2638 ></H3
2639 ><P
2640 >A user account that may provide a home directory should be 
2641 created. The following Linux system commands are typical of 
2642 the procedure for creating an account.</P
2643 ><P
2644 ><TABLE
2645 BORDER="0"
2646 BGCOLOR="#E0E0E0"
2647 WIDTH="100%"
2648 ><TR
2649 ><TD
2650 ><PRE
2651 CLASS="PROGRAMLISTING"
2652 >       # useradd -s /bin/bash -d /home/"userid" -m
2653         # passwd "userid"
2654           Enter Password: <TT
2655 CLASS="USERINPUT"
2656 ><B
2657 >pass</B
2658 ></TT
2659 >
2660           
2661         # smbpasswd -a "userid"
2662           Enter Password: <TT
2663 CLASS="USERINPUT"
2664 ><B
2665 >pass</B
2666 ></TT
2667 ></PRE
2668 ></TD
2669 ></TR
2670 ></TABLE
2671 ></P
2672 ></DIV
2673 ><DIV
2674 CLASS="SECT3"
2675 ><HR><H3
2676 CLASS="SECT3"
2677 ><A
2678 NAME="AEN405"
2679 >2.5.3.2. MS Windows NT Machine Accounts</A
2680 ></H3
2681 ><P
2682 >These are required only when Samba is used as a domain 
2683 controller.  Refer to the Samba-PDC-HOWTO for more details.</P
2684 ><P
2685 ><TABLE
2686 BORDER="0"
2687 BGCOLOR="#E0E0E0"
2688 WIDTH="100%"
2689 ><TR
2690 ><TD
2691 ><PRE
2692 CLASS="PROGRAMLISTING"
2693 >       # useradd -a /bin/false -d /dev/null "machine_name"\$
2694         # passwd -l "machine_name"\$
2695         # smbpasswd -a -m "machine_name"</PRE
2696 ></TD
2697 ></TR
2698 ></TABLE
2699 ></P
2700 ></DIV
2701 ></DIV
2702 ></DIV
2703 ><DIV
2704 CLASS="SECT1"
2705 ><HR><H1
2706 CLASS="SECT1"
2707 ><A
2708 NAME="AEN410"
2709 >2.6. Configuration of Samba as ...</A
2710 ></H1
2711 ><P
2712 ></P
2713 ><UL
2714 ><LI
2715 ><P
2716 >A Stand-alone server - No special action is needed 
2717         other than to create user accounts. Stand-alone servers do NOT 
2718         provide network logon services, meaning that machines that use this 
2719         server do NOT perform a domain logon but instead make use only of 
2720         the MS Windows logon which is local to the MS Windows 
2721         workstation/server.
2722         </P
2723 ></LI
2724 ><LI
2725 ><P
2726 >An MS Windows NT 3.x/4.0 security domain member - 
2727         Refer to the previous section(s) above.
2728         </P
2729 ></LI
2730 ><LI
2731 ><P
2732 >An alternative to an MS Windows NT 3.x/4.0 
2733         Domain Controller - In the smb.conf file the following parameters 
2734         should be added:</P
2735 ></LI
2736 ></UL
2737 ><P
2738 ><TABLE
2739 BORDER="0"
2740 BGCOLOR="#E0E0E0"
2741 WIDTH="100%"
2742 ><TR
2743 ><TD
2744 ><PRE
2745 CLASS="PROGRAMLISTING"
2746 >## please refer to the Samba PDC HOWTO chapter later in 
2747 ## this collection for more details
2748 [global]
2749         domain logons = Yes
2750         ; an OS level of 33 or more is recommended
2751         os level = 33
2752
2753         [NETLOGON]
2754                 path = /somewhare/in/file/system
2755                 read only = yes
2756                 available = yes</PRE
2757 ></TD
2758 ></TR
2759 ></TABLE
2760 ></P
2761 ></DIV
2762 ></DIV
2763 ><DIV
2764 CLASS="CHAPTER"
2765 ><HR><H1
2766 ><A
2767 NAME="AEN421"
2768 >Chapter 3. LanMan and NT Password Encryption in Samba 2.x</A
2769 ></H1
2770 ><DIV
2771 CLASS="SECT1"
2772 ><H1
2773 CLASS="SECT1"
2774 ><A
2775 NAME="AEN432"
2776 >3.1. Introduction</A
2777 ></H1
2778 ><P
2779 >With the development of LanManager and Windows NT 
2780         compatible password encryption for Samba, it is now able 
2781         to validate user connections in exactly the same way as 
2782         a LanManager or Windows NT server.</P
2783 ><P
2784 >This document describes how the SMB password encryption 
2785         algorithm works and what issues there are in choosing whether 
2786         you want to use it. You should read it carefully, especially 
2787         the part about security and the "PROS and CONS" section.</P
2788 ></DIV
2789 ><DIV
2790 CLASS="SECT1"
2791 ><HR><H1
2792 CLASS="SECT1"
2793 ><A
2794 NAME="AEN436"
2795 >3.2. How does it work?</A
2796 ></H1
2797 ><P
2798 >LanManager encryption is somewhat similar to UNIX 
2799         password encryption. The server uses a file containing a 
2800         hashed value of a user's password.  This is created by taking 
2801         the user's plaintext password, capitalising it, and either 
2802         truncating to 14 bytes or padding to 14 bytes with null bytes. 
2803         This 14 byte value is used as two 56 bit DES keys to encrypt 
2804         a 'magic' eight byte value, forming a 16 byte value which is 
2805         stored by the server and client. Let this value be known as 
2806         the "hashed password".</P
2807 ><P
2808 >Windows NT encryption is a higher quality mechanism, 
2809         consisting of doing an MD4 hash on a Unicode version of the user's 
2810         password. This also produces a 16 byte hash value that is 
2811         non-reversible.</P
2812 ><P
2813 >When a client (LanManager, Windows for WorkGroups, Windows 
2814         95 or Windows NT) wishes to mount a Samba drive (or use a Samba 
2815         resource), it first requests a connection and negotiates the 
2816         protocol that the client and server will use. In the reply to this 
2817         request the Samba server generates and appends an 8 byte, random 
2818         value - this is stored in the Samba server after the reply is sent 
2819         and is known as the "challenge".  The challenge is different for 
2820         every client connection.</P
2821 ><P
2822 >The client then uses the hashed password (16 byte values 
2823         described above), appended with 5 null bytes, as three 56 bit 
2824         DES keys, each of which is used to encrypt the challenge 8 byte 
2825         value, forming a 24 byte value known as the "response".</P
2826 ><P
2827 >In the SMB call SMBsessionsetupX (when user level security 
2828         is selected) or the call SMBtconX (when share level security is 
2829         selected), the 24 byte response is returned by the client to the 
2830         Samba server.  For Windows NT protocol levels the above calculation 
2831         is done on both hashes of the user's password and both responses are 
2832         returned in the SMB call, giving two 24 byte values.</P
2833 ><P
2834 >The Samba server then reproduces the above calculation, using 
2835         its own stored value of the 16 byte hashed password (read from the 
2836         <TT
2837 CLASS="FILENAME"
2838 >smbpasswd</TT
2839 > file - described later) and the challenge 
2840         value that it kept from the negotiate protocol reply. It then checks 
2841         to see if the 24 byte value it calculates matches the 24 byte value 
2842         returned to it from the client.</P
2843 ><P
2844 >If these values match exactly, then the client knew the 
2845         correct password (or the 16 byte hashed value - see security note 
2846         below) and is thus allowed access. If not, then the client did not 
2847         know the correct password and is denied access.</P
2848 ><P
2849 >Note that the Samba server never knows or stores the cleartext 
2850         of the user's password - just the 16 byte hashed values derived from 
2851         it. Also note that the cleartext password or 16 byte hashed values 
2852         are never transmitted over the network - thus increasing security.</P
2853 ></DIV
2854 ><DIV
2855 CLASS="SECT1"
2856 ><HR><H1
2857 CLASS="SECT1"
2858 ><A
2859 NAME="AEN447"
2860 >3.3. Important Notes About Security</A
2861 ></H1
2862 ><P
2863 >The unix and SMB password encryption techniques seem similar 
2864         on the surface. This similarity is, however, only skin deep. The unix 
2865         scheme typically sends clear text passwords over the nextwork when 
2866         logging in. This is bad. The SMB encryption scheme never sends the 
2867         cleartext password over the network but it does store the 16 byte 
2868         hashed values on disk. This is also bad. Why? Because the 16 byte hashed 
2869         values are a "password equivalent". You cannot derive the user's 
2870         password from them, but they could potentially be used in a modified 
2871         client to gain access to a server. This would require considerable 
2872         technical knowledge on behalf of the attacker but is perfectly possible. 
2873         You should thus treat the smbpasswd file as though it contained the 
2874         cleartext passwords of all your users. Its contents must be kept 
2875         secret, and the file should be protected accordingly.</P
2876 ><P
2877 >Ideally we would like a password scheme which neither requires 
2878         plain text passwords on the net or on disk. Unfortunately this 
2879         is not available as Samba is stuck with being compatible with 
2880         other SMB systems (WinNT, WfWg, Win95 etc). </P
2881 ><DIV
2882 CLASS="WARNING"
2883 ><P
2884 ></P
2885 ><TABLE
2886 CLASS="WARNING"
2887 BORDER="1"
2888 WIDTH="100%"
2889 ><TR
2890 ><TD
2891 ALIGN="CENTER"
2892 ><B
2893 >Warning</B
2894 ></TD
2895 ></TR
2896 ><TR
2897 ><TD
2898 ALIGN="LEFT"
2899 ><P
2900 >Note that Windows NT 4.0 Service pack 3 changed the 
2901                 default for permissible authentication so that plaintext 
2902                 passwords are <EM
2903 >never</EM
2904 > sent over the wire. 
2905                 The solution to this is either to switch to encrypted passwords 
2906                 with Samba or edit the Windows NT registry to re-enable plaintext 
2907                 passwords. See the document WinNT.txt for details on how to do 
2908                 this.</P
2909 ><P
2910 >Other Microsoft operating systems which also exhibit 
2911                 this behavior includes</P
2912 ><P
2913 ></P
2914 ><UL
2915 ><LI
2916 ><P
2917 >MS DOS Network client 3.0 with 
2918                         the basic network redirector installed</P
2919 ></LI
2920 ><LI
2921 ><P
2922 >Windows 95 with the network redirector 
2923                         update installed</P
2924 ></LI
2925 ><LI
2926 ><P
2927 >Windows 98 [se]</P
2928 ></LI
2929 ><LI
2930 ><P
2931 >Windows 2000</P
2932 ></LI
2933 ></UL
2934 ><P
2935 ><EM
2936 >Note :</EM
2937 >All current release of 
2938                 Microsoft SMB/CIFS clients support authentication via the
2939                 SMB Challenge/Response mechanism described here.  Enabling
2940                 clear text authentication does not disable the ability
2941                 of the client to particpate in encrypted authentication.</P
2942 ></TD
2943 ></TR
2944 ></TABLE
2945 ></DIV
2946 ><DIV
2947 CLASS="SECT2"
2948 ><HR><H2
2949 CLASS="SECT2"
2950 ><A
2951 NAME="AEN466"
2952 >3.3.1. Advantages of SMB Encryption</A
2953 ></H2
2954 ><P
2955 ></P
2956 ><UL
2957 ><LI
2958 ><P
2959 >plain text passwords are not passed across 
2960                         the network. Someone using a network sniffer cannot just 
2961                         record passwords going to the SMB server.</P
2962 ></LI
2963 ><LI
2964 ><P
2965 >WinNT doesn't like talking to a server 
2966                         that isn't using SMB encrypted passwords. It will refuse 
2967                         to browse the server if the server is also in user level 
2968                         security mode. It will insist on prompting the user for the 
2969                         password on each connection, which is very annoying. The
2970                         only things you can do to stop this is to use SMB encryption.
2971                         </P
2972 ></LI
2973 ></UL
2974 ></DIV
2975 ><DIV
2976 CLASS="SECT2"
2977 ><HR><H2
2978 CLASS="SECT2"
2979 ><A
2980 NAME="AEN473"
2981 >3.3.2. Advantages of non-encrypted passwords</A
2982 ></H2
2983 ><P
2984 ></P
2985 ><UL
2986 ><LI
2987 ><P
2988 >plain text passwords are not kept 
2989                         on disk. </P
2990 ></LI
2991 ><LI
2992 ><P
2993 >uses same password file as other unix 
2994                         services such as login and ftp</P
2995 ></LI
2996 ><LI
2997 ><P
2998 >you are probably already using other 
2999                         services (such as telnet and ftp) which send plain text 
3000                         passwords over the net, so sending them for SMB isn't 
3001                         such a big deal.</P
3002 ></LI
3003 ></UL
3004 ></DIV
3005 ></DIV
3006 ><DIV
3007 CLASS="SECT1"
3008 ><HR><H1
3009 CLASS="SECT1"
3010 ><A
3011 NAME="AEN482"
3012 >3.4. <A
3013 NAME="SMBPASSWDFILEFORMAT"
3014 ></A
3015 >The smbpasswd file</A
3016 ></H1
3017 ><P
3018 >In order for Samba to participate in the above protocol 
3019         it must be able to look up the 16 byte hashed values given a user name.
3020         Unfortunately, as the UNIX password value is also a one way hash
3021         function (ie. it is impossible to retrieve the cleartext of the user's
3022         password given the UNIX hash of it), a separate password file
3023         containing this 16 byte value must be kept. To minimise problems with
3024         these two password files, getting out of sync, the UNIX <TT
3025 CLASS="FILENAME"
3026 >       /etc/passwd</TT
3027 > and the <TT
3028 CLASS="FILENAME"
3029 >smbpasswd</TT
3030 > file, 
3031         a utility, <B
3032 CLASS="COMMAND"
3033 >mksmbpasswd.sh</B
3034 >, is provided to generate
3035         a smbpasswd file from a UNIX <TT
3036 CLASS="FILENAME"
3037 >/etc/passwd</TT
3038 > file.
3039         </P
3040 ><P
3041 >To generate the smbpasswd file from your <TT
3042 CLASS="FILENAME"
3043 >/etc/passwd
3044         </TT
3045 > file use the following command :</P
3046 ><P
3047 ><TT
3048 CLASS="PROMPT"
3049 >$ </TT
3050 ><TT
3051 CLASS="USERINPUT"
3052 ><B
3053 >cat /etc/passwd | mksmbpasswd.sh
3054         &#62; /usr/local/samba/private/smbpasswd</B
3055 ></TT
3056 ></P
3057 ><P
3058 >If you are running on a system that uses NIS, use</P
3059 ><P
3060 ><TT
3061 CLASS="PROMPT"
3062 >$ </TT
3063 ><TT
3064 CLASS="USERINPUT"
3065 ><B
3066 >ypcat passwd | mksmbpasswd.sh
3067         &#62; /usr/local/samba/private/smbpasswd</B
3068 ></TT
3069 ></P
3070 ><P
3071 >The <B
3072 CLASS="COMMAND"
3073 >mksmbpasswd.sh</B
3074 > program is found in 
3075         the Samba source directory. By default, the smbpasswd file is 
3076         stored in :</P
3077 ><P
3078 ><TT
3079 CLASS="FILENAME"
3080 >/usr/local/samba/private/smbpasswd</TT
3081 ></P
3082 ><P
3083 >The owner of the <TT
3084 CLASS="FILENAME"
3085 >/usr/local/samba/private/</TT
3086
3087         directory should be set to root, and the permissions on it should 
3088         be set to 0500 (<B
3089 CLASS="COMMAND"
3090 >chmod 500 /usr/local/samba/private</B
3091 >).
3092         </P
3093 ><P
3094 >Likewise, the smbpasswd file inside the private directory should 
3095         be owned by root and the permissions on is should be set to 0600
3096         (<B
3097 CLASS="COMMAND"
3098 >chmod 600 smbpasswd</B
3099 >).</P
3100 ><P
3101 >The format of the smbpasswd file is (The line has been 
3102         wrapped here. It should appear as one entry per line in 
3103         your smbpasswd file.)</P
3104 ><P
3105 ><TABLE
3106 BORDER="0"
3107 BGCOLOR="#E0E0E0"
3108 WIDTH="100%"
3109 ><TR
3110 ><TD
3111 ><PRE
3112 CLASS="PROGRAMLISTING"
3113 >username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
3114         [Account type]:LCT-&#60;last-change-time&#62;:Long name
3115         </PRE
3116 ></TD
3117 ></TR
3118 ></TABLE
3119 ></P
3120 ><P
3121 >Although only the <TT
3122 CLASS="REPLACEABLE"
3123 ><I
3124 >username</I
3125 ></TT
3126 >, 
3127         <TT
3128 CLASS="REPLACEABLE"
3129 ><I
3130 >uid</I
3131 ></TT
3132 >, <TT
3133 CLASS="REPLACEABLE"
3134 ><I
3135 >       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</I
3136 ></TT
3137 >,
3138         [<TT
3139 CLASS="REPLACEABLE"
3140 ><I
3141 >Account type</I
3142 ></TT
3143 >] and <TT
3144 CLASS="REPLACEABLE"
3145 ><I
3146 >       last-change-time</I
3147 ></TT
3148 > sections are significant 
3149         and are looked at in the Samba code.</P
3150 ><P
3151 >It is <EM
3152 >VITALLY</EM
3153 > important that there by 32 
3154         'X' characters between the two ':' characters in the XXX sections - 
3155         the smbpasswd and Samba code will fail to validate any entries that 
3156         do not have 32 characters  between ':' characters. The first XXX 
3157         section is for the Lanman password hash, the second is for the 
3158         Windows NT version.</P
3159 ><P
3160 >When the password file is created all users have password entries
3161         consisting of 32 'X' characters. By default this disallows any access
3162         as this user. When a user has a password set, the 'X' characters change
3163         to 32 ascii hexadecimal digits (0-9, A-F). These are an ascii
3164         representation of the 16 byte hashed value of a user's password.</P
3165 ><P
3166 >To set a user to have no password (not recommended), edit the file
3167         using vi, and replace the first 11 characters with the ascii text
3168         <TT
3169 CLASS="CONSTANT"
3170 >"NO PASSWORD"</TT
3171 > (minus the quotes).</P
3172 ><P
3173 >For example, to clear the password for user bob, his smbpasswd file 
3174         entry would look like :</P
3175 ><P
3176 ><TABLE
3177 BORDER="0"
3178 BGCOLOR="#E0E0E0"
3179 WIDTH="100%"
3180 ><TR
3181 ><TD
3182 ><PRE
3183 CLASS="PROGRAMLISTING"
3184 >       bob:100:NO PASSWORDXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:Bob's full name:/bobhome:/bobshell
3185         </PRE
3186 ></TD
3187 ></TR
3188 ></TABLE
3189 ></P
3190 ><P
3191 >If you are allowing users to use the smbpasswd command to set 
3192         their own passwords, you may want to give users NO PASSWORD initially 
3193         so they do not have to enter a previous password when changing to their 
3194         new password (not recommended). In order for you to allow this the
3195         <B
3196 CLASS="COMMAND"
3197 >smbpasswd</B
3198 > program must be able to connect to the 
3199         <B
3200 CLASS="COMMAND"
3201 >smbd</B
3202 > daemon as that user with no password. Enable this 
3203         by adding the line :</P
3204 ><P
3205 ><B
3206 CLASS="COMMAND"
3207 >null passwords = yes</B
3208 ></P
3209 ><P
3210 >to the [global] section of the smb.conf file (this is why 
3211         the above scenario is not recommended). Preferably, allocate your
3212         users a default password to begin with, so you do not have
3213         to enable this on your server.</P
3214 ><P
3215 ><EM
3216 >Note : </EM
3217 >This file should be protected very 
3218         carefully. Anyone with access to this file can (with enough knowledge of 
3219         the protocols) gain access to your SMB server. The file is thus more 
3220         sensitive than a normal unix <TT
3221 CLASS="FILENAME"
3222 >/etc/passwd</TT
3223 > file.</P
3224 ></DIV
3225 ><DIV
3226 CLASS="SECT1"
3227 ><HR><H1
3228 CLASS="SECT1"
3229 ><A
3230 NAME="AEN534"
3231 >3.5. The smbpasswd Command</A
3232 ></H1
3233 ><P
3234 >The smbpasswd command maintains the two 32 byte password fields 
3235         in the smbpasswd file. If you wish to make it similar to the unix 
3236         <B
3237 CLASS="COMMAND"
3238 >passwd</B
3239 > or <B
3240 CLASS="COMMAND"
3241 >yppasswd</B
3242 > programs, 
3243         install it in <TT
3244 CLASS="FILENAME"
3245 >/usr/local/samba/bin/</TT
3246 > (or your 
3247         main Samba binary directory).</P
3248 ><P
3249 >Note that as of Samba 1.9.18p4 this program <EM
3250 >MUST NOT 
3251         BE INSTALLED</EM
3252 > setuid root (the new <B
3253 CLASS="COMMAND"
3254 >smbpasswd</B
3255
3256         code enforces this restriction so it cannot be run this way by 
3257         accident).</P
3258 ><P
3259 ><B
3260 CLASS="COMMAND"
3261 >smbpasswd</B
3262 > now works in a client-server mode 
3263         where it contacts the local smbd to change the user's password on its 
3264         behalf. This has enormous benefits - as follows.</P
3265 ><P
3266 ></P
3267 ><UL
3268 ><LI
3269 ><P
3270 >smbpasswd no longer has to be setuid root - 
3271                 an enormous range of potential security problems is 
3272                 eliminated.</P
3273 ></LI
3274 ><LI
3275 ><P
3276 ><B
3277 CLASS="COMMAND"
3278 >smbpasswd</B
3279 > now has the capability 
3280                 to change passwords on Windows NT servers (this only works when 
3281                 the request is sent to the NT Primary Domain Controller if you 
3282                 are changing an NT Domain user's password).</P
3283 ></LI
3284 ></UL
3285 ><P
3286 >To run smbpasswd as a normal user just type :</P
3287 ><P
3288 ><TT
3289 CLASS="PROMPT"
3290 >$ </TT
3291 ><TT
3292 CLASS="USERINPUT"
3293 ><B
3294 >smbpasswd</B
3295 ></TT
3296 ></P
3297 ><P
3298 ><TT
3299 CLASS="PROMPT"
3300 >Old SMB password: </TT
3301 ><TT
3302 CLASS="USERINPUT"
3303 ><B
3304 >&#60;type old value here - 
3305         or hit return if there was no old password&#62;</B
3306 ></TT
3307 ></P
3308 ><P
3309 ><TT
3310 CLASS="PROMPT"
3311 >New SMB Password: </TT
3312 ><TT
3313 CLASS="USERINPUT"
3314 ><B
3315 >&#60;type new value&#62;
3316         </B
3317 ></TT
3318 ></P
3319 ><P
3320 ><TT
3321 CLASS="PROMPT"
3322 >Repeat New SMB Password: </TT
3323 ><TT
3324 CLASS="USERINPUT"
3325 ><B
3326 >&#60;re-type new value
3327         </B
3328 ></TT
3329 ></P
3330 ><P
3331 >If the old value does not match the current value stored for 
3332         that user, or the two new values do not match each other, then the 
3333         password will not be changed.</P
3334 ><P
3335 >If invoked by an ordinary user it will only allow the user 
3336         to change his or her own Samba password.</P
3337 ><P
3338 >If run by the root user smbpasswd may take an optional 
3339         argument, specifying the user name whose SMB password you wish to 
3340         change.  Note that when run as root smbpasswd does not prompt for 
3341         or check the old password value, thus allowing root to set passwords 
3342         for users who have forgotten their passwords.</P
3343 ><P
3344 ><B
3345 CLASS="COMMAND"
3346 >smbpasswd</B
3347 > is designed to work in the same way 
3348         and be familiar to UNIX users who use the <B
3349 CLASS="COMMAND"
3350 >passwd</B
3351 > or 
3352         <B
3353 CLASS="COMMAND"
3354 >yppasswd</B
3355 > commands.</P
3356 ><P
3357 >For more details on using <B
3358 CLASS="COMMAND"
3359 >smbpasswd</B
3360 > refer 
3361         to the man page which will always be the definitive reference.</P
3362 ></DIV
3363 ><DIV
3364 CLASS="SECT1"
3365 ><HR><H1
3366 CLASS="SECT1"
3367 ><A
3368 NAME="AEN573"
3369 >3.6. Setting up Samba to support LanManager Encryption</A
3370 ></H1
3371 ><P
3372 >This is a very brief description on how to setup samba to 
3373         support password encryption. </P
3374 ><P
3375 ></P
3376 ><OL
3377 TYPE="1"
3378 ><LI
3379 ><P
3380 >compile and install samba as usual</P
3381 ></LI
3382 ><LI
3383 ><P
3384 >enable encrypted passwords in <TT
3385 CLASS="FILENAME"
3386 >               smb.conf</TT
3387 > by adding the line <B
3388 CLASS="COMMAND"
3389 >encrypt 
3390                 passwords = yes</B
3391 > in the [global] section</P
3392 ></LI
3393 ><LI
3394 ><P
3395 >create the initial <TT
3396 CLASS="FILENAME"
3397 >smbpasswd</TT
3398 >
3399                 password file in the place you specified in the Makefile 
3400                 (--prefix=&#60;dir&#62;). See the notes under the <A
3401 HREF="#SMBPASSWDFILEFORMAT"
3402 >The smbpasswd File</A
3403 >
3404                 section earlier in the document for details.</P
3405 ></LI
3406 ></OL
3407 ><P
3408 >Note that you can test things using smbclient.</P
3409 ></DIV
3410 ></DIV
3411 ><DIV
3412 CLASS="CHAPTER"
3413 ><HR><H1
3414 ><A
3415 NAME="AEN588"
3416 >Chapter 4. Hosting a Microsoft Distributed File System tree on Samba</A
3417 ></H1
3418 ><DIV
3419 CLASS="SECT1"
3420 ><H1
3421 CLASS="SECT1"
3422 ><A
3423 NAME="AEN599"
3424 >4.1. Instructions</A
3425 ></H1
3426 ><P
3427 >The Distributed File System (or Dfs) provides a means of 
3428         separating the logical view of files and directories that users 
3429         see from the actual physical locations of these resources on the 
3430         network. It allows for higher availability, smoother storage expansion, 
3431         load balancing etc. For more information about Dfs, refer to  <A
3432 HREF="http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp"
3433 TARGET="_top"
3434 >       Microsoft documentation</A
3435 >. </P
3436 ><P
3437 >This document explains how to host a Dfs tree on a Unix 
3438         machine (for Dfs-aware clients to browse) using Samba.</P
3439 ><P
3440 >To enable SMB-based DFS for Samba, configure it with the 
3441         <TT
3442 CLASS="PARAMETER"
3443 ><I
3444 >--with-msdfs</I
3445 ></TT
3446 > option. Once built, a 
3447         Samba server can be made a Dfs server by setting the global 
3448         boolean <A
3449 HREF="smb.conf.5.html#HOSTMSDFS"
3450 TARGET="_top"
3451 ><TT
3452 CLASS="PARAMETER"
3453 ><I
3454 >       host msdfs</I
3455 ></TT
3456 ></A
3457 > parameter in the <TT
3458 CLASS="FILENAME"
3459 >smb.conf
3460         </TT
3461 > file. You designate a share as a Dfs root using the share 
3462         level boolean <A
3463 HREF="smb.conf.5.html#MSDFSROOT"
3464 TARGET="_top"
3465 ><TT
3466 CLASS="PARAMETER"
3467 ><I
3468 >       msdfs root</I
3469 ></TT
3470 ></A
3471 > parameter. A Dfs root directory on 
3472         Samba hosts Dfs links in the form of symbolic links that point 
3473         to other servers. For example, a symbolic link
3474         <TT
3475 CLASS="FILENAME"
3476 >junction-&#62;msdfs:storage1\share1</TT
3477 > in 
3478         the share directory acts as the Dfs junction. When Dfs-aware 
3479         clients attempt to access the junction link, they are redirected 
3480         to the storage location (in this case, \\storage1\share1).</P
3481 ><P
3482 >Dfs trees on Samba work with all Dfs-aware clients ranging 
3483         from Windows 95 to 2000.</P
3484 ><P
3485 >Here's an example of setting up a Dfs tree on a Samba 
3486         server.</P
3487 ><P
3488 ><TABLE
3489 BORDER="0"
3490 BGCOLOR="#E0E0E0"
3491 WIDTH="100%"
3492 ><TR
3493 ><TD
3494 ><PRE
3495 CLASS="PROGRAMLISTING"
3496 ># The smb.conf file:
3497 [global]
3498         netbios name = SAMBA
3499         host msdfs   = yes
3500
3501 [dfs]
3502         path = /export/dfsroot
3503         msdfs root = yes
3504         </PRE
3505 ></TD
3506 ></TR
3507 ></TABLE
3508 ></P
3509 ><P
3510 >In the /export/dfsroot directory we set up our dfs links to 
3511         other servers on the network.</P
3512 ><P
3513 ><TT
3514 CLASS="PROMPT"
3515 >root# </TT
3516 ><TT
3517 CLASS="USERINPUT"
3518 ><B
3519 >cd /export/dfsroot</B
3520 ></TT
3521 ></P
3522 ><P
3523 ><TT
3524 CLASS="PROMPT"
3525 >root# </TT
3526 ><TT
3527 CLASS="USERINPUT"
3528 ><B
3529 >chown root /export/dfsroot</B
3530 ></TT
3531 ></P
3532 ><P
3533 ><TT
3534 CLASS="PROMPT"
3535 >root# </TT
3536 ><TT
3537 CLASS="USERINPUT"
3538 ><B
3539 >chmod 755 /export/dfsroot</B
3540 ></TT
3541 ></P
3542 ><P
3543 ><TT
3544 CLASS="PROMPT"
3545 >root# </TT
3546 ><TT
3547 CLASS="USERINPUT"
3548 ><B
3549 >ln -s msdfs:storageA\\shareA linka</B
3550 ></TT
3551 ></P
3552 ><P
3553 ><TT
3554 CLASS="PROMPT"
3555 >root# </TT
3556 ><TT
3557 CLASS="USERINPUT"
3558 ><B
3559 >ln -s msdfs:serverB\\share,serverC\\share linkb</B
3560 ></TT
3561 ></P
3562 ><P
3563 >You should set up the permissions and ownership of 
3564         the directory acting as the Dfs root such that only designated 
3565         users can create, delete or modify the msdfs links. Also note 
3566         that symlink names should be all lowercase. This limitation exists 
3567         to have Samba avoid trying all the case combinations to get at 
3568         the link name. Finally set up the symbolic links to point to the 
3569         network shares you want, and start Samba.</P
3570 ><P
3571 >Users on Dfs-aware clients can now browse the Dfs tree 
3572         on the Samba server at \\samba\dfs. Accessing 
3573         links linka or linkb (which appear as directories to the client) 
3574         takes users directly to the appropriate shares on the network.</P
3575 ><DIV
3576 CLASS="SECT2"
3577 ><HR><H2
3578 CLASS="SECT2"
3579 ><A
3580 NAME="AEN634"
3581 >4.1.1. Notes</A
3582 ></H2
3583 ><P
3584 ></P
3585 ><UL
3586 ><LI
3587 ><P
3588 >Windows clients need to be rebooted 
3589                         if a previously mounted non-dfs share is made a dfs 
3590                         root or vice versa. A better way is to introduce a 
3591                         new share and make it the dfs root.</P
3592 ></LI
3593 ><LI
3594 ><P
3595 >Currently there's a restriction that msdfs 
3596                         symlink names should all be lowercase.</P
3597 ></LI
3598 ><LI
3599 ><P
3600 >For security purposes, the directory 
3601                         acting as the root of the Dfs tree should have ownership 
3602                         and permissions set so that only designated users can 
3603                         modify the symbolic links in the directory.</P
3604 ></LI
3605 ></UL
3606 ></DIV
3607 ></DIV
3608 ></DIV
3609 ><DIV
3610 CLASS="CHAPTER"
3611 ><HR><H1
3612 ><A
3613 NAME="AEN643"
3614 >Chapter 5. Printing Support in Samba 2.2.x</A
3615 ></H1
3616 ><DIV
3617 CLASS="SECT1"
3618 ><H1
3619 CLASS="SECT1"
3620 ><A
3621 NAME="AEN654"
3622 >5.1. Introduction</A
3623 ></H1
3624 ><P
3625 >Beginning with the 2.2.0 release, Samba supports 
3626 the native Windows NT printing mechanisms implemented via 
3627 MS-RPC (i.e. the SPOOLSS named pipe).  Previous versions of 
3628 Samba only supported LanMan printing calls.</P
3629 ><P
3630 >The additional functionality provided by the new 
3631 SPOOLSS support includes:</P
3632 ><P
3633 ></P
3634 ><UL
3635 ><LI
3636 ><P
3637 >Support for downloading printer driver 
3638         files to Windows 95/98/NT/2000 clients upon demand.
3639         </P
3640 ></LI
3641 ><LI
3642 ><P
3643 >Uploading of printer drivers via the 
3644         Windows NT Add Printer Wizard (APW) or the 
3645         Imprints tool set (refer to <A
3646 HREF="http://imprints.sourceforge.net"
3647 TARGET="_top"
3648 >http://imprints.sourceforge.net</A
3649 >). 
3650         </P
3651 ></LI
3652 ><LI
3653 ><P
3654 >Support for the native MS-RPC printing 
3655         calls such as StartDocPrinter, EnumJobs(), etc...  (See 
3656         the MSDN documentation at <A
3657 HREF="http://msdn.microsoft.com/"
3658 TARGET="_top"
3659 >http://msdn.microsoft.com/</A
3660
3661         for more information on the Win32 printing API)
3662         </P
3663 ></LI
3664 ><LI
3665 ><P
3666 >Support for NT Access Control Lists (ACL) 
3667         on printer objects</P
3668 ></LI
3669 ><LI
3670 ><P
3671 >Improved support for printer queue manipulation 
3672         through the use of an internal databases for spooled job 
3673         information</P
3674 ></LI
3675 ></UL
3676 ><P
3677 >There has been some initial confusion about what all this means
3678 and whether or not it is a requirement for printer drivers to be 
3679 installed on a Samba host in order to support printing from Windows 
3680 clients.  A bug existed in Samba 2.2.0 which made Windows NT/2000 clients 
3681 require that the Samba server possess a valid driver for the printer.  
3682 This is fixed in Samba 2.2.1 and once again, Windows NT/2000 clients
3683 can use the local APW for installing drivers to be used with a Samba 
3684 served printer.  This is the same behavior exhibited by Windows 9x clients.
3685 As a side note, Samba does not use these drivers in any way to process 
3686 spooled files.  They are utilized entirely by the clients.</P
3687 ><P
3688 >The following MS KB article, may be of some help if you are dealing with
3689 Windows 2000 clients:  <EM
3690 >How to Add Printers with No User 
3691 Interaction in Windows 2000</EM
3692 ></P
3693 ><P
3694 ><A
3695 HREF="http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP"
3696 TARGET="_top"
3697 >http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP</A
3698 ></P
3699 ></DIV
3700 ><DIV
3701 CLASS="SECT1"
3702 ><HR><H1
3703 CLASS="SECT1"
3704 ><A
3705 NAME="AEN676"
3706 >5.2. Configuration</A
3707 ></H1
3708 ><DIV
3709 CLASS="WARNING"
3710 ><P
3711 ></P
3712 ><TABLE
3713 CLASS="WARNING"
3714 BORDER="1"
3715 WIDTH="100%"
3716 ><TR
3717 ><TD
3718 ALIGN="CENTER"
3719 ><B
3720 >[print$] vs. [printer$]</B
3721 ></TD
3722 ></TR
3723 ><TR
3724 ><TD
3725 ALIGN="LEFT"
3726 ><P
3727 >Previous versions of Samba recommended using a share named [printer$].  
3728 This name was taken from the printer$ service created by Windows 9x 
3729 clients when a printer was shared.  Windows 9x printer servers always have 
3730 a printer$ service which provides read-only access via no 
3731 password in order to support printer driver downloads.</P
3732 ><P
3733 >However, the initial implementation allowed for a 
3734 parameter named <TT
3735 CLASS="PARAMETER"
3736 ><I
3737 >printer driver location</I
3738 ></TT
3739
3740 to be used on a per share basis to specify the location of 
3741 the driver files associated with that printer.  Another 
3742 parameter named <TT
3743 CLASS="PARAMETER"
3744 ><I
3745 >printer driver</I
3746 ></TT
3747 > provided 
3748 a means of defining the printer driver name to be sent to 
3749 the client.</P
3750 ><P
3751 >These parameters, including <TT
3752 CLASS="PARAMETER"
3753 ><I
3754 >printer driver
3755 file</I
3756 ></TT
3757 > parameter, are being depreciated and should not 
3758 be used in new installations.  For more information on this change, 
3759 you should refer to the <A
3760 HREF="#MIGRATION"
3761 >Migration section</A
3762 >
3763 of this document.</P
3764 ></TD
3765 ></TR
3766 ></TABLE
3767 ></DIV
3768 ><DIV
3769 CLASS="SECT2"
3770 ><HR><H2
3771 CLASS="SECT2"
3772 ><A
3773 NAME="AEN687"
3774 >5.2.1. Creating [print$]</A
3775 ></H2
3776 ><P
3777 >In order to support the uploading of printer driver 
3778 files, you must first configure a file share named [print$].  
3779 The name of this share is hard coded in Samba's internals so 
3780 the name is very important (print$ is the service used by