Samba Installation

From ScottWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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