You are on page 1of 2

The easiest way to set up Samba for file-sharing

By Vincent Danen
Samba, Apache, and MySQL are probably the biggest open source projects found on Linux
(aside from the Linux kernel itself, of course). All three have really elevated Linux for use in
home networks and corporate environments.
With them, anyone can have a file and print server, a Web server, or a database. All three come
with pretty much every Linux distribution you can find.
The most ubiquitous of the three is probably Samba, because it and the functionality it provides
is found in every operating system. Linux, OS X, the BSDs and others use Samba. It is directly
compatible with Windows because it uses the Windows file and print sharing protocols to allow
for sharing Windows file systems on Linux and vice versa.
Samba allows for a lot of configuration, and there are many options to use -- primarily relating to
authentication. When Samba 4 finally lands, it will be an incredible release with Active
Directory support and being able to act as an Active Directory server, with internal LDAP and
Kerberos servers to fully flesh out what is necessary for full integration with Windows networks.
Until then, you can still hack Samba up to do a lot of these things, and it works fantastic as a
client in Windows networks. You can make Samba work with Active Directory, with LDAP, and
with local passwords.
Most people will just want a stand-alone Samba server somewhere on their network and that is
the easiest to set up. To begin with, you need Samba installed on your system. This can be done
by installing the "samba" or "samba3" (on some distributions) package, either using yum or apt-
get or whatever mechanism your distribution uses to install packages. Once Samba is installed,
edit the /etc/samba/smb.conf file. If you're using Red Hat Enterprise Linux or Fedora, you will
need to make further changes if you have SELinux support enabled; the comments in smb.conf
will help with the additional steps.
A very basic smb.conf file will look like this:
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb = tdbsam

[homes]
comment = Home Directories
browseable =no
writable = yes
This is an absolutely basic configuration file. If you already have a workgroup defined, change
the "workgroup" value to whatever you have already defined for the network. The rest can
remain as-is. This will allow you the ability to connect to the server and mount your home
directory on the server from any other machine on the network.
The next step is to create the local passwords. Because Samba does not use the authentication
credentials of the system (i.e., via PAM), you need to add the user to the Samba user database:
# smbpasswd -a user
Provide the password for the user in question. Also note that this user must also exist on the
system, so if this is a new user you must use useradd to create the user and passwd to set their
password. If the user already exists on the server, there is no need to do anything more than set
their Samba password.
Once this is all complete, start the Samba server (or restart it):
# service smb start
Now, from another system, you can use smbclient to list available shares:
% smbclient -L \\server.myhost.com
Password:
Domain=[CERBERUS] OS=[Unix] Server=[Samba 3.5.4-62.fc13]

Sharename Type Comment


--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.5.4-62.fc13)
user Disk Home Directories
Domain=[CERBERUS] OS=[Unix] Server=[Samba 3.5.4-62.fc13]

Server Comment
--------- -------

Workgroup Master
--------- -------
To mount the share, connect to \\server.myhost.com\user using the network browser in GNOME,
the Finder in OS X, or Windows Explorer in Windows.
This is the easiest way to set up Samba for file sharing. Other mechanisms exist for sharing files
on a LAN, such as NFS or SSHFS, but Samba is quick, easy to set up, and reliable. It is also
cross-platform, making it easy to share files amongst various operating systems.

You might also like