Install and Configure Samba Server on OpenSUSE 13.1

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.

Windows 7, 1 nic, bridge, internet [Running] - Oracle VM VirtualBox_004Now you’ll able to access the fully accessed Samba share from your Windows OS clients.

Windows 7, 1 nic, bridge, internet [Running] - Oracle VM VirtualBox_005Create 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.

Windows 7, 1 nic, bridge, internet [Running] - Oracle VM VirtualBox_006Create an Authenticated 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!

Windows 7, 1 nic, bridge, internet [Running] - Oracle VM VirtualBox_007That’s it. Now you’ll able to access the Samba shares.