Samba Installation

From ScottWiki
Jump to navigation Jump to search

Install Samba and the required services.

apt-get install samba

Stop the samba service

 service smbd stop

First we will create a samba user and set a password for Windows users to authenticate. If we want multiple users we can repeat this process.

adduser --disabled-login suser
sudo smbpasswd -a suser

Now we will create a group to assign to the various shares we are going to create for admin access (read write)

groupadd -g 10000 smbaadmins

We now need to add the users into this group.

usermod -a -G smbadmins smbadmin

We can also add sysadmin to this group to give it samba RW permissions

usermod -a -G smbadmins sysadmin

Now we need to create the share directory and set its permissions.

chown -R smbadmin:smbadmins /path/to/your/share

Change the file permissions

chmod -R 2775 /path/to/your/share

This will set the group sticky bit so that new files / folder will inherit group permissions.

Modify smb.conf

sudo nano /etc/samba/smb.conf
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = SCOTTWORLD

# server string is the equivalent of the NT Description field
server string = %h server (Samba, Ubuntu)
netbios name = solaris

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no

# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

# This will prevent nmbd to search for NetBIOS names through DNS.
   dns proxy = no

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
;   interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
;   bind interfaces only = yes

#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
   max log size = 1000


# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
#   syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d


####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.

server role = standalone server

ntlm auth = yes
client lanman auth = no


# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam
   security = user
#   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
#   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
#   passwd program = /usr/bin/passwd %u
#   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
#   pam password change = yes

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
   map to guest = bad user

#========== HIT samba over the head, to disable printing =========
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes

#======================= Share Definitions =======================
[software]
path = /srv/data/software
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = smbadmins
create mask = 0775
directory mask = 2775

[media]
path = /srv/media
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = plex
force user = plex
create mask = 0775
directory mask = 2775

[torrents]
path = /srv/data/torrents
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = debian-transmission
force user = smbadmin
create mask = 0775
directory mask = 2775

[www]
path = /srv/data/www
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = www-data
force user = www-data
create mask = 0775
directory mask = 2775

[backup]
path = /srv/backup
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = smbadmins
create mask = 0770
directory mask = 2770

[documents]
path = /srv/data/documents
guest ok = no
guest only = no
read only = yes
write list = @smbadmins
force group = smbadmins
create mask = 0775
directory mask = 2775

[drop]
path = /srv/data/drop
guest ok = no
guest only = no
read only = no
write list = @smbadmins,smbuser
force group = smbadmins
create mask = 0775
directory mask = 2775





You can run a testparm command to check the samba configuration.

testparm

Then restart the samba service.

service smbd restart