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.
[global]
dns proxy = no
log file = /var/log/samba/%m.log
cups options = raw
server string = Samba Server
socket options = TCP_NODELAY IPTOS_THROUGHPUT
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.
[homes]
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.
[media]
path = /media/public
writeable = yes
public = yes
write list = sue
This one is a private share only accessible by sue
[private]
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