Samba is a free and open-source software package that provides seamless file and print services to SMB/CIFS clients. Samba is freely available, unlike other SMB/CIFS implementations and allows for interoperability between Linux/Unix servers and Windows OS-based clients. Using Samba we can easily share files and folders between GNU/Linux and Windows OS systems.
In this tutorial we are going to implement Samba server on OpenSUSE 13.1.
Install Samba
Login as root user:
> su
Install Samba with following command:
# zypper install samba*
Configure Fully Accessed Anonymous Share
Let us create directory /share1 and set full permission. Anybody can access this share:
# mkdir /share1 # chmod -R 777 /share1/
Open up Samba configuration file /etc/samaba/smb.conf file:
# vi /etc/samba/smb.conf
And edit as follows;
Make sure that you have the following line in [global] section. If not found, just add it as shown below:
[...] passdb backend = tdbsam [...]
Scroll down further and add this share details at the bottom of the Samba configuration file:
[Full Share] path = /share1 writable = yes browsable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777
Save and close the file. Enable and start Samba service to save the changes:
# systemctl enable smb.service # systemctl enable nmb.service # systemctl start smb.service # systemctl start nmb.service
Test Samba Configuration
Execute the following command to verify the Samba configuration file. It displays the errors if we have any:
# testparm
The above command will display the output as shown below:
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Can't find include file /etc/samba/dhcp.conf Processing section "[homes]" Processing section "[profiles]" Processing section "[users]" Processing section "[groups]" Processing section "[printers]" Processing section "[print$]" Processing section "[Full Share]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] map to guest = Bad User printcap name = cups logon path = \\%L\profiles\.msprofile logon drive = P: logon home = \\%L\%U\.9xprofile usershare allow guests = Yes idmap config * : backend = tdb cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S read only = No inherit acls = Yes browseable = No [profiles] comment = Network Profiles Service path = %H read only = No create mask = 0600 directory mask = 0700 store dos attributes = Yes [users] comment = All users path = /home read only = No inherit acls = Yes veto files = /aquota.user/groups/shares/ [groups] comment = All groups path = /home/groups read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp create mask = 0600 printable = Yes print ok = Yes browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @ntadmin, root force group = ntadmin create mask = 0664 directory mask = 0775 [Full Share] path = /share1 read only = No create mask = 0777 directory mask = 0777 guest only = Yes guest ok = Yes
I don’t want to mess up iptables, so i turned it off:
# rcSuSEfirewall2 stop
Test Anonymous Samba Share on Windows OS Client
Login to Windows OS machine and go to Start -> Run. Enter the IP address of your Samba server.
Now you’ll able to access the fully accessed Samba share from your Windows OS clients.
Create some files and folders in side the share. In my case, I created a folder called unixmen in my fully accessed anonymous Samba share called Full Share.
Let us create a Samba user called sk under Samba group called smbgroup:
# useradd sk # passwd sk # groupadd smbgroup # usermod -a -G smbgroup sk
Now assign the user sk to Samba user database with following command:
# smbpasswd -a sk New SMB password: Retype new SMB password: Added user sk.
Create a new share called /share2 and assign this share to smbgroup, so that the users of smbgroup can access the /share2 directory:
# mkdir /share2 # chmod -R 755 /share2/ # chown -R sk:smbgroup /share2
Add the above /share2 directory details in Samba configuration file as shown below;
Open up samba configuration file:
# vi /etc/samba/smb.conf
Add the /share2 details at the end:
[secure] path = /share2 writable = yes browsable = yes guest ok = no valid users = @smbgroup
Restart Samba service to save the changes:
# systemctl restart smb.service # systemctl restart nmb.service
Now test the configuration file with following command:
# testparm
You may see the following like output:
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Can't find include file /etc/samba/dhcp.conf Processing section "[homes]" Processing section "[profiles]" Processing section "[users]" Processing section "[groups]" Processing section "[printers]" Processing section "[print$]" Processing section "[Full Share]" Processing section "[secure]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] map to guest = Bad User printcap name = cups logon path = \\%L\profiles\.msprofile logon drive = P: logon home = \\%L\%U\.9xprofile usershare allow guests = Yes idmap config * : backend = tdb cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S read only = No inherit acls = Yes browseable = No [profiles] comment = Network Profiles Service path = %H read only = No create mask = 0600 directory mask = 0700 store dos attributes = Yes [users] comment = All users path = /home read only = No inherit acls = Yes veto files = /aquota.user/groups/shares/ [groups] comment = All groups path = /home/groups read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp create mask = 0600 printable = Yes print ok = Yes browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @ntadmin, root force group = ntadmin create mask = 0664 directory mask = 0775 [Full Share] path = /share1 read only = No create mask = 0777 directory mask = 0777 guest only = Yes guest ok = Yes [secure] path = /share2 valid users = @smbgroup read only = No
Test Authenticated Share on Windows OS Client
Now go to the Windows OS client and check the authenticated share. It will ask you to enter username and password to access the Samba shares. Enter the username and password that you have created earlier. You’re done!