Samba is a service in Linux that provides seamless file and print service to SMB/CIFS clients. One of the main features of Samba is that it allows interoperability between Linux/Unix servers and Windows-based clients. In general, you can share resource-like files and printers over the network between Unix to Unix as well as Unix to Windows.
A samba user can log into samba server (Linux Server) and depending on the rights they are granted, copy files to and from parts of the UNIX file system, submit print jobs and even send you WinPopup messages. Unix users can either mount the shares directly as part of their file structure using the smbmount command or alternatively, can use a utility, smbclient installed with Samba to read the shares with a similar interface to a standard command line program.
This article I will cover how access and mount filesystem using samba on Linux command line.
Note: Make sure that your samba service should be running.
Command to check which Share is available on a given Server
Using smbclient command
[[email protected] samba]# smbclient -L 192.168.1.100
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2] Sharename Type Comment
--------- ---- -------
myshare Disk Mary's and Fred's stuff
IPC$ IPC IPC Service (Samba Server)
root Disk Home Directories
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2] Server Comment
Here, using the above command, you find the shared resource on remote Samba Server.
Connecting Samba Share from the Command Prompt
Before trying to connect to samba share, you should have privileges to access to the particular share, should have account on that Samba Server and your password should mapped with Samba Password.
[[email protected] Packages]# smbclient //192.168.1.100/myshare -U aloft
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.23c-2] smb: \>
Adding Entries in /etc/fstab, so that it should mount every reboot
Example fstab entry for share access
[[email protected] Server]# cat /etc/fstab
LABEL=/1 / ext3 defaults 1 1
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
//192.168.1.100/myshare /smbdata cifs user,uid=500,rw,suid, username=aloft,password=aloft123 0 0
In the above example, local user (uid=500) will become the owner of the mounted files. In similar way, you can specify credentials such as uid=uid number or name of the account/user or group.
The /etc/fstab is readable by everyone so it obviously wouldn’t be a good idea to have your Windows password in it. The way to get around this is, by using what is known as a credentials file. You would modify the line in the /etc/fstab file to look like below.
//servername/sharename /mountdirectory smbfs credentials=/home/myhomedirectory/.smbpasswd 0 0
Below commands can be used create the credentials file:
echo username=mywindowsusername > .smbpasswd
echo password=mywindowspassword >> .smbpasswd
chmod 600 .smbpasswd (Modify the permissions on the file so only you have permission to read and write to it)
<options> : There are a variety of options that you can use for smb mounts. We can go through the important options that you need to know to setup fstab entry for smb mounts.
This specifies the username to connect as. If this is not given, then the environment variable USER (which may contain the username of the person using the client) is used.
This specifies the SMB password. If this option is not given then the environment variable PASSWD(which may contain the password of the person using the client) is used. If it cannot find password smbmount will prompt for a password.
Rather than giving username and password directly in fstab file, you can specify a file that contains a username and/or password. The format of the file is:
This sets the uid that will own all files on the mounted filesystem. It may be specified as either a username or a numeric uid.
This sets the gid that will own all files on the mounted filesystem. It may be specified as either a groupname or a numeric gid.
This sets the file mask. This determines the permissions that remote files have in the local filesystem. This is not a umask, but the actual permissions for the files. The default is based on the current umask.
This sets the directory mask. This determines the permissions that remote directories have in the local filesystem. This is not a umask, but the actual permissions for the directories. The default is based on the current umask.
This sets the charset used by the Linux side for codepage to charset translations (NLS). The argument should be the name of a charset, like iso8859-1
Mount samba share using mount command
Manually mount the share using the mount command
# mount -t cifs //192.168.1.100/myshare /smbdata -o user,uid=500,rw,suid,username=aloft,password=aloft123
# mount -t smbfs //my_serv/F_Drive /mnt/fdrive -o credentials=/etc/sambapassfile,uid=sam,gid=users
Mount large smb share point
The general syntax is as below:
smbmount //Hostname/Username /local/mountpoint -o username=username,password=password,lfs
#smbmount //nastorage.domain.com/oracleshare /oraclefiles -o username=LOGINNAME,password=LOGINPASSWORD,lfs
Here NAS samba share is mounted with lfs (large file system) option enabled. This will avoid error while copying a large file from NAS storage.
Note: In RHEL/CentOS smbfs is deprecated.
- How to Setup Active Directory Domain Controller on Ubuntu using Samba
- Linux NFS Mount Entry in fstab ( /etc/fstab ) with Example