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!