Linux (UNIX) machines can also browse and mount SMB shares. Note that this can be done whether the server is a Windows machine or a Samba server! I boil down the essentials in an easy-to-follow post.

The difference between CIFS and SMB

SMB stands for “Server Message Block”. It’s a file sharing protocol that was invented by IBM and has been around since the mid-eighties. Since it’s a protocol (an agreed upon way of communicating between systems) and not a particular software application, if you’re troubleshooting, you’re looking for the application that is said to implement the SMB protocol.

The SMB protocol was designed to allow computers to read and write files to a remote host over a local area network (LAN). The directories on the remote hosts made available via SMB are called “shares”.

CIFS stands for “Common Internet File System”. CIFS is a dialect of SMB. That is, CIFS is a particular implementation of the SMB protocol, created by Microsoft.

Most people, when they use either SMB or CIFS, are talking about the same exact thing. But if they’re essentially the same thing, why should I always use SMB?

Two reasons:

  • The CIFS implementation of SMB is rarely used these days. Under the covers, most modern storage systems no longer use CIFS, they use SMB 2 or SMB 3. In the Windows world, SMB 2 has been the standard as of Windows Vista (2006) and SMB 3 is part of Windows 8 and Windows Server 2012.

  • CIFS has a negative connotation amongst pedants. SMB 2 and SMB 3 are massive upgrades over the CIFS dialect, and storage architects who are near and dear to file sharing protocols don’t appreciate the misnomer. It’s kind of like calling an executive assistant a secretary.

The ways to access an SMB Share

The easiest and most reliable way to share files between a Linux and Windows computer on the same local area network is to use the Samba file sharing protocol. All modern versions of Windows come with Samba installed, and Samba is installed by default on most distributions of Linux. So I wrote some ways to help you access an SMB share conveniently.

An SMB client program

An SMB client program for UNIX machines is included with the Samba distribution. It provides an ftp-like interface on the command line. You can use this utility to transfer files between a Windows ‘server’ and a Linux client.

To see which shares are available on a given host, run:

$ smbclient -L server

The browse list shows other SMB servers with resources to share on the network, run:

$ smbcient //server/share <password>

If you can use ftp, you shouldn’t need the man pages for smbclient.

Mount/Umount with smbfs package

Although you can use smbclient for testing, you will soon tire of it for real work. For that you will probably want to use the smbfs package.

Most Linux distributions also now include the useful smbfs package, which comes with two simple utilities, smbmount and smbumount.

The following shows a typical use of smbmount to mount an SMB share:

$ smbmount "//server/share" -U rtg2t -c 'mount /share -u <uid> -g <gid>'

Please see the manual pages for smbmount and smbumount for details on the above operation.

Mount/Umount with uniformed way

Nowadays, smbmount has been deprecated in favor of mount.cifs, since at least 2008. You might also need to install the cifs-utils package.

$ mount -t cifs //server/share/ /mnt/remote -o user=<username>,pass=<password>,uid=<username>,gid=<group>,noauto,user

Here’s the accompanying manpage, you would use these parameters instead.

Use GUI file manager with smb protocol address

Since most default GUI file managers on Linux system support to browse the filesystem based on SMB protocol, you can connect to a server by opening the application on your Linux system.

Some file managers:

  • Ubuntu/Debian: Nautilus (or alt+F2).
  • Manjaro: Dolphin

Type smb://server/share on the address bar and stroke Enter.