Like it or not, most end-user PCs today are running some flavor of the Windows operating system. Small businesses often start very small with just a couple of PCs but in time the numbers increase. As small businesses grow, they often find that they wish to share files between workers. While there are a number of ways to accomplish file sharing, often they settle on sharing files directly from their PCs using a “workgroup”.
Workgroups are fine for very small numbers of PCs (less than 10) but quickly become a headache as the network grows and more folks are sharing their files with coworkers. Who has the file I need? Why can’t I access it today, is the PC turned off? Security is also an issue, access to these files is often configured to allow everyone “full control” since this is the easiest way to set this up but this is not appropriate for files that are sensitive such as payroll and HR. These situations are where workgroups begin to break down and fall apart from a management standpoint. Having a central place to store files with centralized authentication and single sign-on would make life much easier.
Once a small business realizes it is time to get a server, they often put off the purchase due to the cost. There is an alternative to the expense of a Windows server; Linux and Samba! Linux is an open-source operating system kernel (an excellent distribution of Linux for servers is http://www.centos.org) which can be freely downloaded and installed along with Samba (http://www.samba.org) free open-source software that simulates a Windows domain to the Windows PCs on the network. Linux and Samba whose name is derived from the protocol Windows uses for file sharing (Server Message Block [SMB]) have been around for many years. While Samba can scale into the thousands of clients, it currently does not provide the ability to control those clients with Group Policy which becomes desirable when dealing with a large number of PCs or when a fine amount of control over those clients is required so it is less suited to the large environment.
Many Windows-trained IT folks dismiss Linux because it appears to be too complicated; the commandline can be intimidating to someone who is used to working with a mouse and GUI. If you take it slow and build up your knowledge you will likely find how powerful the command-line is and how much easier it can make your life when you learn to script. If you are new to Linux and its text-based configuration, there is a tool that can be installed to simplify your life called Webmin (http://www.webmin.com) another free open source application that allows the administrator to use a web browser to manage many aspects of the Linux server.
Samba is very flexible but that flexibility comes at the cost of some complexity. Samba can be configured so that the Linux server appears as a “member” server in a Windows domain. In this scenario, the Linux/Samba server can act as a file/print server to an existing domain. Or (the point of this article) Samba can also be configured instead to act as a domain controller. When configured as a domain controller, the Windows client PCs are joined to the Samba domain just like they would be joined to a Windows domain and from the perspective of the Windows clients, they won’t know the difference. Samba will provide the centralized authentication and file-sharing capabilities required. An excellent resource for starting out with Samba is “Samba-3 By Example” (http://www.samba.org/samba/docs/Samba-Guide.pdf) which provides six configuration scenarios from the very simple small network to the complicated large network, with each chapter building upon the last. Chapter 3 “Secure Office Networking” is probably the best option for a small business network since it strikes a good balance between the need for security/ability to grow and complexity.
If done correctly, with Linux and Samba you will have a solid server that provides centralized authentication/single sign-on and secure file/printer sharing. The cost will be in terms of hardware and your time/effort but you will likely learn much along the way. Should you need to install a similar system in the future simply copy those text-based configuration files to the new server and with just a few changes you’ve got the new server ready to go.