Thursday, June 26, 2014

Setup a Samba Media Server on uBuntu

1. Prerequisites
- Your Linux box should have an static ip-address.
In case you're getting your ip from a router/server via DHCP make sure it's configured to provide a fixed dhcp-lease. If that's no valid option you cannot use WINS ... more on this way down.
- You need to have samba installed.
If you haven't done so already open a terminal and type:

Code:

sudo apt-get install samba

Don't close the terminal upon installation - we still need the commandline to get several tasks done!
2. Getting samba configured
First, let us make sure samba isn't running:

Code:

sudo /etc/init.d/samba stop


As a starting point I included an smb.conf below, and there are only a few simple things you may need to tweak.

Since the installation of samba just installed a rather useless template file we're going to rename it - we keep the file just in case.



Code:



sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.template


Next we create a new empty file



Code:



sudo touch /etc/samba/smb.conf


And finally we need to open the file inside an editor



Code:



sudo gedit /etc/samba/smb.conf


NOTE: If you're on KDE replace "gedit" with "kate"


Copy / Paste the contents of the code-section below into your editor and read on ...



Code:



[global]
; General server settings
netbios name = YOUR_HOSTNAME
server string =
workgroup = YOUR_WORKGROUP
announce version = 5.0
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192

passdb backend = tdbsam
security = user
null passwords = true
username map = /etc/samba/smbusers
name resolve order = hosts wins bcast

wins support = yes

printing = CUPS
printcap name = CUPS

syslog = 1
syslog only = yes

; NOTE: If you need access to the user home directories uncomment the
; lines below and adjust the settings to your hearts content.
;[homes]
;valid users = %S
;create mode = 0600
;directory mode = 0755
;browseable = no
;read only = no
;veto files = /*.{*}/.*/mail/bin/

; NOTE: Only needed if you run samba as a primary domain controller.
; Not needed as this config doesn't cover that matter.
;[netlogon]
;path = /var/lib/samba/netlogon
;admin users = Administrator
;valid users = %U
;read only = no

; NOTE: Again - only needed if you're running a primary domain controller.
;[Profiles]
;path = /var/lib/samba/profiles
;valid users = %U
;create mode = 0600
;directory mode = 0700
;writeable = yes
;browseable = no

; NOTE: Inside this place you may build a printer driver repository for
; Windows - I'll cover this topic in another HOWTO.
[print$]
path = /var/lib/samba/printers
browseable = yes
guest ok = yes
read only = yes
write list = root
create mask = 0664
directory mask = 0775

[printers]
path = /tmp
printable = yes
guest ok = yes
browseable = no

; Uncomment if you need to share your CD-/DVD-ROM Drive
;[DVD-ROM Drive]
;path = /media/cdrom
;browseable = yes
;read only = yes
;guest ok = yes

[MyFiles]
path = /media/samba/
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
force user = YOUR_USERNAME
force group = YOUR_USERGROUP


Ok, I already mentioned that there are a few simple things you may need to tweak; so here they are:

-> netbios name = YOUR_HOSTNAME


Replace "YOUR_HOSTNAME" with your desired hostname (don't use spaces!). Best pratice would be to use the same name you configured upon installation.


Example:


netbios name = DAPPER


-> workgroup = YOUR_WORKGROUP


Replace "YOUR_WORKGROUP" with the name of your workgroup, but make sure you're using the same as configured in Windows.


To find out the Workgroup name in Windows follow these steps:


- Click "START"


- Click "Control Panel"


- Click "System"


- Click the 2nd Tab entitled "Computername" and find the name of the Workgroup there.


Example:


workgroup = MSHOME


-> wins support = yes


If your box doesn't have a static ip-address, or you cannot configure your router/server to provide you with a fixed dhcp-lease, change this configuration parameter to "no".


In this case you cannot use the benefits of WINS.


-> [MyFiles]


This is the name of the share. Leave it as it is or adjust it to whatever you prefer. Don't use more than 31 characters and try to avoid spaces!


-> path = /media/samba/


This suggests that you've mounted an hard drive or partition on /media/samba where all the shared files will be stored.


In case you don't have an extra hard drive/partition you may also create folder.


I assume you've been wise enough to put /home onto a separate partition having an reasonable amount of storage space.


To create the folder type (inside a new terminal) ...



Code:



sudo mkdir /home/samba


... and adjust "path =" to read ...

path = /home/samba/


Remember that this is just an example - you are free to put things wherever you like.


-> force user = YOUR_USERNAME


-> force group = YOUR_USERNAME


Well, this should say it all. Replace "YOUR_USERNAME" with the name you use for login (no spaces!).


Example:


force user = stormbringer


force group = stormbringer


Now we completed the part of editing smb.conf


Save the file and close gedit.


Since we are going to share the folder with other users we should now make sure that the permissions are set. Type:



Code:



sudo chmod 0777 /media/samba


NOTE: Don't forget to correct the path to the location you chose above!


That's it - now we need to start samba ...


1.1 Starting samba and setting up user accounts


Let us fire up samba for the first time. Type:



Code:



sudo /etc/init.d/samba start


NOTE: If the above command doesn't work for you, try:



sudo smbd reload


Once Samba has restarted, use this command to check your smb.conf for any syntax errors





testparm


Time to add yourself as an samba user.

NOTE: You will be asked for a password - make sure you use the same as you use for login!



Code:



sudo smbpasswd -L -a your_username
sudo smbpasswd -L -e your_username


In case you need other users to be able to access the share you need to add them to your system AND samba as well. Make sure you use the very same Windows usernames and passwords!

NOTE: Windows XP doesn't set passwords for its useraccount per default. If you haven't set a password on your XP box just press enter when prompted to enter a password for the user account you're about to create!


In the following example we will add an user called "mark" ...


Example:



Code:



sudo useradd -s /bin/true mark
sudo smbpasswd -L -a mark
sudo smbpasswd -L -e mark


The "-s /bin/true" in the first line prevents the users from being able to access the commandline of your linux box ("-s" stands for "shell"). I strongly advise you to follow this recommendation! Don't change that setting to a valid login-shell unless you really know what you are doing!

Repeat this step until you configured all user accounts!



 



File Sharing (Advanced)



We started with the base of Samba file-sharing. The above-mentioned items should be enough to get you started. Next we will add details that you might or might not need.



If you have more than one network card


If you have more than one network card (or interface) then you have to define where you want Samba to run. In smb.conf under the [global] section, add:



interfaces = 127.0.0.1, 192.168.0.31/24
bind interfaces only = yes


The first address (127.0.0.1), is a loopback network connection (it's your own machine). The second address (192.168.0.31), is the address of the card you want Samba to run on, the second number (24) is the subnet default for a CLASS-C network. It may vary depending on your network.



With "bind interfaces only" you limit which interfaces on a machine will serve SMB requests.



You can limit which IP address can connect to your Samba server adding these lines:



hosts allow = 127.0.0.1, 192.168.0.31, 192.168.0.32
hosts deny = 0.0.0.0/0


The loopback address must be present in the first line. The second line deny access from all IP address not in the first line.

No comments: