At the time of this writing, I'm using osX Version 10.10.5 Yosemite. It bugged me, that my NAS (Network Attached Storage) always had such a slow performance with handling files. This only occurred between osX and the NAS, other systems in the same network (mainly Win7) preform just fine.

Samba Configuration File

Configuring Samba can be achieved system wide or on a user level. Depending on your personal preference, you must create a configuration file in either of both destinations.

For system wide usage create the file under: /etc/

For a specific user, add the file to the users preferences: ~/Library/Preferences/

In either way you need to create a file with the name nsmb.conf.

Create Samba configuration file

Open your terminal and use the following command, to change the current working directory and create a new samba configuration file.

System wide configuration

$ cd /etc/ && touch nsmb.conf

User configuration

$ cd ~/Library/Preferences/ && touch nsmb.conf

Edit Settings in Samba configuration file

Open the newly created nsmb.conf file with your preferred editor. And add the following configuration values to the file.

The typical nsmb.conf file starts with [default], which tells the Samba server to use the following settings for all connections.

If you prefer to use the settings only for a specific Server or Share/Mounting point you can also set the value in the square brackets, e.g. [SERVER] or [SERVER:SHARE].

This is how my new nsmb.conf file looks like.

[default]
signing_required = no
notify_off = yes
port445 = no_netbios
unix extensions = no
veto files = /._*/.DS_Store/

Configuration Values

signing_required default value: yes — Turn off smb client signing.

This is what apple says about the first setting:

When you use an SMB 2 or SMB 3 connection, packet signing is turned on by default. You might want to turn off packet signing if:

— Performance decreases when you connect to a third-party server.
— You can’t connect to a server that doesn’t support packet signing.
— You can’t connect a third-party device to your macOS SMB server.

notify_off default value: no — Turn off using notifications.

The apple forums describes the settings as follows.

OS X uses that with the server to know when a file has changed. The server can notify the client of changes to  files in a directory. This has the effect of making SMB a bit more chatty as the client has to request a directory to be monitored for changes and the server has to notify the client of the changes.

port445 default value: normal — How to use SMB TCP/UDP ports.

The "manpage" description for the setting value no_netbios:

Attempt to connect via port 445. If that is unsuccessful, do not try to connect via NetBIOS

unix extensions default value: yes

The "manpage" description for the setting value unix extensions:

This boolean parameter controls whether Samba implements the CIFS UNIX extensions. These extensions enable Samba to better serve UNIX CIFS clients by supporting features such as symbolic links, hard links, etc... These extensions require a similarly enabled client, and are of no current use to Windows clients.

veto files default value: veto files = #No files or directories are vetoed

The "manpage" description for the setting value unix extensions:

This is a list of files and directories that are neither visible nor accessible. Each entry in the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards.
Each entry must be a unix path, not a DOS path and must not include the unix directory separator '/'.

After editing and saving the nsmb.conf file, a finder restart is always required.

You can achieve this with the terminal command:

$ sudo killAll Finder

Bonus Tips

I often read that turning off the (Finder) Icon Preview setting for network shares may help to gain some performance. This didn't helped me but might help someone else. Uncheck "Show icon preview" from Finder menu View > Show View Options (command-j).

While trying to fix my problems, I encountered a helpful command to show Informations about a network share in the console.

$ smbutil statshares -m /Volumes/NAME_OF_THE_NETWORK_MOUNT_POINT

Various Links