Previously I had written an article about setting up a file server using FreeBSD and Samba I still think that FreeBSD is a great choice for a file server. That said I am now using LXC and LXD containers on Ubuntu and samba works very much the same way on CentOS-7 which I can run as a container on Ubuntu to get a very similar result. Setting Samba up on a base CentOS-7 install should work much the same way if you have a CentOS-7 server you can skip the Container Stuff.
I am assuming that your starting point is an up to date Ubuntu 16.04 server.
for this use case we are assuming that our system is on a local network (not internet exposed) We want our container to have a LAN IP so that other computers on our LAN can talk to it there are a couple different ways to set this up. The way that I have found to be the easiest in my case has been to change the default container profile so that the nictype of the containers is set to macvlan.
run ifconfig which should give you something like this
ifconfig enp0s25 Link encap:Ethernet HWaddr d0:50:99:79:98:dd inet addr:192.168.88.2 Bcast:192.168.88.255 Mask:255.255.255.0 inet6 addr: fe80::d250:99ff:fe79:98dd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1354182 errors:0 dropped:132 overruns:0 frame:0 TX packets:704181 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1724747998 (1.7 GB) TX bytes:598961741 (598.9 MB) Interrupt:20 Memory:efd00000-efd20000
You may have more adapters find the one that has the IP you ssh’d into and take note of its name in my case its enp0s25
Changing nictype to macvlan, lxc profile edit default will open the profile with nano.
Lxc profile edit default #Change nictype: bridged To -> nictype: macvlan #Change parent: whatever To -> parent: your primary nic name (enp0s25 in my case)
Container Stuff: Build a CentOS-7 Container
lxc launch images:centos/7/amd64 smbserver
drop into the containers shell
lxc exec smbserver /bin/bash
Setting up SAMBA on CentOS-7
If your not using containers then you should be SSH’d into your server now regardless go ahead and install updates, If you have an Active Directory environment you can also setup samba to use AD for authentication using my notes here if not continue on.
yum install samba
systemctl enable smb.service systemctl start smb.service
Adding users (both to the system and to samba)
# adding a user with useradd (-m tells useradd to create a home directory) useradd -m joe # set the users password so they can login passwd joe # set the samba password so they can login using samba smbpasswd -a joe
If all you wanted is for users to be able to store things in their home folder than your done the default smb.conf configuration shares out home folders by default. if you want to create a different file share you will need to edit your smb.conf file.
A basic file share for users bob, joe and the group @sysadmins
[sysadmin_share] comment = My shared folder path = /path to the shared folder public = no writable = yes guest ok = no valid users = joe, bob, @sysadmins
Group Setup for the sysadmins group and sysadmins share
groupadd sysadmins mkdir /opt/sysadmins chgrp sysadmins /opt/sysadmins chmod -R 770 /opt/sysadmins sudo usermod -a -G sysadmins jeff
Now all that’s left to do is go to a client system and try to access the share.