Saturday, April 26, 2014

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 implemenSamba 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 /home/suraj
# chmod -R 777 /home/suraj
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 = /home/suraj
         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 = /home/suraj
     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 linux in my fully accessed anonymous Samba share called Full Share.
Create an Authenticated Share
Let us create a Samba user called sk under Samba group called smbgroup:
# useradd suraj
# passwd suraj

# groupadd smbgroup
# usermod -a -G smbgroup suraj
Now assign the user sk to Samba user database with following command:
# smbpasswd -a suraj
New SMB password:
Retype new SMB password:
Added user suraj.
Create a new share called /share2 and assign this share to smbgroup, so that the users of smbgroup can access the /share2directory:
# mkdir /home/open-share
# chmod -R 755 /home/open-share
# chown -R suraj:smbgroup /home/open-share
Add the above /home/open-share 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:
[open-share]
        path = /home/open-share 
        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 "[open-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

[open-share]
    path = /home/open-share
    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!
That’s it. Now you’ll able to access the Samba shares.