You are reading a book about Samba, a software suite that networks Windows, Unix, and other operating systems using Windows' native networking protocol. Samba allows Unix servers to offer Windows networking services by matching the filesystem and networking models of Unix to those of Windows. Samba acts as a bridge between the two systems, connecting the corresponding parts of their architectures and providing a translation wherever necessary.
Bridging the gap between systems as dissimilar as Windows and Unix is a complex task, which Samba handles surprisingly well. To be a good Samba administrator, your abilities must parallel Samba's. For starters, you need to know basic Unix system and network administration and have a good understanding of Windows filesystems and networking fundamentals. In addition, you need to learn how Samba fills in the "gray area" between Unix and Windows. Once you know how everything fits together, you'll find it easy to configure a Samba server to provide your network with reliable and high-performance computational resources.
Our job is to make all of that easier for you. We do this by starting out with a quick and yet comprehensive tour of Windows networking in Chapter 1, followed by tutorially-oriented Chapter 2 and Chapter 3, which tell you how to set up a minimal Samba server and configure Windows clients to work with it. Most likely, you will be surprised how quickly you can complete the required tasks.
We believe that a hands-on approach is the most effective, and you can use the Samba server you build in Chapter 2 and Chapter 3 as a test system for trying out examples that we show and describe throughout the book. You can jump around from chapter to chapter if you like, but if you continue sequentially from Chapter 4 onward, by the time you finish the book you will have a well-configured production Samba server ready for use. All you have to do is add the appropriate support for your intended purpose as we explain how to use each feature.
This book is primarily intended for Unix administrators who need to support Windows clients on their network, as well as anyone who needs to access the resources of a Windows network environment from a Unix client. While we assume you are familiar with basic Unix system administration, we do not assume you are a networking expert. We do our best along the way to help out with unusual definitions and terms.
Furthermore, we don't assume that you are an expert in Microsoft Windows. We carefully explain all the essential concepts related to Windows networking, and we go through the Windows side of the installation task in considerable detail, providing examples for both Windows 95/98/Me and Windows NT/2000/XP, which are significantly different. For the Unix side, we give examples that work with common Unix operating systems, such as Linux, Solaris, FreeBSD, and Mac OS X.
Here is a quick description of each chapter:
Chapter 1 introduces Samba and its capabilities, then describes the most important concepts of NetBIOS and SMB/CIFS networking. Finally, we give you a quick overview of the daemons and utilities that are included in the Samba distribution.
Chapter 2 covers configuring, compiling, installing, setting up, and testing the Samba server on a Unix platform.
Chapter 3 explains how to configure Microsoft Windows 95/98/Me and Windows NT/2000/XP clients to participate in an SMB network.
Chapter 4 explains the ins and outs of Windows NT domains and how to configure Samba to work in a network set up as a Windows NT domain.
Chapter 5 describes methods for accessing SMB shares on the network from Unix client systems.
Chapter 6 gets you up to speed on the structure of the Samba configuration file and shows you how to take control of file-sharing services.
Chapter 7 introduces name resolution, which is used to convert NetBIOS computer names into IP addresses, and browsing, the method used in SMB networking to find what resources are being shared on the network.
Chapter 8 continues the discussion of file-sharing options, and covers more advanced functions such as permissions, access control lists, opportunistic locks, and setting up a Distributed filesystem tree.
Chapter 9 discusses how to set up Samba users, introduces you to Samba security, and shows you how to work with encrypted and nonencrypted passwords.
Chapter 10 discusses printer setup for sharing Unix printers on the SMB network, and allowing Unix workstations to access SMB shared printers.
Chapter 11 bundles several miscellaneous topics associated with Samba, such as configuring Samba shares for programmers and internationalization issues.
Chapter 12 details what to do if you have problems installing Samba. This comparatively large chapter is packed with troubleshooting hints and strategies for identifying what is going wrong.
Appendix A provides working examples of smb.conf files for use in configuring Samba for its more common applications. You can easily modify the examples for use in a wide variety of circumstances.
Appendix B covers each option that can be used in the Samba configuration file.
Appendix C is a quick reference that covers each server daemon and tool that make up the Samba suite.
Appendix D explains how to download the latest development version of the Samba source code using CVS.
Appendix E documents each option that can be used with the configure command before compiling the Samba source code.
Appendix F includes directions for sharing files and printers with the Server edition of Mac OS X.
Appendix G is the copyright license under which this book is published.
The following font conventions are followed throughout this book:
Filenames, file extensions, URLs, executable files, command options, and emphasis.
Samba configuration options, computer names, user and group names, hostnames, domain names, other code that appears in the text, and command-line information that should be typed verbatim on the screen.
Commands that are entered by the user and new configuration options that we wish to bring to the attention of the reader.
Replaceable content in code and command-line information.
This designates a note, which is an important aside to the nearby text.
This designates a warning related to the nearby text.
We have tested and verified the information in this book to the best of our ability, but you might find that features have changed (or even that we have made mistakes!). Please let us know about any errors you find, as well as your suggestions for future editions, by writing to:
O'Reilly & Associates, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
(800) 998-9938 (in the United States or Canada)
(707) 829-0515 (international/local)
(707) 829-0104 (fax)
To ask technical questions or comment on the book, send email to:
We have a web page for this book where we list examples and any plans for future editions. You can access this information at:
You can also contact Jay Ts, the lead author of this edition, through his web site at:
We thank Leon Towns-von Stauber for thoroughly researching the use of Samba on Mac OS X and writing material that appears in Chapter 2, Chapter 5, and Chapter 10, as well as the entire Appendix F. We also thank our technical reviewers Sam Johnston, Matthew Temple, Marty Leisner, and Don McCall.
This book would have been extremely difficult to write if it hadn't been for the copy of VMware Workstation graciously provided by VMware, Inc. I want to thank Rik Farrow for his clarifying comments on security topics related to Samba and Windows, and both him and Rose Moon for their supportive friendship. Thanks also go to Mark Watson for his encouragement and advice on the topic of authoring technical books. Additionally, I'd like to express my appreciation to Andy Oram at O'Reilly for being a supportive, friendly, and easygoing editor, and for offering me terms that I could say yes to—something that a few other publishers didn't even approach. SuSE, Inc. generously provided a copy of SuSE Linux 8.1 Professional.
I'd first like to recognize Dave Collier-Brown and Peter Kelly for all their help in the creation of this book. I'd also like to thank each technical reviewer who helped polish this book into shape on such short notice: Matthew Temple, Jeremy Allison, and of course Andrew Tridgell. Andrew and Jeremy deserve special recognition, not only for creating such a wonderful product, but also for providing a tireless amount of support in the final phase of this book—hats off to you, guys! A warm hug goes out to my wife Michelle, who once again put up with a husband loaded down with too much caffeine and a tight schedule. Thanks to Dave Sifry and the people at LinuxCare, San Francisco, for hosting me on such short notice for Andrew Tridgell's visit. And finally, a huge amount of thanks to our editor, Andy Oram, who (very) patiently helped guide this book through its many stages until we got it right.
I'd particularly like to thank Joyce, who put up with me during the sometimes exciting development of the book. My thanks to Andy Oram, who was kind enough to provide the criticism that allowed me to contribute; the crew at ACE (Opcom) who humored the obvious madman in their midst; and Ian MacMillan, who voluntarily translated several of my early drafts from nerd to English. I would also like to give special thanks to Perry Donham, Drew Sullivan, and Jerry DeRoo for starting and sustaining this mad project. Finally, I'd like to thank Bob Eckstein for a final, sustained, and professional effort that lifted the whole book up to the level that Andy needed.
We would especially like to give thanks to Perry Donham and Peter Kelly for helping mold the first draft of this book. Although Perry was unable to contribute to subsequent drafts, his material was essential to getting this book off on the right foot. In addition, some of the browsing material came from text originally written by Dan Shearer for O'Reilly.