acfb1a7a3c172c8d534f18c6e4248d1b6fa5e3ee
[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 >LanMan and NT Password Encryption in Samba 2.x</A
185 ></DT
186 ><DD
187 ><DL
188 ><DT
189 >2.1. <A
190 HREF="#AEN223"
191 >Introduction</A
192 ></DT
193 ><DT
194 >2.2. <A
195 HREF="#AEN227"
196 >How does it work?</A
197 ></DT
198 ><DT
199 >2.3. <A
200 HREF="#AEN238"
201 >Important Notes About Security</A
202 ></DT
203 ><DD
204 ><DL
205 ><DT
206 >2.3.1. <A
207 HREF="#AEN257"
208 >Advantages of SMB Encryption</A
209 ></DT
210 ><DT
211 >2.3.2. <A
212 HREF="#AEN264"
213 >Advantages of non-encrypted passwords</A
214 ></DT
215 ></DL
216 ></DD
217 ><DT
218 >2.4. <A
219 HREF="#AEN273"
220 ><A
221 NAME="SMBPASSWDFILEFORMAT"
222 ></A
223 >The smbpasswd file</A
224 ></DT
225 ><DT
226 >2.5. <A
227 HREF="#AEN325"
228 >The smbpasswd Command</A
229 ></DT
230 ><DT
231 >2.6. <A
232 HREF="#AEN364"
233 >Setting up Samba to support LanManager Encryption</A
234 ></DT
235 ></DL
236 ></DD
237 ><DT
238 >3. <A
239 HREF="#AEN379"
240 >Hosting a Microsoft Distributed File System tree on Samba</A
241 ></DT
242 ><DD
243 ><DL
244 ><DT
245 >3.1. <A
246 HREF="#AEN390"
247 >Instructions</A
248 ></DT
249 ><DD
250 ><DL
251 ><DT
252 >3.1.1. <A
253 HREF="#AEN425"
254 >Notes</A
255 ></DT
256 ></DL
257 ></DD
258 ></DL
259 ></DD
260 ><DT
261 >4. <A
262 HREF="#AEN434"
263 >Printing Support in Samba 2.2.x</A
264 ></DT
265 ><DD
266 ><DL
267 ><DT
268 >4.1. <A
269 HREF="#AEN445"
270 >Introduction</A
271 ></DT
272 ><DT
273 >4.2. <A
274 HREF="#AEN467"
275 >Configuration</A
276 ></DT
277 ><DD
278 ><DL
279 ><DT
280 >4.2.1. <A
281 HREF="#AEN478"
282 >Creating [print$]</A
283 ></DT
284 ><DT
285 >4.2.2. <A
286 HREF="#AEN513"
287 >Setting Drivers for Existing Printers</A
288 ></DT
289 ><DT
290 >4.2.3. <A
291 HREF="#AEN530"
292 >Support a large number of printers</A
293 ></DT
294 ><DT
295 >4.2.4. <A
296 HREF="#AEN541"
297 >Adding New Printers via the Windows NT APW</A
298 ></DT
299 ><DT
300 >4.2.5. <A
301 HREF="#AEN566"
302 >Samba and Printer Ports</A
303 ></DT
304 ></DL
305 ></DD
306 ><DT
307 >4.3. <A
308 HREF="#AEN574"
309 >The Imprints Toolset</A
310 ></DT
311 ><DD
312 ><DL
313 ><DT
314 >4.3.1. <A
315 HREF="#AEN578"
316 >What is Imprints?</A
317 ></DT
318 ><DT
319 >4.3.2. <A
320 HREF="#AEN588"
321 >Creating Printer Driver Packages</A
322 ></DT
323 ><DT
324 >4.3.3. <A
325 HREF="#AEN591"
326 >The Imprints server</A
327 ></DT
328 ><DT
329 >4.3.4. <A
330 HREF="#AEN595"
331 >The Installation Client</A
332 ></DT
333 ></DL
334 ></DD
335 ><DT
336 >4.4. <A
337 HREF="#AEN617"
338 ><A
339 NAME="MIGRATION"
340 ></A
341 >Migration to from Samba 2.0.x to 2.2.x</A
342 ></DT
343 ></DL
344 ></DD
345 ><DT
346 >5. <A
347 HREF="#AEN661"
348 >security = domain in Samba 2.x</A
349 ></DT
350 ><DD
351 ><DL
352 ><DT
353 >5.1. <A
354 HREF="#AEN679"
355 >Joining an NT Domain with Samba 2.2</A
356 ></DT
357 ><DT
358 >5.2. <A
359 HREF="#AEN743"
360 >Samba and Windows 2000 Domains</A
361 ></DT
362 ><DT
363 >5.3. <A
364 HREF="#AEN748"
365 >Why is this better than security = server?</A
366 ></DT
367 ></DL
368 ></DD
369 ><DT
370 >6. <A
371 HREF="#AEN764"
372 >How to Configure Samba 2.2 as a Primary Domain Controller</A
373 ></DT
374 ><DD
375 ><DL
376 ><DT
377 >6.1. <A
378 HREF="#AEN781"
379 >Prerequisite Reading</A
380 ></DT
381 ><DT
382 >6.2. <A
383 HREF="#AEN787"
384 >Background</A
385 ></DT
386 ><DT
387 >6.3. <A
388 HREF="#AEN827"
389 >Configuring the Samba Domain Controller</A
390 ></DT
391 ><DT
392 >6.4. <A
393 HREF="#AEN870"
394 >Creating Machine Trust Accounts and Joining Clients 
395 to the Domain</A
396 ></DT
397 ><DD
398 ><DL
399 ><DT
400 >6.4.1. <A
401 HREF="#AEN884"
402 >Manually creating machine trust accounts</A
403 ></DT
404 ><DT
405 >6.4.2. <A
406 HREF="#AEN912"
407 >Creating machine trust accounts "on the fly"</A
408 ></DT
409 ></DL
410 ></DD
411 ><DT
412 >6.5. <A
413 HREF="#AEN923"
414 >Common Problems and Errors</A
415 ></DT
416 ><DT
417 >6.6. <A
418 HREF="#AEN971"
419 >System Policies and Profiles</A
420 ></DT
421 ><DT
422 >6.7. <A
423 HREF="#AEN1015"
424 >What other help can I get ?</A
425 ></DT
426 ><DT
427 >6.8. <A
428 HREF="#AEN1129"
429 >Domain Control for Windows 9x/ME</A
430 ></DT
431 ><DD
432 ><DL
433 ><DT
434 >6.8.1. <A
435 HREF="#AEN1159"
436 >Configuration Instructions:    Network Logons</A
437 ></DT
438 ><DT
439 >6.8.2. <A
440 HREF="#AEN1193"
441 >Configuration Instructions:    Setting up Roaming User Profiles</A
442 ></DT
443 ><DD
444 ><DL
445 ><DT
446 >6.8.2.1. <A
447 HREF="#AEN1201"
448 >Windows NT Configuration</A
449 ></DT
450 ><DT
451 >6.8.2.2. <A
452 HREF="#AEN1209"
453 >Windows 9X Configuration</A
454 ></DT
455 ><DT
456 >6.8.2.3. <A
457 HREF="#AEN1217"
458 >Win9X and WinNT Configuration</A
459 ></DT
460 ><DT
461 >6.8.2.4. <A
462 HREF="#AEN1224"
463 >Windows 9X Profile Setup</A
464 ></DT
465 ><DT
466 >6.8.2.5. <A
467 HREF="#AEN1260"
468 >Windows NT Workstation 4.0</A
469 ></DT
470 ><DT
471 >6.8.2.6. <A
472 HREF="#AEN1273"
473 >Windows NT Server</A
474 ></DT
475 ><DT
476 >6.8.2.7. <A
477 HREF="#AEN1276"
478 >Sharing Profiles between W95 and NT Workstation 4.0</A
479 ></DT
480 ></DL
481 ></DD
482 ></DL
483 ></DD
484 ><DT
485 >6.9. <A
486 HREF="#AEN1286"
487 >DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
488 ></DT
489 ></DL
490 ></DD
491 ><DT
492 >7. <A
493 HREF="#AEN1311"
494 >Unifed Logons between Windows NT and UNIX using Winbind</A
495 ></DT
496 ><DD
497 ><DL
498 ><DT
499 >7.1. <A
500 HREF="#AEN1329"
501 >Abstract</A
502 ></DT
503 ><DT
504 >7.2. <A
505 HREF="#AEN1333"
506 >Introduction</A
507 ></DT
508 ><DT
509 >7.3. <A
510 HREF="#AEN1346"
511 >What Winbind Provides</A
512 ></DT
513 ><DD
514 ><DL
515 ><DT
516 >7.3.1. <A
517 HREF="#AEN1353"
518 >Target Uses</A
519 ></DT
520 ></DL
521 ></DD
522 ><DT
523 >7.4. <A
524 HREF="#AEN1357"
525 >How Winbind Works</A
526 ></DT
527 ><DD
528 ><DL
529 ><DT
530 >7.4.1. <A
531 HREF="#AEN1362"
532 >Microsoft Remote Procedure Calls</A
533 ></DT
534 ><DT
535 >7.4.2. <A
536 HREF="#AEN1366"
537 >Name Service Switch</A
538 ></DT
539 ><DT
540 >7.4.3. <A
541 HREF="#AEN1382"
542 >Pluggable Authentication Modules</A
543 ></DT
544 ><DT
545 >7.4.4. <A
546 HREF="#AEN1390"
547 >User and Group ID Allocation</A
548 ></DT
549 ><DT
550 >7.4.5. <A
551 HREF="#AEN1394"
552 >Result Caching</A
553 ></DT
554 ></DL
555 ></DD
556 ><DT
557 >7.5. <A
558 HREF="#AEN1397"
559 >Installation and Configuration</A
560 ></DT
561 ><DT
562 >7.6. <A
563 HREF="#AEN1403"
564 >Limitations</A
565 ></DT
566 ><DT
567 >7.7. <A
568 HREF="#AEN1415"
569 >Conclusion</A
570 ></DT
571 ></DL
572 ></DD
573 ><DT
574 >8. <A
575 HREF="#AEN1418"
576 >UNIX Permission Bits and WIndows NT Access Control Lists</A
577 ></DT
578 ><DD
579 ><DL
580 ><DT
581 >8.1. <A
582 HREF="#AEN1429"
583 >Viewing and changing UNIX permissions using the NT 
584         security dialogs</A
585 ></DT
586 ><DT
587 >8.2. <A
588 HREF="#AEN1438"
589 >How to view file security on a Samba share</A
590 ></DT
591 ><DT
592 >8.3. <A
593 HREF="#AEN1449"
594 >Viewing file ownership</A
595 ></DT
596 ><DT
597 >8.4. <A
598 HREF="#AEN1469"
599 >Viewing file or directory permissions</A
600 ></DT
601 ><DD
602 ><DL
603 ><DT
604 >8.4.1. <A
605 HREF="#AEN1484"
606 >File Permissions</A
607 ></DT
608 ><DT
609 >8.4.2. <A
610 HREF="#AEN1498"
611 >Directory Permissions</A
612 ></DT
613 ></DL
614 ></DD
615 ><DT
616 >8.5. <A
617 HREF="#AEN1505"
618 >Modifying file or directory permissions</A
619 ></DT
620 ><DT
621 >8.6. <A
622 HREF="#AEN1527"
623 >Interaction with the standard Samba create mask 
624         parameters</A
625 ></DT
626 ><DT
627 >8.7. <A
628 HREF="#AEN1591"
629 >Interaction with the standard Samba file attribute 
630         mapping</A
631 ></DT
632 ></DL
633 ></DD
634 ><DT
635 >9. <A
636 HREF="#AEN1601"
637 >OS2 Client HOWTO</A
638 ></DT
639 ><DD
640 ><DL
641 ><DT
642 >9.1. <A
643 HREF="#AEN1612"
644 >FAQs</A
645 ></DT
646 ><DD
647 ><DL
648 ><DT
649 >9.1.1. <A
650 HREF="#AEN1614"
651 >How can I configure OS/2 Warp Connect or 
652                 OS/2 Warp 4 as a client for Samba?</A
653 ></DT
654 ><DT
655 >9.1.2. <A
656 HREF="#AEN1629"
657 >How can I configure OS/2 Warp 3 (not Connect), 
658                 OS/2 1.2, 1.3 or 2.x for Samba?</A
659 ></DT
660 ><DT
661 >9.1.3. <A
662 HREF="#AEN1638"
663 >Are there any other issues when OS/2 (any version) 
664                 is used as a client?</A
665 ></DT
666 ><DT
667 >9.1.4. <A
668 HREF="#AEN1642"
669 >How do I get printer driver download working 
670                 for OS/2 clients?</A
671 ></DT
672 ></DL
673 ></DD
674 ></DL
675 ></DD
676 ><DT
677 >10. <A
678 HREF="#AEN1651"
679 >HOWTO Access Samba source code via CVS</A
680 ></DT
681 ><DD
682 ><DL
683 ><DT
684 >10.1. <A
685 HREF="#AEN1658"
686 >Introduction</A
687 ></DT
688 ><DT
689 >10.2. <A
690 HREF="#AEN1663"
691 >CVS Access to samba.org</A
692 ></DT
693 ><DD
694 ><DL
695 ><DT
696 >10.2.1. <A
697 HREF="#AEN1666"
698 >Access via CVSweb</A
699 ></DT
700 ><DT
701 >10.2.2. <A
702 HREF="#AEN1671"
703 >Access via cvs</A
704 ></DT
705 ></DL
706 ></DD
707 ></DL
708 ></DD
709 ></DL
710 ></DIV
711 ><DIV
712 CLASS="CHAPTER"
713 ><HR><H1
714 ><A
715 NAME="AEN15"
716 >Chapter 1. How to Install and Test SAMBA</A
717 ></H1
718 ><DIV
719 CLASS="SECT1"
720 ><H1
721 CLASS="SECT1"
722 ><A
723 NAME="AEN17"
724 >1.1. Step 0: Read the man pages</A
725 ></H1
726 ><P
727 >The man pages distributed with SAMBA contain 
728         lots of useful info that will help to get you started. 
729         If you don't know how to read man pages then try 
730         something like:</P
731 ><P
732 ><TT
733 CLASS="PROMPT"
734 >$ </TT
735 ><TT
736 CLASS="USERINPUT"
737 ><B
738 >nroff -man smbd.8 | more
739         </B
740 ></TT
741 ></P
742 ><P
743 >Other sources of information are pointed to 
744         by the Samba web site,<A
745 HREF="http://www.samba.org/"
746 TARGET="_top"
747 >       http://www.samba.org</A
748 ></P
749 ></DIV
750 ><DIV
751 CLASS="SECT1"
752 ><HR><H1
753 CLASS="SECT1"
754 ><A
755 NAME="AEN25"
756 >1.2. Step 1: Building the Binaries</A
757 ></H1
758 ><P
759 >To do this, first run the program <B
760 CLASS="COMMAND"
761 >./configure
762         </B
763 > in the source directory. This should automatically 
764         configure Samba for your operating system. If you have unusual 
765         needs then you may wish to run</P
766 ><P
767 ><TT
768 CLASS="PROMPT"
769 >root# </TT
770 ><TT
771 CLASS="USERINPUT"
772 ><B
773 >./configure --help
774         </B
775 ></TT
776 ></P
777 ><P
778 >first to see what special options you can enable.
779         Then exectuting</P
780 ><P
781 ><TT
782 CLASS="PROMPT"
783 >root# </TT
784 ><TT
785 CLASS="USERINPUT"
786 ><B
787 >make</B
788 ></TT
789 ></P
790 ><P
791 >will create the binaries. Once it's successfully 
792         compiled you can use </P
793 ><P
794 ><TT
795 CLASS="PROMPT"
796 >root# </TT
797 ><TT
798 CLASS="USERINPUT"
799 ><B
800 >make install</B
801 ></TT
802 ></P
803 ><P
804 >to install the binaries and manual pages. You can 
805         separately install the binaries and/or man pages using</P
806 ><P
807 ><TT
808 CLASS="PROMPT"
809 >root# </TT
810 ><TT
811 CLASS="USERINPUT"
812 ><B
813 >make installbin
814         </B
815 ></TT
816 ></P
817 ><P
818 >and</P
819 ><P
820 ><TT
821 CLASS="PROMPT"
822 >root# </TT
823 ><TT
824 CLASS="USERINPUT"
825 ><B
826 >make installman
827         </B
828 ></TT
829 ></P
830 ><P
831 >Note that if you are upgrading for a previous version 
832         of Samba you might like to know that the old versions of 
833         the binaries will be renamed with a ".old" extension. You 
834         can go back to the previous version with</P
835 ><P
836 ><TT
837 CLASS="PROMPT"
838 >root# </TT
839 ><TT
840 CLASS="USERINPUT"
841 ><B
842 >make revert
843         </B
844 ></TT
845 ></P
846 ><P
847 >if you find this version a disaster!</P
848 ></DIV
849 ><DIV
850 CLASS="SECT1"
851 ><HR><H1
852 CLASS="SECT1"
853 ><A
854 NAME="AEN53"
855 >1.3. Step 2: The all important step</A
856 ></H1
857 ><P
858 >At this stage you must fetch yourself a 
859         coffee or other drink you find stimulating. Getting the rest 
860         of the install right can sometimes be tricky, so you will 
861         probably need it.</P
862 ><P
863 >If you have installed samba before then you can skip 
864         this step.</P
865 ></DIV
866 ><DIV
867 CLASS="SECT1"
868 ><HR><H1
869 CLASS="SECT1"
870 ><A
871 NAME="AEN57"
872 >1.4. Step 3: Create the smb configuration file.</A
873 ></H1
874 ><P
875 >There are sample configuration files in the examples 
876         subdirectory in the distribution. I suggest you read them 
877         carefully so you can see how the options go together in 
878         practice. See the man page for all the options.</P
879 ><P
880 >The simplest useful configuration file would be 
881         something like this:</P
882 ><P
883 ><TABLE
884 BORDER="0"
885 BGCOLOR="#E0E0E0"
886 WIDTH="100%"
887 ><TR
888 ><TD
889 ><PRE
890 CLASS="PROGRAMLISTING"
891 >       [global]
892            workgroup = MYGROUP
893
894            [homes]
895               guest ok = no
896               read only = no
897         </PRE
898 ></TD
899 ></TR
900 ></TABLE
901 ></P
902 ><P
903 >which would allow connections by anyone with an 
904         account on the server, using either their login name or 
905         "homes" as the service name. (Note that I also set the 
906         workgroup that Samba is part of. See BROWSING.txt for defails)</P
907 ><P
908 >Note that <B
909 CLASS="COMMAND"
910 >make install</B
911 > will not install 
912         a <TT
913 CLASS="FILENAME"
914 >smb.conf</TT
915 > file. You need to create it 
916         yourself. </P
917 ><P
918 >Make sure you put the smb.conf file in the same place 
919         you specified in the<TT
920 CLASS="FILENAME"
921 >Makefile</TT
922 > (the default is to 
923         look for it in <TT
924 CLASS="FILENAME"
925 >/usr/local/samba/lib/</TT
926 >).</P
927 ><P
928 >For more information about security settings for the 
929         [homes] share please refer to the document UNIX_SECURITY.txt.</P
930 ></DIV
931 ><DIV
932 CLASS="SECT1"
933 ><HR><H1
934 CLASS="SECT1"
935 ><A
936 NAME="AEN71"
937 >1.5. Step 4: Test your config file with 
938         <B
939 CLASS="COMMAND"
940 >testparm</B
941 ></A
942 ></H1
943 ><P
944 >It's important that you test the validity of your
945         <TT
946 CLASS="FILENAME"
947 >smb.conf</TT
948 > file using the testparm program. 
949         If testparm runs OK then it will list the loaded services. If 
950         not it will give an error message.</P
951 ><P
952 >Make sure it runs OK and that the services look 
953         resonable before proceeding. </P
954 ></DIV
955 ><DIV
956 CLASS="SECT1"
957 ><HR><H1
958 CLASS="SECT1"
959 ><A
960 NAME="AEN77"
961 >1.6. Step 5: Starting the smbd and nmbd</A
962 ></H1
963 ><P
964 >You must choose to start smbd and nmbd either 
965         as daemons or from <B
966 CLASS="COMMAND"
967 >inetd</B
968 >. Don't try 
969         to do both!  Either you can put them in <TT
970 CLASS="FILENAME"
971 >       inetd.conf</TT
972 > and have them started on demand 
973         by <B
974 CLASS="COMMAND"
975 >inetd</B
976 >, or you can start them as
977         daemons either from the command line or in <TT
978 CLASS="FILENAME"
979 >       /etc/rc.local</TT
980 >. See the man pages for details 
981         on the command line options. Take particular care to read 
982         the bit about what user you need to be in order to start 
983         Samba.  In many cases you must be root.</P
984 ><P
985 >The main advantage of starting <B
986 CLASS="COMMAND"
987 >smbd</B
988 >
989         and <B
990 CLASS="COMMAND"
991 >nmbd</B
992 > as a daemon is that they will 
993         respond slightly more quickly to an initial connection
994         request. This is, however, unlikely to be a problem.</P
995 ><DIV
996 CLASS="SECT2"
997 ><HR><H2
998 CLASS="SECT2"
999 ><A
1000 NAME="AEN87"
1001 >1.6.1. Step 5a: Starting from inetd.conf</A
1002 ></H2
1003 ><P
1004 >NOTE; The following will be different if 
1005                 you use NIS or NIS+ to distributed services maps.</P
1006 ><P
1007 >Look at your <TT
1008 CLASS="FILENAME"
1009 >/etc/services</TT
1010 >. 
1011                 What is defined at port 139/tcp. If nothing is defined 
1012                 then add a line like this:</P
1013 ><P
1014 ><TT
1015 CLASS="USERINPUT"
1016 ><B
1017 >netbios-ssn     139/tcp</B
1018 ></TT
1019 ></P
1020 ><P
1021 >similarly for 137/udp you should have an entry like:</P
1022 ><P
1023 ><TT
1024 CLASS="USERINPUT"
1025 ><B
1026 >netbios-ns     137/udp</B
1027 ></TT
1028 ></P
1029 ><P
1030 >Next edit your <TT
1031 CLASS="FILENAME"
1032 >/etc/inetd.conf</TT
1033
1034                 and add two lines something like this:</P
1035 ><P
1036 ><TABLE
1037 BORDER="0"
1038 BGCOLOR="#E0E0E0"
1039 WIDTH="100%"
1040 ><TR
1041 ><TD
1042 ><PRE
1043 CLASS="PROGRAMLISTING"
1044 >               netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd 
1045                 netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd 
1046                 </PRE
1047 ></TD
1048 ></TR
1049 ></TABLE
1050 ></P
1051 ><P
1052 >The exact syntax of <TT
1053 CLASS="FILENAME"
1054 >/etc/inetd.conf</TT
1055
1056                 varies between unixes. Look at the other entries in inetd.conf 
1057                 for a guide.</P
1058 ><P
1059 >NOTE: Some unixes already have entries like netbios_ns 
1060                 (note the underscore) in <TT
1061 CLASS="FILENAME"
1062 >/etc/services</TT
1063 >. 
1064                 You must either edit <TT
1065 CLASS="FILENAME"
1066 >/etc/services</TT
1067 > or
1068                 <TT
1069 CLASS="FILENAME"
1070 >/etc/inetd.conf</TT
1071 > to make them consistant.</P
1072 ><P
1073 >NOTE: On many systems you may need to use the 
1074                 "interfaces" option in smb.conf to specify the IP address 
1075                 and netmask of your interfaces. Run <B
1076 CLASS="COMMAND"
1077 >ifconfig</B
1078
1079                 as root if you don't know what the broadcast is for your
1080                 net. <B
1081 CLASS="COMMAND"
1082 >nmbd</B
1083 > tries to determine it at run 
1084                 time, but fails on somunixes. See the section on "testing nmbd" 
1085                 for a method of finding if you need to do this.</P
1086 ><P
1087 >!!!WARNING!!! Many unixes only accept around 5 
1088                 parameters on the command line in <TT
1089 CLASS="FILENAME"
1090 >inetd.conf</TT
1091 >. 
1092                 This means you shouldn't use spaces between the options and 
1093                 arguments, or you should use a script, and start the script 
1094                 from <B
1095 CLASS="COMMAND"
1096 >inetd</B
1097 >.</P
1098 ><P
1099 >Restart <B
1100 CLASS="COMMAND"
1101 >inetd</B
1102 >, perhaps just send 
1103                 it a HUP. If you have installed an earlier version of <B
1104 CLASS="COMMAND"
1105 >               nmbd</B
1106 > then you may need to kill nmbd as well.</P
1107 ></DIV
1108 ><DIV
1109 CLASS="SECT2"
1110 ><HR><H2
1111 CLASS="SECT2"
1112 ><A
1113 NAME="AEN116"
1114 >1.6.2. Step 5b. Alternative: starting it as a daemon</A
1115 ></H2
1116 ><P
1117 >To start the server as a daemon you should create 
1118                 a script something like this one, perhaps calling 
1119                 it <TT
1120 CLASS="FILENAME"
1121 >startsmb</TT
1122 >.</P
1123 ><P
1124 ><TABLE
1125 BORDER="0"
1126 BGCOLOR="#E0E0E0"
1127 WIDTH="100%"
1128 ><TR
1129 ><TD
1130 ><PRE
1131 CLASS="PROGRAMLISTING"
1132 >               #!/bin/sh
1133                 /usr/local/samba/bin/smbd -D 
1134                 /usr/local/samba/bin/nmbd -D 
1135                 </PRE
1136 ></TD
1137 ></TR
1138 ></TABLE
1139 ></P
1140 ><P
1141 >then make it executable with <B
1142 CLASS="COMMAND"
1143 >chmod 
1144                 +x startsmb</B
1145 ></P
1146 ><P
1147 >You can then run <B
1148 CLASS="COMMAND"
1149 >startsmb</B
1150 > by 
1151                 hand or execute it from <TT
1152 CLASS="FILENAME"
1153 >/etc/rc.local</TT
1154 >
1155                 </P
1156 ><P
1157 >To kill it send a kill signal to the processes 
1158                 <B
1159 CLASS="COMMAND"
1160 >nmbd</B
1161 > and <B
1162 CLASS="COMMAND"
1163 >smbd</B
1164 >.</P
1165 ><P
1166 >NOTE: If you use the SVR4 style init system then 
1167                 you may like to look at the <TT
1168 CLASS="FILENAME"
1169 >examples/svr4-startup</TT
1170 >
1171                 script to make Samba fit into that system.</P
1172 ></DIV
1173 ></DIV
1174 ><DIV
1175 CLASS="SECT1"
1176 ><HR><H1
1177 CLASS="SECT1"
1178 ><A
1179 NAME="AEN132"
1180 >1.7. Step 6: Try listing the shares available on your 
1181         server</A
1182 ></H1
1183 ><P
1184 ><TT
1185 CLASS="PROMPT"
1186 >$ </TT
1187 ><TT
1188 CLASS="USERINPUT"
1189 ><B
1190 >smbclient -L 
1191         <TT
1192 CLASS="REPLACEABLE"
1193 ><I
1194 >yourhostname</I
1195 ></TT
1196 ></B
1197 ></TT
1198 ></P
1199 ><P
1200 >Your should get back a list of shares available on 
1201         your server. If you don't then something is incorrectly setup. 
1202         Note that this method can also be used to see what shares 
1203         are available on other LanManager clients (such as WfWg).</P
1204 ><P
1205 >If you choose user level security then you may find 
1206         that Samba requests a password before it will list the shares. 
1207         See the <B
1208 CLASS="COMMAND"
1209 >smbclient</B
1210 > man page for details. (you 
1211         can force it to list the shares without a password by
1212         adding the option -U% to the command line. This will not work 
1213         with non-Samba servers)</P
1214 ></DIV
1215 ><DIV
1216 CLASS="SECT1"
1217 ><HR><H1
1218 CLASS="SECT1"
1219 ><A
1220 NAME="AEN141"
1221 >1.8. Step 7: Try connecting with the unix client</A
1222 ></H1
1223 ><P
1224 ><TT
1225 CLASS="PROMPT"
1226 >$ </TT
1227 ><TT
1228 CLASS="USERINPUT"
1229 ><B
1230 >smbclient <TT
1231 CLASS="REPLACEABLE"
1232 ><I
1233 >       //yourhostname/aservice</I
1234 ></TT
1235 ></B
1236 ></TT
1237 ></P
1238 ><P
1239 >Typically the <TT
1240 CLASS="REPLACEABLE"
1241 ><I
1242 >yourhostname</I
1243 ></TT
1244
1245         would be the name of the host where you installed <B
1246 CLASS="COMMAND"
1247 >       smbd</B
1248 >. The <TT
1249 CLASS="REPLACEABLE"
1250 ><I
1251 >aservice</I
1252 ></TT
1253 > is 
1254         any service you have defined in the <TT
1255 CLASS="FILENAME"
1256 >smb.conf</TT
1257
1258         file. Try your user name if you just have a [homes] section
1259         in <TT
1260 CLASS="FILENAME"
1261 >smb.conf</TT
1262 >.</P
1263 ><P
1264 >For example if your unix host is bambi and your login 
1265         name is fred you would type:</P
1266 ><P
1267 ><TT
1268 CLASS="PROMPT"
1269 >$ </TT
1270 ><TT
1271 CLASS="USERINPUT"
1272 ><B
1273 >smbclient //bambi/fred
1274         </B
1275 ></TT
1276 ></P
1277 ></DIV
1278 ><DIV
1279 CLASS="SECT1"
1280 ><HR><H1
1281 CLASS="SECT1"
1282 ><A
1283 NAME="AEN157"
1284 >1.9. Step 8: Try connecting from a DOS, WfWg, Win9x, WinNT, 
1285         Win2k, OS/2, etc... client</A
1286 ></H1
1287 ><P
1288 >Try mounting disks. eg:</P
1289 ><P
1290 ><TT
1291 CLASS="PROMPT"
1292 >C:\WINDOWS\&#62; </TT
1293 ><TT
1294 CLASS="USERINPUT"
1295 ><B
1296 >net use d: \\servername\service
1297         </B
1298 ></TT
1299 ></P
1300 ><P
1301 >Try printing. eg:</P
1302 ><P
1303 ><TT
1304 CLASS="PROMPT"
1305 >C:\WINDOWS\&#62; </TT
1306 ><TT
1307 CLASS="USERINPUT"
1308 ><B
1309 >net use lpt1:
1310         \\servername\spoolservice</B
1311 ></TT
1312 ></P
1313 ><P
1314 ><TT
1315 CLASS="PROMPT"
1316 >C:\WINDOWS\&#62; </TT
1317 ><TT
1318 CLASS="USERINPUT"
1319 ><B
1320 >print filename
1321         </B
1322 ></TT
1323 ></P
1324 ><P
1325 >Celebrate, or send me a bug report!</P
1326 ></DIV
1327 ><DIV
1328 CLASS="SECT1"
1329 ><HR><H1
1330 CLASS="SECT1"
1331 ><A
1332 NAME="AEN171"
1333 >1.10. What If Things Don't Work?</A
1334 ></H1
1335 ><P
1336 >If nothing works and you start to think "who wrote 
1337         this pile of trash" then I suggest you do step 2 again (and 
1338         again) till you calm down.</P
1339 ><P
1340 >Then you might read the file DIAGNOSIS.txt and the 
1341         FAQ. If you are still stuck then try the mailing list or 
1342         newsgroup (look in the README for details). Samba has been 
1343         successfully installed at thousands of sites worldwide, so maybe 
1344         someone else has hit your problem and has overcome it. You could 
1345         also use the WWW site to scan back issues of the samba-digest.</P
1346 ><P
1347 >When you fix the problem PLEASE send me some updates to the
1348         documentation (or source code) so that the next person will find it
1349         easier. </P
1350 ><DIV
1351 CLASS="SECT2"
1352 ><HR><H2
1353 CLASS="SECT2"
1354 ><A
1355 NAME="AEN176"
1356 >1.10.1. Diagnosing Problems</A
1357 ></H2
1358 ><P
1359 >If you have instalation problems then go to 
1360                 <TT
1361 CLASS="FILENAME"
1362 >DIAGNOSIS.txt</TT
1363 > to try to find the 
1364                 problem.</P
1365 ></DIV
1366 ><DIV
1367 CLASS="SECT2"
1368 ><HR><H2
1369 CLASS="SECT2"
1370 ><A
1371 NAME="AEN180"
1372 >1.10.2. Scope IDs</A
1373 ></H2
1374 ><P
1375 >By default Samba uses a blank scope ID. This means 
1376                 all your windows boxes must also have a blank scope ID. 
1377                 If you really want to use a non-blank scope ID then you will 
1378                 need to use the -i &#60;scope&#62; option to nmbd, smbd, and 
1379                 smbclient. All your PCs will need to have the same setting for 
1380                 this to work. I do not recommend scope IDs.</P
1381 ></DIV
1382 ><DIV
1383 CLASS="SECT2"
1384 ><HR><H2
1385 CLASS="SECT2"
1386 ><A
1387 NAME="AEN183"
1388 >1.10.3. Choosing the Protocol Level</A
1389 ></H2
1390 ><P
1391 >The SMB protocol has many dialects. Currently 
1392                 Samba supports 5, called CORE, COREPLUS, LANMAN1, 
1393                 LANMAN2 and NT1.</P
1394 ><P
1395 >You can choose what maximum protocol to support 
1396                 in the <TT
1397 CLASS="FILENAME"
1398 >smb.conf</TT
1399 > file. The default is 
1400                 NT1 and that is the best for the vast majority of sites.</P
1401 ><P
1402 >In older versions of Samba you may have found it 
1403                 necessary to use COREPLUS. The limitations that led to 
1404                 this have mostly been fixed. It is now less likely that you 
1405                 will want to use less than LANMAN1. The only remaining advantage 
1406                 of COREPLUS is that for some obscure reason WfWg preserves 
1407                 the case of passwords in this protocol, whereas under LANMAN1, 
1408                 LANMAN2 or NT1 it uppercases all passwords before sending them,
1409                 forcing you to use the "password level=" option in some cases.</P
1410 ><P
1411 >The main advantage of LANMAN2 and NT1 is support for 
1412                 long filenames with some clients (eg: smbclient, Windows NT 
1413                 or Win95). </P
1414 ><P
1415 >See the smb.conf(5) manual page for more details.</P
1416 ><P
1417 >Note: To support print queue reporting you may find 
1418                 that you have to use TCP/IP as the default protocol under 
1419                 WfWg. For some reason if you leave Netbeui as the default 
1420                 it may break the print queue reporting on some systems. 
1421                 It is presumably a WfWg bug.</P
1422 ></DIV
1423 ><DIV
1424 CLASS="SECT2"
1425 ><HR><H2
1426 CLASS="SECT2"
1427 ><A
1428 NAME="AEN192"
1429 >1.10.4. Printing from UNIX to a Client PC</A
1430 ></H2
1431 ><P
1432 >To use a printer that is available via a smb-based 
1433                 server from a unix host you will need to compile the 
1434                 smbclient program. You then need to install the script 
1435                 "smbprint". Read the instruction in smbprint for more details.
1436                 </P
1437 ><P
1438 >There is also a SYSV style script that does much 
1439                 the same thing called smbprint.sysv. It contains instructions.</P
1440 ></DIV
1441 ><DIV
1442 CLASS="SECT2"
1443 ><HR><H2
1444 CLASS="SECT2"
1445 ><A
1446 NAME="AEN196"
1447 >1.10.5. Locking</A
1448 ></H2
1449 ><P
1450 >One area which sometimes causes trouble is locking.</P
1451 ><P
1452 >There are two types of locking which need to be 
1453                 performed by a SMB server. The first is "record locking" 
1454                 which allows a client to lock a range of bytes in a open file. 
1455                 The second is the "deny modes" that are specified when a file 
1456                 is open.</P
1457 ><P
1458 >Samba supports "record locking" using the fcntl() unix system
1459                 call. This is often implemented using rpc calls to a rpc.lockd process
1460                 running on the system that owns the filesystem. Unfortunately many
1461                 rpc.lockd implementations are very buggy, particularly when made to
1462                 talk to versions from other vendors. It is not uncommon for the
1463                 rpc.lockd to crash.</P
1464 ><P
1465 >There is also a problem translating the 32 bit lock 
1466                 requests generated by PC clients to 31 bit requests supported 
1467                 by most unixes. Unfortunately many PC applications (typically 
1468                 OLE2 applications) use byte ranges with the top bit set 
1469                 as semaphore sets. Samba attempts translation to support 
1470                 these types of applications, and the translation has proved 
1471                 to be quite successful.</P
1472 ><P
1473 >Strictly a SMB server should check for locks before 
1474                 every read and write call on a file. Unfortunately with the 
1475                 way fcntl() works this can be slow and may overstress the 
1476                 rpc.lockd. It is also almost always unnecessary as clients 
1477                 are supposed to independently make locking calls before reads 
1478                 and writes anyway if locking is important to them. By default 
1479                 Samba only makes locking calls when explicitly asked
1480                 to by a client, but if you set "strict locking = yes" then it will
1481                 make lock checking calls on every read and write. </P
1482 ><P
1483 >You can also disable by range locking completely 
1484                 using "locking = no". This is useful for those shares that 
1485                 don't support locking or don't need it (such as cdroms). In 
1486                 this case Samba fakes the return codes of locking calls to 
1487                 tell clients that everything is OK.</P
1488 ><P
1489 >The second class of locking is the "deny modes". These 
1490                 are set by an application when it opens a file to determine 
1491                 what types of access should be allowed simultaneously with 
1492                 its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE 
1493                 or DENY_ALL. There are also special compatability modes called 
1494                 DENY_FCB and  DENY_DOS.</P
1495 ><P
1496 >You can disable share modes using "share modes = no". 
1497                 This may be useful on a heavily loaded server as the share 
1498                 modes code is very slow. See also the FAST_SHARE_MODES 
1499                 option in the Makefile for a way to do full share modes 
1500                 very fast using shared memory (if your OS supports it).</P
1501 ></DIV
1502 ><DIV
1503 CLASS="SECT2"
1504 ><HR><H2
1505 CLASS="SECT2"
1506 ><A
1507 NAME="AEN206"
1508 >1.10.6. Mapping Usernames</A
1509 ></H2
1510 ><P
1511 >If you have different usernames on the PCs and 
1512                 the unix server then take a look at the "username map" option. 
1513                 See the smb.conf man page for details.</P
1514 ></DIV
1515 ><DIV
1516 CLASS="SECT2"
1517 ><HR><H2
1518 CLASS="SECT2"
1519 ><A
1520 NAME="AEN209"
1521 >1.10.7. Other Character Sets</A
1522 ></H2
1523 ><P
1524 >If you have problems using filenames with accented 
1525                 characters in them (like the German, French or Scandinavian 
1526                 character sets) then I recommmend you look at the "valid chars" 
1527                 option in smb.conf and also take a look at the validchars 
1528                 package in the examples directory.</P
1529 ></DIV
1530 ></DIV
1531 ></DIV
1532 ><DIV
1533 CLASS="CHAPTER"
1534 ><HR><H1
1535 ><A
1536 NAME="AEN212"
1537 >Chapter 2. LanMan and NT Password Encryption in Samba 2.x</A
1538 ></H1
1539 ><DIV
1540 CLASS="SECT1"
1541 ><H1
1542 CLASS="SECT1"
1543 ><A
1544 NAME="AEN223"
1545 >2.1. Introduction</A
1546 ></H1
1547 ><P
1548 >With the development of LanManager and Windows NT 
1549         compatible password encryption for Samba, it is now able 
1550         to validate user connections in exactly the same way as 
1551         a LanManager or Windows NT server.</P
1552 ><P
1553 >This document describes how the SMB password encryption 
1554         algorithm works and what issues there are in choosing whether 
1555         you want to use it. You should read it carefully, especially 
1556         the part about security and the "PROS and CONS" section.</P
1557 ></DIV
1558 ><DIV
1559 CLASS="SECT1"
1560 ><HR><H1
1561 CLASS="SECT1"
1562 ><A
1563 NAME="AEN227"
1564 >2.2. How does it work?</A
1565 ></H1
1566 ><P
1567 >LanManager encryption is somewhat similar to UNIX 
1568         password encryption. The server uses a file containing a 
1569         hashed value of a user's password.  This is created by taking 
1570         the user's plaintext password, capitalising it, and either 
1571         truncating to 14 bytes or padding to 14 bytes with null bytes. 
1572         This 14 byte value is used as two 56 bit DES keys to encrypt 
1573         a 'magic' eight byte value, forming a 16 byte value which is 
1574         stored by the server and client. Let this value be known as 
1575         the "hashed password".</P
1576 ><P
1577 >Windows NT encryption is a higher quality mechanism, 
1578         consisting of doing an MD4 hash on a Unicode version of the user's 
1579         password. This also produces a 16 byte hash value that is 
1580         non-reversible.</P
1581 ><P
1582 >When a client (LanManager, Windows for WorkGroups, Windows 
1583         95 or Windows NT) wishes to mount a Samba drive (or use a Samba 
1584         resource), it first requests a connection and negotiates the 
1585         protocol that the client and server will use. In the reply to this 
1586         request the Samba server generates and appends an 8 byte, random 
1587         value - this is stored in the Samba server after the reply is sent 
1588         and is known as the "challenge".  The challenge is different for 
1589         every client connection.</P
1590 ><P
1591 >The client then uses the hashed password (16 byte values 
1592         described above), appended with 5 null bytes, as three 56 bit 
1593         DES keys, each of which is used to encrypt the challenge 8 byte 
1594         value, forming a 24 byte value known as the "response".</P
1595 ><P
1596 >In the SMB call SMBsessionsetupX (when user level security 
1597         is selected) or the call SMBtconX (when share level security is 
1598         selected), the 24 byte response is returned by the client to the 
1599         Samba server.  For Windows NT protocol levels the above calculation 
1600         is done on both hashes of the user's password and both responses are 
1601         returned in the SMB call, giving two 24 byte values.</P
1602 ><P
1603 >The Samba server then reproduces the above calculation, using 
1604         its own stored value of the 16 byte hashed password (read from the 
1605         <TT
1606 CLASS="FILENAME"
1607 >smbpasswd</TT
1608 > file - described later) and the challenge 
1609         value that it kept from the negotiate protocol reply. It then checks 
1610         to see if the 24 byte value it calculates matches the 24 byte value 
1611         returned to it from the client.</P
1612 ><P
1613 >If these values match exactly, then the client knew the 
1614         correct password (or the 16 byte hashed value - see security note 
1615         below) and is thus allowed access. If not, then the client did not 
1616         know the correct password and is denied access.</P
1617 ><P
1618 >Note that the Samba server never knows or stores the cleartext 
1619         of the user's password - just the 16 byte hashed values derived from 
1620         it. Also note that the cleartext password or 16 byte hashed values 
1621         are never transmitted over the network - thus increasing security.</P
1622 ></DIV
1623 ><DIV
1624 CLASS="SECT1"
1625 ><HR><H1
1626 CLASS="SECT1"
1627 ><A
1628 NAME="AEN238"
1629 >2.3. Important Notes About Security</A
1630 ></H1
1631 ><P
1632 >The unix and SMB password encryption techniques seem similar 
1633         on the surface. This similarity is, however, only skin deep. The unix 
1634         scheme typically sends clear text passwords over the nextwork when 
1635         logging in. This is bad. The SMB encryption scheme never sends the 
1636         cleartext password over the network but it does store the 16 byte 
1637         hashed values on disk. This is also bad. Why? Because the 16 byte hashed 
1638         values are a "password equivalent". You cannot derive the user's 
1639         password from them, but they could potentially be used in a modified 
1640         client to gain access to a server. This would require considerable 
1641         technical knowledge on behalf of the attacker but is perfectly possible. 
1642         You should thus treat the smbpasswd file as though it contained the 
1643         cleartext passwords of all your users. Its contents must be kept 
1644         secret, and the file should be protected accordingly.</P
1645 ><P
1646 >Ideally we would like a password scheme which neither requires 
1647         plain text passwords on the net or on disk. Unfortunately this 
1648         is not available as Samba is stuck with being compatible with 
1649         other SMB systems (WinNT, WfWg, Win95 etc). </P
1650 ><DIV
1651 CLASS="WARNING"
1652 ><P
1653 ></P
1654 ><TABLE
1655 CLASS="WARNING"
1656 BORDER="1"
1657 WIDTH="100%"
1658 ><TR
1659 ><TD
1660 ALIGN="CENTER"
1661 ><B
1662 >Warning</B
1663 ></TD
1664 ></TR
1665 ><TR
1666 ><TD
1667 ALIGN="LEFT"
1668 ><P
1669 >Note that Windows NT 4.0 Service pack 3 changed the 
1670                 default for permissible authentication so that plaintext 
1671                 passwords are <EM
1672 >never</EM
1673 > sent over the wire. 
1674                 The solution to this is either to switch to encrypted passwords 
1675                 with Samba or edit the Windows NT registry to re-enable plaintext 
1676                 passwords. See the document WinNT.txt for details on how to do 
1677                 this.</P
1678 ><P
1679 >Other Microsoft operating systems which also exhibit 
1680                 this behavior includes</P
1681 ><P
1682 ></P
1683 ><UL
1684 ><LI
1685 ><P
1686 >MS DOS Network client 3.0 with 
1687                         the basic network redirector installed</P
1688 ></LI
1689 ><LI
1690 ><P
1691 >Windows 95 with the network redirector 
1692                         update installed</P
1693 ></LI
1694 ><LI
1695 ><P
1696 >Windows 98 [se]</P
1697 ></LI
1698 ><LI
1699 ><P
1700 >Windows 2000</P
1701 ></LI
1702 ></UL
1703 ><P
1704 ><EM
1705 >Note :</EM
1706 >All current release of 
1707                 Microsoft SMB/CIFS clients support authentication via the
1708                 SMB Challenge/Response mechanism described here.  Enabling
1709                 clear text authentication does not disable the ability
1710                 of the client to particpate in encrypted authentication.</P
1711 ></TD
1712 ></TR
1713 ></TABLE
1714 ></DIV
1715 ><DIV
1716 CLASS="SECT2"
1717 ><HR><H2
1718 CLASS="SECT2"
1719 ><A
1720 NAME="AEN257"
1721 >2.3.1. Advantages of SMB Encryption</A
1722 ></H2
1723 ><P
1724 ></P
1725 ><UL
1726 ><LI
1727 ><P
1728 >plain text passwords are not passed across 
1729                         the network. Someone using a network sniffer cannot just 
1730                         record passwords going to the SMB server.</P
1731 ></LI
1732 ><LI
1733 ><P
1734 >WinNT doesn't like talking to a server 
1735                         that isn't using SMB encrypted passwords. It will refuse 
1736                         to browse the server if the server is also in user level 
1737                         security mode. It will insist on prompting the user for the 
1738                         password on each connection, which is very annoying. The
1739                         only things you can do to stop this is to use SMB encryption.
1740                         </P
1741 ></LI
1742 ></UL
1743 ></DIV
1744 ><DIV
1745 CLASS="SECT2"
1746 ><HR><H2
1747 CLASS="SECT2"
1748 ><A
1749 NAME="AEN264"
1750 >2.3.2. Advantages of non-encrypted passwords</A
1751 ></H2
1752 ><P
1753 ></P
1754 ><UL
1755 ><LI
1756 ><P
1757 >plain text passwords are not kept 
1758                         on disk. </P
1759 ></LI
1760 ><LI
1761 ><P
1762 >uses same password file as other unix 
1763                         services such as login and ftp</P
1764 ></LI
1765 ><LI
1766 ><P
1767 >you are probably already using other 
1768                         services (such as telnet and ftp) which send plain text 
1769                         passwords over the net, so sending them for SMB isn't 
1770                         such a big deal.</P
1771 ></LI
1772 ></UL
1773 ></DIV
1774 ></DIV
1775 ><DIV
1776 CLASS="SECT1"
1777 ><HR><H1
1778 CLASS="SECT1"
1779 ><A
1780 NAME="AEN273"
1781 >2.4. <A
1782 NAME="SMBPASSWDFILEFORMAT"
1783 ></A
1784 >The smbpasswd file</A
1785 ></H1
1786 ><P
1787 >In order for Samba to participate in the above protocol 
1788         it must be able to look up the 16 byte hashed values given a user name.
1789         Unfortunately, as the UNIX password value is also a one way hash
1790         function (ie. it is impossible to retrieve the cleartext of the user's
1791         password given the UNIX hash of it), a separate password file
1792         containing this 16 byte value must be kept. To minimise problems with
1793         these two password files, getting out of sync, the UNIX <TT
1794 CLASS="FILENAME"
1795 >       /etc/passwd</TT
1796 > and the <TT
1797 CLASS="FILENAME"
1798 >smbpasswd</TT
1799 > file, 
1800         a utility, <B
1801 CLASS="COMMAND"
1802 >mksmbpasswd.sh</B
1803 >, is provided to generate
1804         a smbpasswd file from a UNIX <TT
1805 CLASS="FILENAME"
1806 >/etc/passwd</TT
1807 > file.
1808         </P
1809 ><P
1810 >To generate the smbpasswd file from your <TT
1811 CLASS="FILENAME"
1812 >/etc/passwd
1813         </TT
1814 > file use the following command :</P
1815 ><P
1816 ><TT
1817 CLASS="PROMPT"
1818 >$ </TT
1819 ><TT
1820 CLASS="USERINPUT"
1821 ><B
1822 >cat /etc/passwd | mksmbpasswd.sh
1823         &#62; /usr/local/samba/private/smbpasswd</B
1824 ></TT
1825 ></P
1826 ><P
1827 >If you are running on a system that uses NIS, use</P
1828 ><P
1829 ><TT
1830 CLASS="PROMPT"
1831 >$ </TT
1832 ><TT
1833 CLASS="USERINPUT"
1834 ><B
1835 >ypcat passwd | mksmbpasswd.sh
1836         &#62; /usr/local/samba/private/smbpasswd</B
1837 ></TT
1838 ></P
1839 ><P
1840 >The <B
1841 CLASS="COMMAND"
1842 >mksmbpasswd.sh</B
1843 > program is found in 
1844         the Samba source directory. By default, the smbpasswd file is 
1845         stored in :</P
1846 ><P
1847 ><TT
1848 CLASS="FILENAME"
1849 >/usr/local/samba/private/smbpasswd</TT
1850 ></P
1851 ><P
1852 >The owner of the <TT
1853 CLASS="FILENAME"
1854 >/usr/local/samba/private/</TT
1855
1856         directory should be set to root, and the permissions on it should 
1857         be set to 0500 (<B
1858 CLASS="COMMAND"
1859 >chmod 500 /usr/local/samba/private</B
1860 >).
1861         </P
1862 ><P
1863 >Likewise, the smbpasswd file inside the private directory should 
1864         be owned by root and the permissions on is should be set to 0600
1865         (<B
1866 CLASS="COMMAND"
1867 >chmod 600 smbpasswd</B
1868 >).</P
1869 ><P
1870 >The format of the smbpasswd file is (The line has been 
1871         wrapped here. It should appear as one entry per line in 
1872         your smbpasswd file.)</P
1873 ><P
1874 ><TABLE
1875 BORDER="0"
1876 BGCOLOR="#E0E0E0"
1877 WIDTH="100%"
1878 ><TR
1879 ><TD
1880 ><PRE
1881 CLASS="PROGRAMLISTING"
1882 >username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
1883         [Account type]:LCT-&#60;last-change-time&#62;:Long name
1884         </PRE
1885 ></TD
1886 ></TR
1887 ></TABLE
1888 ></P
1889 ><P
1890 >Although only the <TT
1891 CLASS="REPLACEABLE"
1892 ><I
1893 >username</I
1894 ></TT
1895 >, 
1896         <TT
1897 CLASS="REPLACEABLE"
1898 ><I
1899 >uid</I
1900 ></TT
1901 >, <TT
1902 CLASS="REPLACEABLE"
1903 ><I
1904 >       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</I
1905 ></TT
1906 >,
1907         [<TT
1908 CLASS="REPLACEABLE"
1909 ><I
1910 >Account type</I
1911 ></TT
1912 >] and <TT
1913 CLASS="REPLACEABLE"
1914 ><I
1915 >       last-change-time</I
1916 ></TT
1917 > sections are significant 
1918         and are looked at in the Samba code.</P
1919 ><P
1920 >It is <EM
1921 >VITALLY</EM
1922 > important that there by 32 
1923         'X' characters between the two ':' characters in the XXX sections - 
1924         the smbpasswd and Samba code will fail to validate any entries that 
1925         do not have 32 characters  between ':' characters. The first XXX 
1926         section is for the Lanman password hash, the second is for the 
1927         Windows NT version.</P
1928 ><P
1929 >When the password file is created all users have password entries
1930         consisting of 32 'X' characters. By default this disallows any access
1931         as this user. When a user has a password set, the 'X' characters change
1932         to 32 ascii hexadecimal digits (0-9, A-F). These are an ascii
1933         representation of the 16 byte hashed value of a user's password.</P
1934 ><P
1935 >To set a user to have no password (not recommended), edit the file
1936         using vi, and replace the first 11 characters with the ascii text
1937         <TT
1938 CLASS="CONSTANT"
1939 >"NO PASSWORD"</TT
1940 > (minus the quotes).</P
1941 ><P
1942 >For example, to clear the password for user bob, his smbpasswd file 
1943         entry would look like :</P
1944 ><P
1945 ><TABLE
1946 BORDER="0"
1947 BGCOLOR="#E0E0E0"
1948 WIDTH="100%"
1949 ><TR
1950 ><TD
1951 ><PRE
1952 CLASS="PROGRAMLISTING"
1953 >       bob:100:NO PASSWORDXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:Bob's full name:/bobhome:/bobshell
1954         </PRE
1955 ></TD
1956 ></TR
1957 ></TABLE
1958 ></P
1959 ><P
1960 >If you are allowing users to use the smbpasswd command to set 
1961         their own passwords, you may want to give users NO PASSWORD initially 
1962         so they do not have to enter a previous password when changing to their 
1963         new password (not recommended). In order for you to allow this the
1964         <B
1965 CLASS="COMMAND"
1966 >smbpasswd</B
1967 > program must be able to connect to the 
1968         <B
1969 CLASS="COMMAND"
1970 >smbd</B
1971 > daemon as that user with no password. Enable this 
1972         by adding the line :</P
1973 ><P
1974 ><B
1975 CLASS="COMMAND"
1976 >null passwords = yes</B
1977 ></P
1978 ><P
1979 >to the [global] section of the smb.conf file (this is why 
1980         the above scenario is not recommended). Preferably, allocate your
1981         users a default password to begin with, so you do not have
1982         to enable this on your server.</P
1983 ><P
1984 ><EM
1985 >Note : </EM
1986 >This file should be protected very 
1987         carefully. Anyone with access to this file can (with enough knowledge of 
1988         the protocols) gain access to your SMB server. The file is thus more 
1989         sensitive than a normal unix <TT
1990 CLASS="FILENAME"
1991 >/etc/passwd</TT
1992 > file.</P
1993 ></DIV
1994 ><DIV
1995 CLASS="SECT1"
1996 ><HR><H1
1997 CLASS="SECT1"
1998 ><A
1999 NAME="AEN325"
2000 >2.5. The smbpasswd Command</A
2001 ></H1
2002 ><P
2003 >The smbpasswd command maintains the two 32 byte password fields 
2004         in the smbpasswd file. If you wish to make it similar to the unix 
2005         <B
2006 CLASS="COMMAND"
2007 >passwd</B
2008 > or <B
2009 CLASS="COMMAND"
2010 >yppasswd</B
2011 > programs, 
2012         install it in <TT
2013 CLASS="FILENAME"
2014 >/usr/local/samba/bin/</TT
2015 > (or your 
2016         main Samba binary directory).</P
2017 ><P
2018 >Note that as of Samba 1.9.18p4 this program <EM
2019 >MUST NOT 
2020         BE INSTALLED</EM
2021 > setuid root (the new <B
2022 CLASS="COMMAND"
2023 >smbpasswd</B
2024
2025         code enforces this restriction so it cannot be run this way by 
2026         accident).</P
2027 ><P
2028 ><B
2029 CLASS="COMMAND"
2030 >smbpasswd</B
2031 > now works in a client-server mode 
2032         where it contacts the local smbd to change the user's password on its 
2033         behalf. This has enormous benefits - as follows.</P
2034 ><P
2035 ></P
2036 ><UL
2037 ><LI
2038 ><P
2039 >smbpasswd no longer has to be setuid root - 
2040                 an enormous range of potential security problems is 
2041                 eliminated.</P
2042 ></LI
2043 ><LI
2044 ><P
2045 ><B
2046 CLASS="COMMAND"
2047 >smbpasswd</B
2048 > now has the capability 
2049                 to change passwords on Windows NT servers (this only works when 
2050                 the request is sent to the NT Primary Domain Controller if you 
2051                 are changing an NT Domain user's password).</P
2052 ></LI
2053 ></UL
2054 ><P
2055 >To run smbpasswd as a normal user just type :</P
2056 ><P
2057 ><TT
2058 CLASS="PROMPT"
2059 >$ </TT
2060 ><TT
2061 CLASS="USERINPUT"
2062 ><B
2063 >smbpasswd</B
2064 ></TT
2065 ></P
2066 ><P
2067 ><TT
2068 CLASS="PROMPT"
2069 >Old SMB password: </TT
2070 ><TT
2071 CLASS="USERINPUT"
2072 ><B
2073 >&#60;type old value here - 
2074         or hit return if there was no old password&#62;</B
2075 ></TT
2076 ></P
2077 ><P
2078 ><TT
2079 CLASS="PROMPT"
2080 >New SMB Password: </TT
2081 ><TT
2082 CLASS="USERINPUT"
2083 ><B
2084 >&#60;type new value&#62;
2085         </B
2086 ></TT
2087 ></P
2088 ><P
2089 ><TT
2090 CLASS="PROMPT"
2091 >Repeat New SMB Password: </TT
2092 ><TT
2093 CLASS="USERINPUT"
2094 ><B
2095 >&#60;re-type new value
2096         </B
2097 ></TT
2098 ></P
2099 ><P
2100 >If the old value does not match the current value stored for 
2101         that user, or the two new values do not match each other, then the 
2102         password will not be changed.</P
2103 ><P
2104 >If invoked by an ordinary user it will only allow the user 
2105         to change his or her own Samba password.</P
2106 ><P
2107 >If run by the root user smbpasswd may take an optional 
2108         argument, specifying the user name whose SMB password you wish to 
2109         change.  Note that when run as root smbpasswd does not prompt for 
2110         or check the old password value, thus allowing root to set passwords 
2111         for users who have forgotten their passwords.</P
2112 ><P
2113 ><B
2114 CLASS="COMMAND"
2115 >smbpasswd</B
2116 > is designed to work in the same way 
2117         and be familiar to UNIX users who use the <B
2118 CLASS="COMMAND"
2119 >passwd</B
2120 > or 
2121         <B
2122 CLASS="COMMAND"
2123 >yppasswd</B
2124 > commands.</P
2125 ><P
2126 >For more details on using <B
2127 CLASS="COMMAND"
2128 >smbpasswd</B
2129 > refer 
2130         to the man page which will always be the definitive reference.</P
2131 ></DIV
2132 ><DIV
2133 CLASS="SECT1"
2134 ><HR><H1
2135 CLASS="SECT1"
2136 ><A
2137 NAME="AEN364"
2138 >2.6. Setting up Samba to support LanManager Encryption</A
2139 ></H1
2140 ><P
2141 >This is a very brief description on how to setup samba to 
2142         support password encryption. </P
2143 ><P
2144 ></P
2145 ><OL
2146 TYPE="1"
2147 ><LI
2148 ><P
2149 >compile and install samba as usual</P
2150 ></LI
2151 ><LI
2152 ><P
2153 >enable encrypted passwords in <TT
2154 CLASS="FILENAME"
2155 >               smb.conf</TT
2156 > by adding the line <B
2157 CLASS="COMMAND"
2158 >encrypt 
2159                 passwords = yes</B
2160 > in the [global] section</P
2161 ></LI
2162 ><LI
2163 ><P
2164 >create the initial <TT
2165 CLASS="FILENAME"
2166 >smbpasswd</TT
2167 >
2168                 password file in the place you specified in the Makefile 
2169                 (--prefix=&#60;dir&#62;). See the notes under the <A
2170 HREF="#SMBPASSWDFILEFORMAT"
2171 >The smbpasswd File</A
2172 >
2173                 section earlier in the document for details.</P
2174 ></LI
2175 ></OL
2176 ><P
2177 >Note that you can test things using smbclient.</P
2178 ></DIV
2179 ></DIV
2180 ><DIV
2181 CLASS="CHAPTER"
2182 ><HR><H1
2183 ><A
2184 NAME="AEN379"
2185 >Chapter 3. Hosting a Microsoft Distributed File System tree on Samba</A
2186 ></H1
2187 ><DIV
2188 CLASS="SECT1"
2189 ><H1
2190 CLASS="SECT1"
2191 ><A
2192 NAME="AEN390"
2193 >3.1. Instructions</A
2194 ></H1
2195 ><P
2196 >The Distributed File System (or Dfs) provides a means of 
2197         separating the logical view of files and directories that users 
2198         see from the actual physical locations of these resources on the 
2199         network. It allows for higher availability, smoother storage expansion, 
2200         load balancing etc. For more information about Dfs, refer to  <A
2201 HREF="http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp"
2202 TARGET="_top"
2203 >       Microsoft documentation</A
2204 >. </P
2205 ><P
2206 >This document explains how to host a Dfs tree on a Unix 
2207         machine (for Dfs-aware clients to browse) using Samba.</P
2208 ><P
2209 >To enable SMB-based DFS for Samba, configure it with the 
2210         <TT
2211 CLASS="PARAMETER"
2212 ><I
2213 >--with-msdfs</I
2214 ></TT
2215 > option. Once built, a 
2216         Samba server can be made a Dfs server by setting the global 
2217         boolean <A
2218 HREF="smb.conf.5.html#HOSTMSDFS"
2219 TARGET="_top"
2220 ><TT
2221 CLASS="PARAMETER"
2222 ><I
2223 >       host msdfs</I
2224 ></TT
2225 ></A
2226 > parameter in the <TT
2227 CLASS="FILENAME"
2228 >smb.conf
2229         </TT
2230 > file. You designate a share as a Dfs root using the share 
2231         level boolean <A
2232 HREF="smb.conf.5.html#MSDFSROOT"
2233 TARGET="_top"
2234 ><TT
2235 CLASS="PARAMETER"
2236 ><I
2237 >       msdfs root</I
2238 ></TT
2239 ></A
2240 > parameter. A Dfs root directory on 
2241         Samba hosts Dfs links in the form of symbolic links that point 
2242         to other servers. For example, a symbolic link
2243         <TT
2244 CLASS="FILENAME"
2245 >junction-&#62;msdfs:storage1\share1</TT
2246 > in 
2247         the share directory acts as the Dfs junction. When Dfs-aware 
2248         clients attempt to access the junction link, they are redirected 
2249         to the storage location (in this case, \\storage1\share1).</P
2250 ><P
2251 >Dfs trees on Samba work with all Dfs-aware clients ranging 
2252         from Windows 95 to 2000.</P
2253 ><P
2254 >Here's an example of setting up a Dfs tree on a Samba 
2255         server.</P
2256 ><P
2257 ><TABLE
2258 BORDER="0"
2259 BGCOLOR="#E0E0E0"
2260 WIDTH="100%"
2261 ><TR
2262 ><TD
2263 ><PRE
2264 CLASS="PROGRAMLISTING"
2265 ># The smb.conf file:
2266 [global]
2267         netbios name = SAMBA
2268         host msdfs   = yes
2269
2270 [dfs]
2271         path = /export/dfsroot
2272         msdfs root = yes
2273         </PRE
2274 ></TD
2275 ></TR
2276 ></TABLE
2277 ></P
2278 ><P
2279 >In the /export/dfsroot directory we set up our dfs links to 
2280         other servers on the network.</P
2281 ><P
2282 ><TT
2283 CLASS="PROMPT"
2284 >root# </TT
2285 ><TT
2286 CLASS="USERINPUT"
2287 ><B
2288 >cd /export/dfsroot</B
2289 ></TT
2290 ></P
2291 ><P
2292 ><TT
2293 CLASS="PROMPT"
2294 >root# </TT
2295 ><TT
2296 CLASS="USERINPUT"
2297 ><B
2298 >chown root /export/dfsroot</B
2299 ></TT
2300 ></P
2301 ><P
2302 ><TT
2303 CLASS="PROMPT"
2304 >root# </TT
2305 ><TT
2306 CLASS="USERINPUT"
2307 ><B
2308 >chmod 755 /export/dfsroot</B
2309 ></TT
2310 ></P
2311 ><P
2312 ><TT
2313 CLASS="PROMPT"
2314 >root# </TT
2315 ><TT
2316 CLASS="USERINPUT"
2317 ><B
2318 >ln -s msdfs:storageA\\shareA linka</B
2319 ></TT
2320 ></P
2321 ><P
2322 ><TT
2323 CLASS="PROMPT"
2324 >root# </TT
2325 ><TT
2326 CLASS="USERINPUT"
2327 ><B
2328 >ln -s msdfs:serverB\\share,serverC\\share linkb</B
2329 ></TT
2330 ></P
2331 ><P
2332 >You should set up the permissions and ownership of 
2333         the directory acting as the Dfs root such that only designated 
2334         users can create, delete or modify the msdfs links. Also note 
2335         that symlink names should be all lowercase. This limitation exists 
2336         to have Samba avoid trying all the case combinations to get at 
2337         the link name. Finally set up the symbolic links to point to the 
2338         network shares you want, and start Samba.</P
2339 ><P
2340 >Users on Dfs-aware clients can now browse the Dfs tree 
2341         on the Samba server at \\samba\dfs. Accessing 
2342         links linka or linkb (which appear as directories to the client) 
2343         takes users directly to the appropriate shares on the network.</P
2344 ><DIV
2345 CLASS="SECT2"
2346 ><HR><H2
2347 CLASS="SECT2"
2348 ><A
2349 NAME="AEN425"
2350 >3.1.1. Notes</A
2351 ></H2
2352 ><P
2353 ></P
2354 ><UL
2355 ><LI
2356 ><P
2357 >Windows clients need to be rebooted 
2358                         if a previously mounted non-dfs share is made a dfs 
2359                         root or vice versa. A better way is to introduce a 
2360                         new share and make it the dfs root.</P
2361 ></LI
2362 ><LI
2363 ><P
2364 >Currently there's a restriction that msdfs 
2365                         symlink names should all be lowercase.</P
2366 ></LI
2367 ><LI
2368 ><P
2369 >For security purposes, the directory 
2370                         acting as the root of the Dfs tree should have ownership 
2371                         and permissions set so that only designated users can 
2372                         modify the symbolic links in the directory.</P
2373 ></LI
2374 ></UL
2375 ></DIV
2376 ></DIV
2377 ></DIV
2378 ><DIV
2379 CLASS="CHAPTER"
2380 ><HR><H1
2381 ><A
2382 NAME="AEN434"
2383 >Chapter 4. Printing Support in Samba 2.2.x</A
2384 ></H1
2385 ><DIV
2386 CLASS="SECT1"
2387 ><H1
2388 CLASS="SECT1"
2389 ><A
2390 NAME="AEN445"
2391 >4.1. Introduction</A
2392 ></H1
2393 ><P
2394 >Beginning with the 2.2.0 release, Samba supports 
2395 the native Windows NT printing mechanisms implemented via 
2396 MS-RPC (i.e. the SPOOLSS named pipe).  Previous versions of 
2397 Samba only supported LanMan printing calls.</P
2398 ><P
2399 >The additional functionality provided by the new 
2400 SPOOLSS support includes:</P
2401 ><P
2402 ></P
2403 ><UL
2404 ><LI
2405 ><P
2406 >Support for downloading printer driver 
2407         files to Windows 95/98/NT/2000 clients upon demand.
2408         </P
2409 ></LI
2410 ><LI
2411 ><P
2412 >Uploading of printer drivers via the 
2413         Windows NT Add Printer Wizard (APW) or the 
2414         Imprints tool set (refer to <A
2415 HREF="http://imprints.sourceforge.net"
2416 TARGET="_top"
2417 >http://imprints.sourceforge.net</A
2418 >). 
2419         </P
2420 ></LI
2421 ><LI
2422 ><P
2423 >Support for the native MS-RPC printing 
2424         calls such as StartDocPrinter, EnumJobs(), etc...  (See 
2425         the MSDN documentation at <A
2426 HREF="http://msdn.microsoft.com/"
2427 TARGET="_top"
2428 >http://msdn.microsoft.com/</A
2429
2430         for more information on the Win32 printing API)
2431         </P
2432 ></LI
2433 ><LI
2434 ><P
2435 >Support for NT Access Control Lists (ACL) 
2436         on printer objects</P
2437 ></LI
2438 ><LI
2439 ><P
2440 >Improved support for printer queue manipulation 
2441         through the use of an internal databases for spooled job 
2442         information</P
2443 ></LI
2444 ></UL
2445 ><P
2446 >There has been some initial confusion about what all this means
2447 and whether or not it is a requirement for printer drivers to be 
2448 installed on a Samba host in order to support printing from Windows 
2449 clients.  A bug existed in Samba 2.2.0 which made Windows NT/2000 clients 
2450 require that the Samba server possess a valid driver for the printer.  
2451 This is fixed in Samba 2.2.1 and once again, Windows NT/2000 clients
2452 can use the local APW for installing drivers to be used with a Samba 
2453 served printer.  This is the same behavior exhibited by Windows 9x clients.
2454 As a side note, Samba does not use these drivers in any way to process 
2455 spooled files.  They are utilized entirely by the clients.</P
2456 ><P
2457 >The following MS KB article, may be of some help if you are dealing with
2458 Windows 2000 clients:  <EM
2459 >How to Add Printers with No User 
2460 Interaction in Windows 2000</EM
2461 ></P
2462 ><P
2463 ><A
2464 HREF="http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP"
2465 TARGET="_top"
2466 >http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP</A
2467 ></P
2468 ></DIV
2469 ><DIV
2470 CLASS="SECT1"
2471 ><HR><H1
2472 CLASS="SECT1"
2473 ><A
2474 NAME="AEN467"
2475 >4.2. Configuration</A
2476 ></H1
2477 ><DIV
2478 CLASS="WARNING"
2479 ><P
2480 ></P
2481 ><TABLE
2482 CLASS="WARNING"
2483 BORDER="1"
2484 WIDTH="100%"
2485 ><TR
2486 ><TD
2487 ALIGN="CENTER"
2488 ><B
2489 >[print$] vs. [printer$]</B
2490 ></TD
2491 ></TR
2492 ><TR
2493 ><TD
2494 ALIGN="LEFT"
2495 ><P
2496 >Previous versions of Samba recommended using a share named [printer$].  
2497 This name was taken from the printer$ service created by Windows 9x 
2498 clients when a printer was shared.  Windows 9x printer servers always have 
2499 a printer$ service which provides read-only access via no 
2500 password in order to support printer driver downloads.</P
2501 ><P
2502 >However, the initial implementation allowed for a 
2503 parameter named <TT
2504 CLASS="PARAMETER"
2505 ><I
2506 >printer driver location</I
2507 ></TT
2508
2509 to be used on a per share basis to specify the location of 
2510 the driver files associated with that printer.  Another 
2511 parameter named <TT
2512 CLASS="PARAMETER"
2513 ><I
2514 >printer driver</I
2515 ></TT
2516 > provided 
2517 a means of defining the printer driver name to be sent to 
2518 the client.</P
2519 ><P
2520 >These parameters, including <TT
2521 CLASS="PARAMETER"
2522 ><I
2523 >printer driver
2524 file</I
2525 ></TT
2526 > parameter, are being depreciated and should not 
2527 be used in new installations.  For more information on this change, 
2528 you should refer to the <A
2529 HREF="#MIGRATION"
2530 >Migration section</A
2531 >
2532 of this document.</P
2533 ></TD
2534 ></TR
2535 ></TABLE
2536 ></DIV
2537 ><DIV
2538 CLASS="SECT2"
2539 ><HR><H2
2540 CLASS="SECT2"
2541 ><A
2542 NAME="AEN478"
2543 >4.2.1. Creating [print$]</A
2544 ></H2
2545 ><P
2546 >In order to support the uploading of printer driver 
2547 files, you must first configure a file share named [print$].  
2548 The name of this share is hard coded in Samba's internals so 
2549 the name is very important (print$ is the service used by 
2550 Windows NT print servers to provide support for printer driver 
2551 download).</P
2552 ><P
2553 >You should modify the server's smb.conf file to create the 
2554 following file share (of course, some of the parameter values,
2555 such as 'path' are arbitrary and should be replaced with
2556 appropriate values for your site):</P
2557 ><P
2558 ><TABLE
2559 BORDER="0"
2560 BGCOLOR="#E0E0E0"
2561 WIDTH="100%"
2562 ><TR
2563 ><TD
2564 ><PRE
2565 CLASS="PROGRAMLISTING"
2566 >[print$]
2567     path = /usr/local/samba/printers
2568     guest ok = yes
2569     browseable = yes
2570     read only = yes
2571     ; since this share is configured as read only, then we need
2572     ; a 'write list'.  Check the file system permissions to make
2573     ; sure this account can copy files to the share.  If this
2574     ; is setup to a non-root account, then it should also exist
2575     ; as a 'printer admin'
2576     write list = ntadmin</PRE
2577 ></TD
2578 ></TR
2579 ></TABLE
2580 ></P
2581 ><P
2582 >The <A
2583 HREF="smb.conf.5.html#WRITELIST"
2584 TARGET="_top"
2585 ><TT
2586 CLASS="PARAMETER"
2587 ><I
2588 >write list</I
2589 ></TT
2590 ></A
2591 > is used to allow administrative 
2592 level user accounts to have write access in order to update files 
2593 on the share.  See the <A
2594 HREF="smb./conf.5.html"
2595 TARGET="_top"
2596 >smb.conf(5) 
2597 man page</A
2598 > for more information on configuring file shares.</P
2599 ><P
2600 >The requirement for <A
2601 HREF="smb.conf.5.html#GUESTOK"
2602 TARGET="_top"
2603 ><B
2604 CLASS="COMMAND"
2605 >guest 
2606 ok = yes</B
2607 ></A
2608 > depends upon how your
2609 site is configured.  If users will be guaranteed to have 
2610 an account on the Samba host, then this is a non-issue.</P
2611 ><DIV
2612 CLASS="NOTE"
2613 ><BLOCKQUOTE
2614 CLASS="NOTE"
2615 ><P
2616 ><B
2617 >Author's Note: </B
2618 >The non-issue is that if all your Windows NT users are guaranteed to be 
2619 authenticated by the Samba server (such as a domain member server and the NT 
2620 user has already been validated by the Domain Controller in 
2621 order to logon to the Windows NT console), then guest access 
2622 is not necessary.  Of course, in a workgroup environment where 
2623 you just want to be able to print without worrying about 
2624 silly accounts and security, then configure the share for 
2625 guest access.  You'll probably want to add <A
2626 HREF="smb.conf.5.html#MAPTOGUEST"
2627 TARGET="_top"
2628 ><B
2629 CLASS="COMMAND"
2630 >map to guest = Bad User</B
2631 ></A
2632 > in the [global] section as well.  Make sure 
2633 you understand what this parameter does before using it 
2634 though. --jerry</P
2635 ></BLOCKQUOTE
2636 ></DIV
2637 ><P
2638 >In order for a Windows NT print server to support 
2639 the downloading of driver files by multiple client architectures,
2640 it must create subdirectories within the [print$] service
2641 which correspond to each of the supported client architectures.
2642 Samba follows this model as well.</P
2643 ><P
2644 >Next create the directory tree below the [print$] share 
2645 for each architecture you wish to support.</P
2646 ><P
2647 ><TABLE
2648 BORDER="0"
2649 BGCOLOR="#E0E0E0"
2650 WIDTH="100%"
2651 ><TR
2652 ><TD
2653 ><PRE
2654 CLASS="PROGRAMLISTING"
2655 >[print$]-----
2656         |-W32X86           ; "Windows NT x86"
2657         |-WIN40            ; "Windows 95/98"
2658         |-W32ALPHA         ; "Windows NT Alpha_AXP"
2659         |-W32MIPS          ; "Windows NT R4000"
2660         |-W32PPC           ; "Windows NT PowerPC"</PRE
2661 ></TD
2662 ></TR
2663 ></TABLE
2664 ></P
2665 ><DIV
2666 CLASS="WARNING"
2667 ><P
2668 ></P
2669 ><TABLE
2670 CLASS="WARNING"
2671 BORDER="1"
2672 WIDTH="100%"
2673 ><TR
2674 ><TD
2675 ALIGN="CENTER"
2676 ><B
2677 >ATTENTION!  REQUIRED PERMISSIONS</B
2678 ></TD
2679 ></TR
2680 ><TR
2681 ><TD
2682 ALIGN="LEFT"
2683 ><P
2684 >In order to currently add a new driver to you Samba host, 
2685 one of two conditions must hold true:</P
2686 ><P
2687 ></P
2688 ><UL
2689 ><LI
2690 ><P
2691 >The account used to connect to the Samba host 
2692         must have a uid of 0 (i.e. a root account)</P
2693 ></LI
2694 ><LI
2695 ><P
2696 >The account used to connect to the Samba host
2697         must be a member of the <A
2698 HREF="smb.conf.5.html#PRINTERADMIN"
2699 TARGET="_top"
2700 ><TT
2701 CLASS="PARAMETER"
2702 ><I
2703 >printer 
2704         admin</I
2705 ></TT
2706 ></A
2707 > list.</P
2708 ></LI
2709 ></UL
2710 ><P
2711 >Of course, the connected account must still possess access
2712 to add files to the subdirectories beneath [print$]. Remember
2713 that all file shares are set to 'read only' by default.</P
2714 ></TD
2715 ></TR
2716 ></TABLE
2717 ></DIV
2718 ><P
2719 >Once you have created the required [print$] service and 
2720 associated subdirectories, simply log onto the Samba server using 
2721 a root (or <TT
2722 CLASS="PARAMETER"
2723 ><I
2724 >printer admin</I
2725 ></TT
2726 >) account
2727 from a Windows NT 4.0 client.  Navigate to the "Printers" folder
2728 on the Samba server.  You should see an initial listing of printers
2729 that matches the printer shares defined on your Samba host.</P
2730 ></DIV
2731 ><DIV
2732 CLASS="SECT2"
2733 ><HR><H2
2734 CLASS="SECT2"
2735 ><A
2736 NAME="AEN513"
2737 >4.2.2. Setting Drivers for Existing Printers</A
2738 ></H2
2739 ><P
2740 >The initial listing of printers in the Samba host's 
2741 Printers folder will have no real printer driver assigned 
2742 to them.  By default, in Samba 2.2.0 this driver name was set to 
2743 <EM
2744 >NO PRINTER DRIVER AVAILABLE FOR THIS PRINTER</EM
2745 >.
2746 Later versions changed this to a NULL string to allow the use
2747 tof the local Add Printer Wizard on NT/2000 clients.
2748 Attempting to view the printer properties for a printer
2749 which has this default driver assigned will result in 
2750 the error message:</P
2751 ><P
2752 ><EM
2753 >Device settings cannot be displayed.  The driver 
2754 for the specified printer is not installed, only spooler 
2755 properties will be displayed.  Do you want to install the 
2756 driver now?</EM
2757 ></P
2758 ><P
2759 >Click "No" in the error dialog and you will be presented with
2760 the printer properties window.  The way assign a driver to a 
2761 printer is to either</P
2762 ><P
2763 ></P
2764 ><UL
2765 ><LI
2766 ><P
2767 >Use the "New Driver..." button to install 
2768         a new printer driver, or</P
2769 ></LI
2770 ><LI
2771 ><P
2772 >Select a driver from the popup list of 
2773         installed drivers.  Initially this list will be empty.</P
2774 ></LI
2775 ></UL
2776 ><P
2777 >If you wish to install printer drivers for client 
2778 operating systems other than "Windows NT x86", you will need 
2779 to use the "Sharing" tab of the printer properties dialog.</P
2780 ><P
2781 >Assuming you have connected with a root account, you 
2782 will also be able modify other printer properties such as 
2783 ACLs and device settings using this dialog box.</P
2784 ><P
2785 >A few closing comments for this section, it is possible 
2786 on a Windows NT print server to have printers
2787 listed in the Printers folder which are not shared.  Samba does
2788 not make this distinction.  By definition, the only printers of
2789 which Samba is aware are those which are specified as shares in
2790 <TT
2791 CLASS="FILENAME"
2792 >smb.conf</TT
2793 >.</P
2794 ><P
2795 >Another interesting side note is that Windows NT clients do
2796 not use the SMB printer share, but rather can print directly 
2797 to any printer on another Windows NT host using MS-RPC.  This
2798 of course assumes that the printing client has the necessary
2799 privileges on the remote host serving the printer.  The default
2800 permissions assigned by Windows NT to a printer gives the "Print"
2801 permissions to the "Everyone" well-known group.</P
2802 ></DIV
2803 ><DIV
2804 CLASS="SECT2"
2805 ><HR><H2
2806 CLASS="SECT2"
2807 ><A
2808 NAME="AEN530"
2809 >4.2.3. Support a large number of printers</A
2810 ></H2
2811 ><P
2812 >One issue that has arisen during the development
2813 phase of Samba 2.2 is the need to support driver downloads for
2814 100's of printers.  Using the Windows NT APW is somewhat 
2815 awkward to say the list.  If more than one printer are using the 
2816 same driver, the <A
2817 HREF="rpcclient.1.html"
2818 TARGET="_top"
2819 ><B
2820 CLASS="COMMAND"
2821 >rpcclient's
2822 setdriver command</B
2823 ></A
2824 > can be used to set the driver
2825 associated with an installed driver.  The following is example
2826 of how this could be accomplished:</P
2827 ><P
2828 ><TABLE
2829 BORDER="0"
2830 BGCOLOR="#E0E0E0"
2831 WIDTH="100%"
2832 ><TR
2833 ><TD
2834 ><PRE
2835 CLASS="PROGRAMLISTING"
2836
2837 <TT
2838 CLASS="PROMPT"
2839 >$ </TT
2840 >rpcclient pogo -U root%secret -c "enumdrivers"
2841 Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
2842  
2843 [Windows NT x86]
2844 Printer Driver Info 1:
2845      Driver Name: [HP LaserJet 4000 Series PS]
2846  
2847 Printer Driver Info 1:
2848      Driver Name: [HP LaserJet 2100 Series PS]
2849  
2850 Printer Driver Info 1:
2851      Driver Name: [HP LaserJet 4Si/4SiMX PS]
2852                                   
2853 <TT
2854 CLASS="PROMPT"
2855 >$ </TT
2856 >rpcclient pogo -U root%secret -c "enumprinters"
2857 Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
2858      flags:[0x800000]
2859      name:[\\POGO\hp-print]
2860      description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
2861      comment:[]
2862                                   
2863 <TT
2864 CLASS="PROMPT"
2865 >$ </TT
2866 >rpcclient pogo -U root%secret \
2867 <TT
2868 CLASS="PROMPT"
2869 >&#62; </TT
2870 > -c "setdriver hp-print \"HP LaserJet 4000 Series PS\""
2871 Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
2872 Successfully set hp-print to driver HP LaserJet 4000 Series PS.</PRE
2873 ></TD
2874 ></TR
2875 ></TABLE
2876 ></P
2877 ></DIV
2878 ><DIV
2879 CLASS="SECT2"
2880 ><HR><H2
2881 CLASS="SECT2"
2882 ><A
2883 NAME="AEN541"
2884 >4.2.4. Adding New Printers via the Windows NT APW</A
2885 ></H2
2886 ><P
2887 >By default, Samba offers all printer shares defined in <TT
2888 CLASS="FILENAME"
2889 >smb.conf</TT
2890 >
2891 in the "Printers..." folder.  Also existing in this folder is the Windows NT 
2892 Add Printer Wizard icon.  The APW will be show only if</P
2893 ><P
2894 ></P
2895 ><UL
2896 ><LI
2897 ><P
2898 >The connected user is able to successfully
2899         execute an OpenPrinterEx(\\server) with administrative
2900         priviledges (i.e. root or <TT
2901 CLASS="PARAMETER"
2902 ><I
2903 >printer admin</I
2904 ></TT
2905 >).
2906         </P
2907 ></LI
2908 ><LI
2909 ><P
2910 ><A
2911 HREF="smb.conf.5.html#SHOWADDPRINTERWIZARD"
2912 TARGET="_top"
2913 ><TT
2914 CLASS="PARAMETER"
2915 ><I
2916 >show 
2917         add printer wizard = yes</I
2918 ></TT
2919 ></A
2920 > (the default).
2921         </P
2922 ></LI
2923 ></UL
2924 ><P
2925 >In order to be able to use the APW to successfully add a printer to a Samba 
2926 server, the <A
2927 HREF="smb.conf.5.html#ADDPRINTERCOMMAND"
2928 TARGET="_top"
2929 ><TT
2930 CLASS="PARAMETER"
2931 ><I
2932 >add 
2933 printer command</I
2934 ></TT
2935 ></A
2936 > must have a defined value.  The program
2937 hook must successfully add the printer to the system (i.e. 
2938 <TT
2939 CLASS="FILENAME"
2940 >/etc/printcap</TT
2941 > or appropriate files) and 
2942 <TT
2943 CLASS="FILENAME"
2944 >smb.conf</TT
2945 > if necessary.</P
2946 ><P
2947 >When using the APW from a client, if the named printer share does 
2948 not exist, <B
2949 CLASS="COMMAND"
2950 >smbd</B
2951 > will execute the <TT
2952 CLASS="PARAMETER"
2953 ><I
2954 >add printer 
2955 command</I
2956 ></TT
2957 > and reparse to the <TT
2958 CLASS="FILENAME"
2959 >smb.conf</TT
2960 >
2961 to attempt to locate the new printer share.  If the share is still not defined,
2962 an error of "Access Denied" is returned to the client.  Note that the 
2963 <TT
2964 CLASS="PARAMETER"
2965 ><I
2966 >add printer program</I
2967 ></TT
2968 > is executed under the context
2969 of the connected user, not necessarily a root account.</P
2970 ><P
2971 >There is a complementing <A
2972 HREF="smb.conf.5.html#DELETEPRINTERCOMMAND"
2973 TARGET="_top"
2974 ><TT
2975 CLASS="PARAMETER"
2976 ><I
2977 >delete
2978 printer command</I
2979 ></TT
2980 ></A
2981 > for removing entries from the "Printers..."
2982 folder.</P
2983 ></DIV
2984 ><DIV
2985 CLASS="SECT2"
2986 ><HR><H2
2987 CLASS="SECT2"
2988 ><A
2989 NAME="AEN566"
2990 >4.2.5. Samba and Printer Ports</A
2991 ></H2
2992 ><P
2993 >Windows NT/2000 print servers associate a port with each printer.  These normally
2994 take the form of LPT1:, COM1:, FILE:, etc...  Samba must also support the
2995 concept of ports associated with a printer.  By default, only one printer port,
2996 named "Samba Printer Port", exists on a system.  Samba does not really a port in
2997 order to print, rather it is a requirement of Windows clients.  </P
2998 ><P
2999 >Note that Samba does not support the concept of "Printer Pooling" internally 
3000 either.  This is when a logical printer is assigned to multiple ports as 
3001 a form of load balancing or fail over.</P
3002 ><P
3003 >If you require that multiple ports be defined for some reason,
3004 <TT
3005 CLASS="FILENAME"
3006 >smb.conf</TT
3007 > possesses a <A
3008 HREF="smb.conf.5.html#ENUMPORTSCOMMAND"
3009 TARGET="_top"
3010 ><TT
3011 CLASS="PARAMETER"
3012 ><I
3013 >enumports 
3014 command</I
3015 ></TT
3016 ></A
3017 > which can be used to define an external program 
3018 that generates a listing of ports on a system.</P
3019 ></DIV
3020 ></DIV
3021 ><DIV
3022 CLASS="SECT1"
3023 ><HR><H1
3024 CLASS="SECT1"
3025 ><A
3026 NAME="AEN574"
3027 >4.3. The Imprints Toolset</A
3028 ></H1
3029 ><P
3030 >The Imprints tool set provides a UNIX equivalent of the 
3031         Windows NT Add Printer Wizard.  For complete information, please 
3032         refer to the Imprints web site at <A
3033 HREF="http://imprints.sourceforge.net/"
3034 TARGET="_top"
3035 >       http://imprints.sourceforge.net/</A
3036 > as well as the documentation 
3037         included with the imprints source distribution.  This section will 
3038         only provide a brief introduction to the features of Imprints.</P
3039 ><DIV
3040 CLASS="SECT2"
3041 ><HR><H2
3042 CLASS="SECT2"
3043 ><A
3044 NAME="AEN578"
3045 >4.3.1. What is Imprints?</A
3046 ></H2
3047 ><P
3048 >Imprints is a collection of tools for supporting the goals 
3049                 of</P
3050 ><P
3051 ></P
3052 ><UL
3053 ><LI
3054 ><P
3055 >Providing a central repository information 
3056                         regarding Windows NT and 95/98 printer driver packages</P
3057 ></LI
3058 ><LI
3059 ><P
3060 >Providing the tools necessary for creating 
3061                         the Imprints printer driver packages.</P
3062 ></LI
3063 ><LI
3064 ><P
3065 >Providing an installation client which 
3066                         will obtain and install printer drivers on remote Samba 
3067                         and Windows NT 4 print servers.</P
3068 ></LI
3069 ></UL
3070 ></DIV
3071 ><DIV
3072 CLASS="SECT2"
3073 ><HR><H2
3074 CLASS="SECT2"
3075 ><A
3076 NAME="AEN588"
3077 >4.3.2. Creating Printer Driver Packages</A
3078 ></H2
3079 ><P
3080 >The process of creating printer driver packages is beyond
3081                 the scope of this document (refer to Imprints.txt also included
3082                 with the Samba distribution for more information).  In short,
3083                 an Imprints driver package is a gzipped tarball containing the
3084                 driver files, related INF files, and a control file needed by the
3085                 installation client.</P
3086 ></DIV
3087 ><DIV
3088 CLASS="SECT2"
3089 ><HR><H2
3090 CLASS="SECT2"
3091 ><A
3092 NAME="AEN591"
3093 >4.3.3. The Imprints server</A
3094 ></H2
3095 ><P
3096 >The Imprints server is really a database server that 
3097                 may be queried via standard HTTP mechanisms.  Each printer 
3098                 entry in the database has an associated URL for the actual
3099                 downloading of the package.  Each package is digitally signed
3100                 via GnuPG which can be used to verify that package downloaded
3101                 is actually the one referred in the Imprints database.  It is 
3102                 <EM
3103 >not</EM
3104 > recommended that this security check 
3105                 be disabled.</P
3106 ></DIV
3107 ><DIV
3108 CLASS="SECT2"
3109 ><HR><H2
3110 CLASS="SECT2"
3111 ><A
3112 NAME="AEN595"
3113 >4.3.4. The Installation Client</A
3114 ></H2
3115 ><P
3116 >More information regarding the Imprints installation client 
3117                 is available in the <TT
3118 CLASS="FILENAME"
3119 >Imprints-Client-HOWTO.ps</TT
3120
3121                 file included with the imprints source package.</P
3122 ><P
3123 >The Imprints installation client comes in two forms.</P
3124 ><P
3125 ></P
3126 ><UL
3127 ><LI
3128 ><P
3129 >a set of command line Perl scripts</P
3130 ></LI
3131 ><LI
3132 ><P
3133 >a GTK+ based graphical interface to 
3134                         the command line perl scripts</P
3135 ></LI
3136 ></UL
3137 ><P
3138 >The installation client (in both forms) provides a means
3139                 of querying the Imprints database server for a matching
3140                 list of known printer model names as well as a means to 
3141                 download and install the drivers on remote Samba and Windows
3142                 NT print servers.</P
3143 ><P
3144 >The basic installation process is in four steps and 
3145                 perl code is wrapped around <B
3146 CLASS="COMMAND"
3147 >smbclient</B
3148
3149                 and <B
3150 CLASS="COMMAND"
3151 >rpcclient</B
3152 >.</P
3153 ><P
3154 ><TABLE
3155 BORDER="0"
3156 BGCOLOR="#E0E0E0"
3157 WIDTH="100%"
3158 ><TR
3159 ><TD
3160 ><PRE
3161 CLASS="PROGRAMLISTING"
3162 >       
3163 foreach (supported architecture for a given driver)
3164 {
3165      1.  rpcclient: Get the appropriate upload directory 
3166          on the remote server
3167      2.  smbclient: Upload the driver files
3168      3.  rpcclient: Issues an AddPrinterDriver() MS-RPC
3169 }
3170         
3171 4.  rpcclient: Issue an AddPrinterEx() MS-RPC to actually
3172     create the printer</PRE
3173 ></TD
3174 ></TR
3175 ></TABLE
3176 ></P
3177 ><P
3178 >One of the problems encountered when implementing 
3179                 the Imprints tool set was the name space issues between 
3180                 various supported client architectures.  For example, Windows 
3181                 NT includes a driver named "Apple LaserWriter II NTX v51.8" 
3182                 and Windows 95 callsits version of this driver "Apple 
3183                 LaserWriter II NTX"</P
3184 ><P
3185 >The problem is how to know what client drivers have 
3186                 been uploaded for a printer.  As astute reader will remember 
3187                 that the Windows NT Printer Properties dialog only includes 
3188                 space for one printer driver name.  A quick look in the 
3189                 Windows NT 4.0 system registry at</P
3190 ><P
3191 ><TT
3192 CLASS="FILENAME"
3193 >HKLM\System\CurrentControlSet\Control\Print\Environment
3194                 </TT
3195 ></P
3196 ><P
3197 >will reveal that Windows NT always uses the NT driver 
3198                 name.  This is ok as Windows NT always requires that at least 
3199                 the Windows NT version of the printer driver is present.  
3200                 However, Samba does not have the requirement internally.  
3201                 Therefore, how can you use the NT driver name if is has not 
3202                 already been installed?</P
3203 ><P
3204 >The way of sidestepping this limitation is to require 
3205                 that all Imprints printer driver packages include both the Intel 
3206                 Windows NT and 95/98 printer drivers and that NT driver is 
3207                 installed first.</P
3208 ></DIV
3209 ></DIV
3210 ><DIV
3211 CLASS="SECT1"
3212 ><HR><H1
3213 CLASS="SECT1"
3214 ><A
3215 NAME="AEN617"
3216 >4.4. <A
3217 NAME="MIGRATION"
3218 ></A
3219 >Migration to from Samba 2.0.x to 2.2.x</A
3220 ></H1
3221 ><P
3222 >Given that printer driver management has changed (we hope improved) in 
3223 2.2 over prior releases, migration from an existing setup to 2.2 can 
3224 follow several paths.</P
3225 ><P
3226 >Windows clients have a tendency to remember things for quite a while.
3227 For example, if a Windows NT client has attached to a Samba 2.0 server,
3228 it will remember the server as a LanMan printer server.  Upgrading 
3229 the Samba host to 2.2 makes support for MSRPC printing possible, but 
3230 the NT client will still remember the previous setting.</P
3231 ><P
3232 >In order to give an NT client printing "amesia" (only necessary if you 
3233 want to use the newer MSRPC printing functionality in Samba), delete 
3234 the registry keys associated with the print server contained in 
3235 <TT
3236 CLASS="CONSTANT"
3237 >[HKLM\SYSTEM\CurrentControlSet\Control\Print]</TT
3238 >.  The 
3239 spooler service on the client should be stopped prior to doing this:</P
3240 ><P
3241 ><TT
3242 CLASS="PROMPT"
3243 >C:\WINNT\ &#62;</TT
3244 > <TT
3245 CLASS="USERINPUT"
3246 ><B
3247 >net stop spooler</B
3248 ></TT
3249 ></P
3250 ><P
3251 ><EM
3252 >All the normal disclaimers about editing the registry go 
3253 here.</EM
3254 >  Be careful, and know what you are doing.</P
3255 ><P
3256 >The spooler service should be restarted after you have finished 
3257 removing the appropriate registry entries by replacing the 
3258 <B
3259 CLASS="COMMAND"
3260 >stop</B
3261 > command above with <B
3262 CLASS="COMMAND"
3263 >start</B
3264 >.</P
3265 ><P
3266 >Windows 9x clients will continue to use LanMan printing calls
3267 with a 2.2 Samba server so there is no need to perform any of these
3268 modifications on non-NT clients.</P
3269 ><DIV
3270 CLASS="WARNING"
3271 ><P
3272 ></P
3273 ><TABLE
3274 CLASS="WARNING"
3275 BORDER="1"
3276 WIDTH="100%"
3277 ><TR
3278 ><TD
3279 ALIGN="CENTER"
3280 ><B
3281 >Achtung!</B
3282 ></TD
3283 ></TR
3284 ><TR
3285 ><TD
3286 ALIGN="LEFT"
3287 ><P
3288 >The following smb.conf parameters are considered to be depreciated and will 
3289 be removed soon.  Do not use them in new installations</P
3290 ><P
3291 ></P
3292 ><UL
3293 ><LI
3294 ><P
3295 ><TT
3296 CLASS="PARAMETER"
3297 ><I
3298 >printer driver file (G)</I
3299 ></TT
3300 >
3301         </P
3302 ></LI
3303 ><LI
3304 ><P
3305 ><TT
3306 CLASS="PARAMETER"
3307 ><I
3308 >printer driver (S)</I
3309 ></TT
3310 >
3311         </P
3312 ></LI
3313 ><LI
3314 ><P
3315 ><TT
3316 CLASS="PARAMETER"
3317 ><I
3318 >printer driver location (S)</I
3319 ></TT
3320 >
3321         </P
3322 ></LI
3323 ></UL
3324 ></TD
3325 ></TR
3326 ></TABLE
3327 ></DIV
3328 ><P
3329 >Here are the possible scenarios for supporting migration:</P
3330 ><P
3331 ></P
3332 ><UL
3333 ><LI
3334 ><P
3335 >If you do not desire the new Windows NT 
3336         print driver support, nothing needs to be done.  
3337         All existing parameters work the same.</P
3338 ></LI
3339 ><LI
3340 ><P
3341 >If you want to take advantage of NT printer 
3342         driver support but do not want to migrate the 
3343         9x drivers to the new setup, the leave the existing 
3344         printers.def file.  When smbd attempts to locate a 
3345         9x driver for the printer in the TDB and fails it 
3346         will drop down to using the printers.def (and all 
3347         associated parameters).  The <B
3348 CLASS="COMMAND"
3349 >make_printerdef</B
3350
3351         tool will also remain for backwards compatibility but will 
3352         be moved to the "this tool is the old way of doing it" 
3353         pile.</P
3354 ></LI
3355 ><LI
3356 ><P
3357 >If you install a Windows 9x driver for a printer 
3358         on your Samba host (in the printing TDB), this information will 
3359         take precedence and the three old printing parameters
3360         will be ignored (including print driver location).</P
3361 ></LI
3362 ><LI
3363 ><P
3364 >If you want to migrate an existing <TT
3365 CLASS="FILENAME"
3366 >printers.def</TT
3367
3368         file into the new setup, the current only solution is to use the Windows 
3369         NT APW to install the NT drivers and the 9x  drivers.  This can be scripted 
3370         using <B
3371 CLASS="COMMAND"
3372 >smbclient</B
3373 > and <B
3374 CLASS="COMMAND"
3375 >rpcclient</B
3376 >.  See the 
3377         Imprints installation client at <A
3378 HREF="http://imprints.sourceforge.net/"
3379 TARGET="_top"
3380 >http://imprints.sourceforge.net/</A
3381
3382         for an example.
3383         </P
3384 ></LI
3385 ></UL
3386 ></DIV
3387 ></DIV
3388 ><DIV
3389 CLASS="CHAPTER"
3390 ><HR><H1
3391 ><A
3392 NAME="AEN661"
3393 >Chapter 5. security = domain in Samba 2.x</A
3394 ></H1
3395 ><DIV
3396 CLASS="SECT1"
3397 ><H1
3398 CLASS="SECT1"
3399 ><A
3400 NAME="AEN679"
3401 >5.1. Joining an NT Domain with Samba 2.2</A
3402 ></H1
3403 ><P
3404 >In order for a Samba-2 server to join an NT domain, 
3405         you must first add the NetBIOS name of the Samba server to the 
3406         NT domain on the PDC using Server Manager for Domains.  This creates 
3407         the machine account in the domain (PDC) SAM. Note that you should 
3408         add the Samba server as a "Windows NT Workstation or Server", 
3409         <EM
3410 >NOT</EM
3411 > as a Primary or backup domain controller.</P
3412 ><P
3413 >Assume you have a Samba-2 server with a NetBIOS name of 
3414         <TT
3415 CLASS="CONSTANT"
3416 >SERV1</TT
3417 > and are joining an NT domain called
3418         <TT
3419 CLASS="CONSTANT"
3420 >DOM</TT
3421 >, which has a PDC with a NetBIOS name
3422         of <TT
3423 CLASS="CONSTANT"
3424 >DOMPDC</TT
3425 > and two backup domain controllers 
3426         with NetBIOS names <TT
3427 CLASS="CONSTANT"
3428 >DOMBDC1</TT
3429 > and <TT
3430 CLASS="CONSTANT"
3431 >DOMBDC2
3432         </TT
3433 >.</P
3434 ><P
3435 >In order to join the domain, first stop all Samba daemons 
3436         and run the command:</P
3437 ><P
3438 ><TT
3439 CLASS="PROMPT"
3440 >root# </TT
3441 ><TT
3442 CLASS="USERINPUT"
3443 ><B
3444 >smbpasswd -j DOM -r DOMPDC
3445         </B
3446 ></TT
3447 ></P
3448 ><P
3449 >as we are joining the domain DOM and the PDC for that domain 
3450         (the only machine that has write access to the domain SAM database) 
3451         is DOMPDC. If this is successful you will see the message:</P
3452 ><P
3453 ><TT
3454 CLASS="COMPUTEROUTPUT"
3455 >smbpasswd: Joined domain DOM.</TT
3456 >
3457         </P
3458 ><P
3459 >in your terminal window. See the <A
3460 HREF="smbpasswd.8.html"
3461 TARGET="_top"
3462 >       smbpasswd(8)</A
3463 > man page for more details.</P
3464 ><P
3465 >There is existing development code to join a domain
3466         without having to create the machine trust account on the PDC
3467         beforehand.  This code will hopefully be available soon
3468         in release branches as well.</P
3469 ><P
3470 >This command goes through the machine account password 
3471         change protocol, then writes the new (random) machine account 
3472         password for this Samba server into a file in the same directory 
3473         in which an smbpasswd file would be stored - normally :</P
3474 ><P
3475 ><TT
3476 CLASS="FILENAME"
3477 >/usr/local/samba/private</TT
3478 ></P
3479 ><P
3480 >In Samba 2.0.x, the filename looks like this:</P
3481 ><P
3482 ><TT
3483 CLASS="FILENAME"
3484 ><TT
3485 CLASS="REPLACEABLE"
3486 ><I
3487 >&#60;NT DOMAIN NAME&#62;</I
3488 ></TT
3489 >.<TT
3490 CLASS="REPLACEABLE"
3491 ><I
3492 >&#60;Samba 
3493         Server Name&#62;</I
3494 ></TT
3495 >.mac</TT
3496 ></P
3497 ><P
3498 >The <TT
3499 CLASS="FILENAME"
3500 >.mac</TT
3501 > suffix stands for machine account 
3502         password file. So in our example above, the file would be called:</P
3503 ><P
3504 ><TT
3505 CLASS="FILENAME"
3506 >DOM.SERV1.mac</TT
3507 ></P
3508 ><P
3509 >In Samba 2.2, this file has been replaced with a TDB 
3510         (Trivial Database) file named <TT
3511 CLASS="FILENAME"
3512 >secrets.tdb</TT
3513 >.
3514         </P
3515 ><P
3516 >This file is created and owned by root and is not 
3517         readable by any other user. It is the key to the domain-level 
3518         security for your system, and should be treated as carefully 
3519         as a shadow password file.</P
3520 ><P
3521 >Now, before restarting the Samba daemons you must 
3522         edit your <A
3523 HREF="smb.conf.5.html"
3524 TARGET="_top"
3525 ><TT
3526 CLASS="FILENAME"
3527 >smb.conf(5)</TT
3528 >
3529         </A
3530 > file to tell Samba it should now use domain security.</P
3531 ><P
3532 >Change (or add) your <A
3533 HREF="smb.conf.5.html#SECURITY"
3534 TARGET="_top"
3535 >       <TT
3536 CLASS="PARAMETER"
3537 ><I
3538 >security =</I
3539 ></TT
3540 ></A
3541 > line in the [global] section 
3542         of your smb.conf to read:</P
3543 ><P
3544 ><B
3545 CLASS="COMMAND"
3546 >security = domain</B
3547 ></P
3548 ><P
3549 >Next change the <A
3550 HREF="smb.conf.5.html#WORKGROUP"
3551 TARGET="_top"
3552 ><TT
3553 CLASS="PARAMETER"
3554 ><I
3555 >       workgroup =</I
3556 ></TT
3557 ></A
3558 > line in the [global] section to read: </P
3559 ><P
3560 ><B
3561 CLASS="COMMAND"
3562 >workgroup = DOM</B
3563 ></P
3564 ><P
3565 >as this is the name of the domain we are joining. </P
3566 ><P
3567 >You must also have the parameter <A
3568 HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
3569 TARGET="_top"
3570 >       <TT
3571 CLASS="PARAMETER"
3572 ><I
3573 >encrypt passwords</I
3574 ></TT
3575 ></A
3576 > set to <TT
3577 CLASS="CONSTANT"
3578 >yes
3579         </TT
3580 > in order for your users to authenticate to the NT PDC.</P
3581 ><P
3582 >Finally, add (or modify) a <A
3583 HREF="smb.conf.5.html#PASSWORDSERVER"
3584 TARGET="_top"
3585 >       <TT
3586 CLASS="PARAMETER"
3587 ><I
3588 >password server =</I
3589 ></TT
3590 ></A
3591 > line in the [global]
3592         section to read: </P
3593 ><P
3594 ><B
3595 CLASS="COMMAND"
3596 >password server = DOMPDC DOMBDC1 DOMBDC2</B
3597 ></P
3598 ><P
3599 >These are the primary and backup domain controllers Samba 
3600         will attempt to contact in order to authenticate users. Samba will 
3601         try to contact each of these servers in order, so you may want to 
3602         rearrange this list in order to spread out the authentication load 
3603         among domain controllers.</P
3604 ><P
3605 >Alternatively, if you want smbd to automatically determine 
3606         the list of Domain controllers to use for authentication, you may 
3607         set this line to be :</P
3608 ><P
3609 ><B
3610 CLASS="COMMAND"
3611 >password server = *</B
3612 ></P
3613 ><P
3614 >This method, which was introduced in Samba 2.0.6, 
3615         allows Samba to use exactly the same mechanism that NT does. This 
3616         method either broadcasts or uses a WINS database in order to
3617         find domain controllers to authenticate against.</P
3618 ><P
3619 >Finally, restart your Samba daemons and get ready for 
3620         clients to begin using domain security!</P
3621 ></DIV
3622 ><DIV
3623 CLASS="SECT1"
3624 ><HR><H1
3625 CLASS="SECT1"
3626 ><A
3627 NAME="AEN743"
3628 >5.2. Samba and Windows 2000 Domains</A
3629 ></H1
3630 ><P
3631 >Many people have asked regarding the state of Samba's ability to participate in
3632 a Windows 2000 Domain.  Samba 2.2 is able to act as a member server of a Windows
3633 2000 domain operating in mixed or native mode.</P
3634 ><P
3635 >There is much confusion between the circumstances that require a "mixed" mode
3636 Win2k DC and a when this host can be switched to "native" mode.  A "mixed" mode
3637 Win2k domain controller is only needed if Windows NT BDCs must exist in the same
3638 domain.  By default, a Win2k DC in "native" mode will still support
3639 NetBIOS and NTLMv1 for authentication of legacy clients such as Windows 9x and 
3640 NT 4.0.  Samba has the same requirements as a Windows NT 4.0 member server.</P
3641 ><P
3642 >The steps for adding a Samba 2.2 host to a Win2k domain are the same as those
3643 for adding a Samba server to a Windows NT 4.0 domain. The only exception is that 
3644 the "Server Manager" from NT 4 has been replaced by the "Active Directory Users and 
3645 Computers" MMC (Microsoft Management Console) plugin.</P
3646 ></DIV
3647 ><DIV
3648 CLASS="SECT1"
3649 ><HR><H1
3650 CLASS="SECT1"
3651 ><A
3652 NAME="AEN748"
3653 >5.3. Why is this better than security = server?</A
3654 ></H1
3655 ><P
3656 >Currently, domain security in Samba doesn't free you from 
3657         having to create local Unix users to represent the users attaching 
3658         to your server. This means that if domain user <TT
3659 CLASS="CONSTANT"
3660 >DOM\fred
3661         </TT
3662 > attaches to your domain security Samba server, there needs 
3663         to be a local Unix user fred to represent that user in the Unix 
3664         filesystem. This is very similar to the older Samba security mode 
3665         <A
3666 HREF="smb.conf.5.html#SECURITYEQUALSSERVER"
3667 TARGET="_top"
3668 >security = server</A
3669 >, 
3670         where Samba would pass through the authentication request to a Windows 
3671         NT server in the same way as a Windows 95 or Windows 98 server would.
3672         </P
3673 ><P
3674 >Please refer to the <A
3675 HREF="winbind.html"
3676 TARGET="_top"
3677 >Winbind 
3678         paper</A
3679 > for information on a system to automatically
3680         assign UNIX uids and gids to Windows NT Domain users and groups.
3681         This code is available in development branches only at the moment,
3682         but will be moved to release branches soon.</P
3683 ><P
3684 >The advantage to domain-level security is that the 
3685         authentication in domain-level security is passed down the authenticated 
3686         RPC channel in exactly the same way that an NT server would do it. This 
3687         means Samba servers now participate in domain trust relationships in 
3688         exactly the same way NT servers do (i.e., you can add Samba servers into 
3689         a resource domain and have the authentication passed on from a resource
3690         domain PDC to an account domain PDC.</P
3691 ><P
3692 >In addition, with <B
3693 CLASS="COMMAND"
3694 >security = server</B
3695 > every Samba 
3696         daemon on a server has to keep a connection open to the 
3697         authenticating server for as long as that daemon lasts. This can drain 
3698         the connection resources on a Microsoft NT server and cause it to run 
3699         out of available connections. With <B
3700 CLASS="COMMAND"
3701 >security = domain</B
3702 >, 
3703         however, the Samba daemons connect to the PDC/BDC only for as long 
3704         as is necessary to authenticate the user, and then drop the connection, 
3705         thus conserving PDC connection resources.</P
3706 ><P
3707 >And finally, acting in the same manner as an NT server 
3708         authenticating to a PDC means that as part of the authentication 
3709         reply, the Samba server gets the user identification information such 
3710         as the user SID, the list of NT groups the user belongs to, etc. All 
3711         this information will allow Samba to be extended in the future into 
3712         a mode the developers currently call appliance mode. In this mode, 
3713         no local Unix users will be necessary, and Samba will generate Unix 
3714         uids and gids from the information passed back from the PDC when a 
3715         user is authenticated, making a Samba server truly plug and play 
3716         in an NT domain environment. Watch for this code soon.</P
3717 ><P
3718 ><EM
3719 >NOTE:</EM
3720 > Much of the text of this document 
3721         was first published in the Web magazine <A
3722 HREF="http://www.linuxworld.com"
3723 TARGET="_top"
3724 >       
3725         LinuxWorld</A
3726 > as the article <A
3727 HREF="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"
3728 TARGET="_top"
3729 >Doing 
3730         the NIS/NT Samba</A
3731 >.</P
3732 ></DIV
3733 ></DIV
3734 ><DIV
3735 CLASS="CHAPTER"
3736 ><HR><H1
3737 ><A
3738 NAME="AEN764"
3739 >Chapter 6. How to Configure Samba 2.2 as a Primary Domain Controller</A
3740 ></H1
3741 ><DIV
3742 CLASS="SECT1"
3743 ><H1
3744 CLASS="SECT1"
3745 ><A
3746 NAME="AEN781"
3747 >6.1. Prerequisite Reading</A
3748 ></H1
3749 ><P
3750 >Before you continue readingin this chapter, please make sure 
3751 that you are comfortable with configuring basic files services
3752 in smb.conf and how to enable and administrate password 
3753 encryption in Samba.  Theses two topics are covered in the
3754 <A
3755 HREF="smb.conf.5.html"
3756 TARGET="_top"
3757 ><TT
3758 CLASS="FILENAME"
3759 >smb.conf(5)</TT
3760 ></A
3761
3762 manpage and the <A
3763 HREF="EMCRYPTION.html"
3764 TARGET="_top"
3765 >Encryption chapter</A
3766
3767 of this HOWTO Collection.</P
3768 ></DIV
3769 ><DIV
3770 CLASS="SECT1"
3771 ><HR><H1
3772 CLASS="SECT1"
3773 ><A
3774 NAME="AEN787"
3775 >6.2. Background</A
3776 ></H1
3777 ><DIV
3778 CLASS="NOTE"
3779 ><BLOCKQUOTE
3780 CLASS="NOTE"
3781 ><P
3782 ><B
3783 >Note: </B
3784 ><EM
3785 >Author's Note :</EM
3786 > This document is a combination 
3787 of David Bannon's Samba 2.2 PDC HOWTO and the Samba NT Domain FAQ. 
3788 Both documents are superceeded by this one.</P
3789 ></BLOCKQUOTE
3790 ></DIV
3791 ><P
3792 >Version of Samba prior to release 2.2 had marginal capabilities to
3793 act as a Windows NT 4.0 Primary Domain Controller (PDC).  Beginning with 
3794 Samba 2.2.0, we are proud to announce official support for Windows NT 4.0 
3795 style domain logons from Windows NT 4.0 (through SP6) and Windows 2000 (through 
3796 SP1) clients.  This article outlines the steps necessary for configuring Samba 
3797 as a PDC.  It is necessary to have a working Samba server prior to implementing the