General Configuration (/etc/smb.conf) Samba configuration on a Linux (or other UNIX machine) is controlled by a single file, /etc/smb.conf. This file determines which system resources you want to share with the outside world and what restrictions you wish to place on them. The smb.conf as shipped by the package is quite long and has many configuration examples. An easy way to visualize it without any comments is to run testparm -s. Now inform Samba about the rootDN user’s password (the one set during the installation of the slapd package).
A Samba file server enables file sharing across different operating systems over a network. It lets you access your desktop files from a laptop and share files with Windows and macOS users.
This guide covers the installation and configuration of Samba on Ubuntu.
What you’ll learn
- How to set up a Samba file server
- How to share files across a local network
What you’ll need
- Ubuntu 16.04 LTS
- A Local Area Network (LAN) to share files over
If you have everything ready, let’s dive straight into the installation process on the next step!
Originally authored by Aden Padilla.
NOTE
This section is flagged as legacy because nowadays Samba 4 is best integrated with its own LDAP server in AD mode. Integrating Samba with LDAP as described here covers the NT4 mode, deprecated for many years.
This section covers the integration of Samba with LDAP. The Samba server’s role will be that of a “standalone” server and the LDAP directory will provide the authentication layer in addition to containing the user, group, and machine account information that Samba requires in order to function (in any of its 3 possible roles). The pre-requisite is an OpenLDAP server configured with a directory that can accept authentication requests. See Service - LDAP and Service - LDAP with TLS for details on fulfilling this requirement. Once those steps are completed, you will need to decide what specifically you want Samba to do for you and then configure it accordingly.
This guide will assume that the LDAP and Samba services are running on the same server and therefore use SASL EXTERNAL authentication whenever changing something under cn=config. If that is not your scenario, you will have to run those ldap commands on the LDAP server.
Software Installation
There are two packages needed when integrating Samba with LDAP: samba and smbldap-tools.
Strictly speaking, the smbldap-tools package isn’t needed, but unless you have some other way to manage the various Samba entities (users, groups, computers) in an LDAP context then you should install it.
Install these packages now:
LDAP Configuration
We will now configure the LDAP server so that it can accomodate Samba data. We will perform three tasks in this section:
- Import a schema
- Index some entries
- Add objects
Samba schema
In order for OpenLDAP to be used as a backend for Samba, the DIT will need to use attributes that can properly describe Samba data. Such attributes can be obtained by introducing a Samba LDAP schema. Let’s do this now.
The schema is found in the now-installed samba package and is already in the ldif format. We can import it with one simple command:
To query and view this new schema:
Samba indices
Now that slapd knows about the Samba attributes, we can set up some indices based on them. Indexing entries is a way to improve performance when a client performs a filtered search on the DIT.
Create the file
samba_indices.ldif
with the following contents:Using the ldapmodify utility load the new indices:
If all went well you should see the new indices using ldapsearch:
Adding Samba LDAP objects
Next, configure the smbldap-tools package to match your environment. The package comes with a configuration helper script called smbldap-config. Before running it, though, you should decide on two important configuration settings in
/etc/samba/smb.conf
:- netbios name: how this server will be known. The default value is derived from the server’s hostname, but truncated at 15 characters.
- workgroup: the workgroup name for this server, or, if you later decide to make it a domain controller, this will be the domain.
It’s important to make these choices now because smbldap-config will use them to generate the config that will be later stored in the LDAP directory. If you run smbldap-config now and later change these values in
/etc/samba/smb.conf
there will be an inconsistency.Once you are happy with netbios name and workgroup, proceed to generate the smbldap-tools configuration by running the configuration script which will ask you some questions:
Some of the more important ones:
- workgroup name: has to match what you will configure in
/etc/samba/smb.conf
later on. - ldap suffix: has to match the ldap suffix you chose when you configured the LDAP server.
- other ldap suffixes: they are all relative to ldap suffix above. For example, for ldap user suffix you should use ou=People, and for computer/machines, use ou=Computers.
- ldap master bind dn and bind password: use the rootDN credentials.
The smbldap-populate script will then add the LDAP objects required for Samba. It will ask you for a password for the “domain root” user, which is also the “root” user stored in LDAP:
The -g, -u and -r parameters tell smbldap-tools where to start the numeric uid and gid allocation for the LDAP users. You should pick a range start that does not overlap with your local /etc/passwd users.
You can create a LDIF file containing the new Samba objects by executing
sudo smbldap-populate -e samba.ldif
. This allows you to look over the changes making sure everything is correct. If it is, rerun the script without the ‘-e’ switch. Alternatively, you can take the LDIF file and import its data per usual.Your LDAP directory now has the necessary information to authenticate Samba users.
Samba Configuration
To configure Samba to use LDAP, edit its configuration file
/etc/samba/smb.conf
commenting out the default passdb backend parameter and adding some ldap-related ones. Make sure to use the same values you used when running smbldap-populate:Change the values to match your environment.
Note
The
smb.conf
as shipped by the package is quite long and has many configuration examples. An easy way to visualize it without any comments is to run testparm -s.Now inform Samba about the rootDN user’s password (the one set during the installation of the slapd package):
As a final step to have your LDAP users be able to connect to samba and authenticate, we need these users to also show up in the system as “unix” users. Use SSSD for that as detailed in Service - SSSD.
Install sssd-ldap
Configure /etc/sssd/sssd.conf:
Adjust permissions and start the service:
Restart the Samba services:
To quickly test the setup, see if getent can list the Samba groups:
Note
The names are case sensitive!
Smb Conference
If you have existing LDAP users that you want to include in your new LDAP-backed Samba they will, of course, also need to be given some of the extra Samba specific attributes. The smbpasswd utility can do this for you:
You will prompted to enter a password. It will be considered as the new password for that user. Making it the same as before is reasonable. Note that this command cannot be used to create a new user from scratch in LDAP (unless you are using ldapsam:trusted and ldapsam:editposix, not covered in this guide).
To manage user, group, and machine accounts use the utilities provided by the smbldap-tools package. Here are some examples:
- To add a new user with a home directory:The -a option adds the Samba attributes, and the -P option calls the smbldap-passwd utility after the user is created allowing you to enter a password for the user. Finally, -m creates a local home directory. Low profile forklift boom. Test with the getent command:
- To remove a user:In the above command, use the -r option to remove the user’s home directory.
- To add a group:As for smbldap-useradd, the -a adds the Samba attributes.
- To make an existing user a member of a group:The -m option can add more than one user at a time by listing them in comma-separated format.
- To remove a user from a group:
- To add a Samba machine account:Replace username with the name of the workstation. The -t 0 option creates the machine account without a delay, while the -w option specifies the user as a machine account.
Smb Conference
Resources
Smb Config File
- Upstream documentation collection: https://www.samba.org/samba/docs/
- Upstream samba wiki: https://wiki.samba.org/index.php/Main_Page
Smb Config
Last updated 11 months ago. Help improve this document in the forum.