Windows file sharing on a Linux server

In this guide, we will set up your home Linux server to share files in a Windows-friendly format. This is ideal for interacting with Windows PCs on your network, or for generic appliances such as media streaming boxes.

First we install Samba:

[root@zeus ~]# yum install samba

Before we configure Samba, you need to think about who is going to need access to this. For an enterprise solution, clearly you’ll need some fancy authentication backend. For a home situation, it’s easier to set up a handful of users on your local system. Let’s assume you want to set up access for your wife, Sue.

[root@zeus ~]# useradd sue
[root@zeus ~]# passwd sue

So now Sue is set up on the server and has a password. Now we need to tell Samba that it’s OK to let system users get access to files. Open the file /etc/samba/smbusers. It should already have a couple of entries in, but you will need to add one for each user you want to use the file shares.

# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
sue = sue
tvuser = tvuser

We back up and open the Samba config file for editing:

[root@zeus ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.old
[root@zeus ~]# vim /etc/samba/smb.conf

Delete all the contents of smb.conf. For now just add the contents of the global section below, but don’t close your editor yet – we need to define the shares.

dns proxy = no
log file = /var/log/samba/%m.log
cups options = raw
server string = Samba Server
username map = /etc/samba/smbusers
hosts allow = 192.168.0. 127.
max log size = 50

Now for some examples of how to define shares. The homes example automatically connects each user to their home directory, e.g. /home/sue. If you want this, keep it. If you don’t use your Linux home directories, don’t bother adding this section.

comment = Home Directories
browseable = no
writeable = yes

This next one is an example of a media share for a TV streaming box or similar. All users can read it; only sue can write to it.

path = /media/public
writeable = yes
public = yes
write list = sue

This one is a private share only accessible by sue

path = /media/private
writeable = yes
valid users = sue

After you’ve defined your shares, save the config, start the service and set it to run on boot

[root@zeus ~]# service smb start
[root@zeus ~]# chkconfig smb on

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: