SMB/CIFS Utilities

CIFS/SMB

The Common Internet File System (CIFS) offers the possibility to map network drives on Windows workstations; the corresponding network protocol was formerly called Server Message Block (SMB). UNIX/Linux operating systems usually come with some utilities which help to make use of CIFS on these platforms, too.

smbclient

The smbclient program is a command line tool e.g. for

  • listing network shares and network printers offered by windows servers,
  • listing directory contents,
  • or file transfer.

In the following, lmuelle8 will be used as an example for a valid GWDG user account name, and winfs-uni.top.gwdg.de will serve as an example for a Windows CIFS/SMB server. Since Windows servers are typically part of the Active Directory, a domain has also to be specified. GWDG is usually correct; employees of the Max-Planck-Institute (MPI) for Biophysical Chemistry have to use MBPC, employees of the MPI fuer Experimentelle Medizin MPEM.

Listing network shares

smbclient -L winfs-uni.top.gwdg.de -W GWDG -U lmuelle8
Password:


Although the password could be given directly on the command line, this should be avoided for security reasons; it is better to be prompted for the password. The output of the command has been omitted because it is very long.

Listing directory contents

smbclient //winfs-uni.top.gwdg.de/lmuelle8$ -W GWDG -U lmuelle8
Password: 
Domain=[GWDG] OS=[Windows Server 2008 R2 Enterprise 7601 Service Pack 1] Server=[Windows Server 2008 R2 Enterprise 6.1]
smb: \> dir
  .                                  DR        0  Mon May 23 11:52:52 2011
  ..                                 DR        0  Mon May 23 11:52:52 2011
  $RECYCLE.BIN                      DHS        0  Tue May  3 08:51:59 2011
  Eigene Bilder                     DAR        0  Wed Jun 30 05:24:50 2010
  Eigene Musik                      DAR        0  Wed Jun 30 05:24:50 2010
  IO.SYS                           AHSR        0  Thu Feb  8 11:15:26 2001
  MSDOS.SYS                        AHSR        0  Thu Feb  8 11:15:26 2001
  My Music                           DR        0  Tue May  3 08:51:59 2011
  My Pictures                        DR        0  Tue May  3 08:51:59 2011
  My Videos                          DR        0  Tue May  3 08:51:59 2011
  WINDOWS                             D        0  Tue May  3 08:51:49 2011
  _AdminsOnly                       DAH        0  Wed Jun 30 05:24:46 2010
  _GWDGsys                           DA        0  Wed Jun 30 05:24:48 2010

		65535 blocks of size 33554432. 18580 blocks available
smb: \> quit


These directory entries didn't change for years, but that's life …

Please notice the trailing $ symbol within the name of the network share //winfs-uni.top.gwdg.de/lmuelle8$. It has to be appended because all shares on Windows/CIFS servers exporting user data are hidden and thus require a $ on access.

File transfer

smbclient //winfs-uni.top.gwdg.de/lmuelle8$ -W GWDG -U lmuelle8
Password: 
Domain=[GWDG] OS=[Windows Server 2008 R2 Enterprise 7601 Service Pack 1] Server=[Windows Server 2008 R2 Enterprise 6.1]
smb: \> put example.doc
putting file example.doc as \example.doc (2142.8 kb/s) (average 2142.9 kb/s)
smb: \> cd "My Music"
smb: \My Music\> get laughter.mp3
getting file \My Music\laughter.mp3 of size 3953876 as laughter.mp3 (16223.6 kb/s) (average 16223.6 kb/s)
smb: \My Music\> quit


As demonstrated, put sends files to the remote host, while get fetches them.

Further help

Help is available via manual page (man smblient) or the online help command which can be typed at the smb: prompt.

SMB/CIFS mount

General remarks

On FreeBSD or Linux systems, e.g., it is possible to mount a Windows network share into the local directory tree. Here, it is important to realize that it is inevitable to establish a user mapping while mounting the share. Thus on the one hand the user credentials on the remote Windows server as well as a local user name have to be specified. On the FreeBSD/Linux client, all files seem to belong to the specified local user, whereas in reality they belong to the user whose credentials were used when accessing the share. Both user names may be equal but they do not have to be.

Example user, server and share names are as described above within the context of smbclient.

Please look at the manual pages on your system for further help if the examples below won't help.

FreeBSD example

mount_smbfs -U lmuelle8 -I winfs-uni.top.gwdg.de -W GWDG -u 1001 -g 20 //lmuelle8@winfs-uni/lmuelle8$ /import/lmuelle8
Password:


The password could be given in the command line, but should not for security reasons. Meaning of the arguments is:

  • -U lmuelle8 – user account name to authenticate with
  • -I winfs-uni.top.gwdg.de – host name or ip address of server
  • -W GWDG – active directory domain
  • -u 1001 – local user number
  • -g 20 – local group number
  • //lmuelle8@winfs-uni/lmuelle8$ – //name of remote user@netbios server name/network share name
  • /import/lmuelle8 – local directory to mount on

Linux example

mount.cifs -o domain=GWDG,user=lmuelle8,uid=1001,gid=100 //winfs-uni.top.gwdg.de/lmuelle8$ /import/lmuelle8
Password:


The password could be given in the command line, but should not for security reasons. Meaning of the arguments is:

  • -o domain=GWDG,user=lmuelle8,uid=1001,gid=100 – active directory domain, user account name to authenticate with, local user number, local group number
  • //winfs-uni.top.gwdg.de/lmuelle8$ – //host name or ip address of server/network share name
  • /import/lmuelle8 – local directory to mount on