Mount Network Shares with mount
Table of Contents
1. [Introduction](#introduction) 2. [Basic Concepts](#basic-concepts) 3. [Network File System Types](#network-file-system-types) 4. [Installation and Prerequisites](#installation-and-prerequisites) 5. [Basic Mount Syntax](#basic-mount-syntax) 6. [SMB/CIFS Mounting](#smbcifs-mounting) 7. [NFS Mounting](#nfs-mounting) 8. [SSHFS Mounting](#sshfs-mounting) 9. [FTP/SFTP Mounting](#ftpsftp-mounting) 10. [Advanced Options and Parameters](#advanced-options-and-parameters) 11. [Persistent Mounts](#persistent-mounts) 12. [Security Considerations](#security-considerations) 13. [Troubleshooting](#troubleshooting) 14. [Performance Optimization](#performance-optimization) 15. [Examples and Use Cases](#examples-and-use-cases)Introduction
Network file system mounting is a fundamental aspect of modern computing infrastructure that allows systems to access remote file systems as if they were local storage devices. The mount command in Linux and Unix-like operating systems provides the capability to attach network shares to the local file system hierarchy, enabling seamless access to remote resources.
Network mounting facilitates resource sharing across networks, centralized storage management, and distributed computing environments. This comprehensive guide covers various network file system types, mounting procedures, security considerations, and optimization techniques.
Basic Concepts
What is Network Mounting
Network mounting is the process of making a remote file system available on a local machine by integrating it into the local directory structure. Once mounted, users and applications can access remote files and directories using standard file system operations.
Key Components
| Component | Description | |-----------|-------------| | Mount Point | Local directory where the remote file system will be attached | | Remote Host | Server or system hosting the shared file system | | File System Type | Protocol used for network communication (NFS, SMB, SSHFS, etc.) | | Mount Options | Parameters controlling behavior, security, and performance | | Credentials | Authentication information for accessing remote resources |
Mount Process Overview
The mounting process involves several steps: 1. Establishing network connection to remote host 2. Authentication and authorization 3. Protocol negotiation 4. File system integration 5. Permission mapping 6. Cache configuration
Network File System Types
Comparison Table
| File System | Protocol | Platform Support | Security | Performance | Use Case | |-------------|----------|------------------|----------|-------------|----------| | NFS | NFS | Unix/Linux primary | Kerberos, NFSv4 | High | Unix environments | | SMB/CIFS | SMB/CIFS | Cross-platform | NTLM, Kerberos | Medium | Windows integration | | SSHFS | SSH/SFTP | Cross-platform | SSH keys, passwords | Medium | Secure remote access | | FTP | FTP/FTPS | Universal | Basic, TLS | Low | Legacy systems | | WebDAV | HTTP/HTTPS | Universal | HTTP auth, SSL | Medium | Web-based sharing |
Protocol Characteristics
NFS (Network File System) - Designed for Unix/Linux environments - Stateless protocol (NFSv2/v3) or stateful (NFSv4) - Excellent performance for Unix-to-Unix communication - Strong POSIX compliance
SMB/CIFS (Server Message Block/Common Internet File System) - Microsoft-developed protocol - Excellent Windows integration - Supports advanced features like file locking and notifications - Cross-platform compatibility through Samba
SSHFS (SSH File System) - Leverages SSH protocol for secure file access - Encrypted data transmission - No server-side configuration required - Suitable for secure remote access scenarios
Installation and Prerequisites
Package Requirements by Distribution
| Distribution | NFS Client | SMB/CIFS Client | SSHFS | Additional Tools |
|--------------|------------|-----------------|-------|------------------|
| Ubuntu/Debian | nfs-common | cifs-utils | sshfs | fuse |
| CentOS/RHEL | nfs-utils | cifs-utils | fuse-sshfs | fuse |
| Fedora | nfs-utils | cifs-utils | fuse-sshfs | fuse |
| openSUSE | nfs-client | cifs-utils | sshfs | fuse |
Installation Commands
Ubuntu/Debian Systems:
`bash
Update package repository
sudo apt updateInstall NFS client utilities
sudo apt install nfs-commonInstall SMB/CIFS utilities
sudo apt install cifs-utilsInstall SSHFS
sudo apt install sshfsInstall FUSE (usually included by default)
sudo apt install fuse`CentOS/RHEL Systems:
`bash
Install NFS utilities
sudo yum install nfs-utilsInstall SMB/CIFS utilities
sudo yum install cifs-utilsInstall SSHFS
sudo yum install fuse-sshfsEnable and start required services
sudo systemctl enable rpcbind sudo systemctl start rpcbind`Kernel Module Verification
`bash
Check if FUSE module is loaded
lsmod | grep fuseLoad FUSE module if not present
sudo modprobe fuseVerify NFS client support
cat /proc/filesystems | grep nfsCheck SMB/CIFS support
cat /proc/filesystems | grep cifs`Basic Mount Syntax
General Mount Command Structure
`bash
mount -t `
Parameter Explanation
| Parameter | Description | Example |
|-----------|-------------|---------|
| -t | Specify file system type | -t nfs, -t cifs |
| -o | Mount options (comma-separated) | -o rw,sync,hard |
| | Remote resource location | server:/path, //server/share |
| | Local directory for mounting | /mnt/network |
Common Mount Options
| Option | Description | Applicable To |
|--------|-------------|---------------|
| rw | Read-write access | All |
| ro | Read-only access | All |
| sync | Synchronous I/O operations | All |
| async | Asynchronous I/O operations | All |
| auto | Mount automatically at boot | All |
| noauto | Do not mount automatically | All |
| user | Allow regular users to mount | All |
| nouser | Only root can mount | All |
SMB/CIFS Mounting
Basic SMB/CIFS Mount Syntax
`bash
mount -t cifs //server/share /mount/point -o username=user,password=pass
`
SMB/CIFS Specific Options
| Option | Description | Example |
|--------|-------------|---------|
| username | SMB username | username=john |
| password | SMB password | password=secret |
| domain | Windows domain | domain=COMPANY |
| uid | Local user ID for file ownership | uid=1000 |
| gid | Local group ID for file ownership | gid=1000 |
| file_mode | Permission for files | file_mode=0644 |
| dir_mode | Permission for directories | dir_mode=0755 |
| vers | SMB protocol version | vers=3.0 |
SMB/CIFS Examples
Basic SMB Mount with Credentials:
`bash
Create mount point
sudo mkdir -p /mnt/smbshareMount with inline credentials (not recommended for production)
sudo mount -t cifs //192.168.1.100/shared /mnt/smbshare -o username=administrator,password=mypasswordMount with domain authentication
sudo mount -t cifs //fileserver/documents /mnt/documents -o username=john,domain=COMPANY,password=secret123`Using Credentials File:
`bash
Create credentials file
sudo nano /etc/samba/credentialsAdd credentials to file:
username=john password=secret123 domain=COMPANYSet secure permissions
sudo chmod 600 /etc/samba/credentialsMount using credentials file
sudo mount -t cifs //fileserver/shared /mnt/shared -o credentials=/etc/samba/credentials,uid=1000,gid=1000`Advanced SMB Mount with Multiple Options:
`bash
sudo mount -t cifs //server/share /mnt/share -o \
credentials=/etc/samba/credentials,\
uid=1000,\
gid=1000,\
file_mode=0644,\
dir_mode=0755,\
vers=3.0,\
cache=strict,\
rsize=1048576,\
wsize=1048576
`
SMB Protocol Version Selection
| Version | Description | Use Case | |---------|-------------|----------| | 1.0 | Legacy SMB | Old Windows systems (deprecated) | | 2.0 | Windows Vista/2008 | Improved performance | | 2.1 | Windows 7/2008 R2 | Enhanced features | | 3.0 | Windows 8/2012 | Encryption support | | 3.02 | Windows 8.1/2012 R2 | Performance improvements | | 3.11 | Windows 10/2016 | Latest features |
NFS Mounting
Basic NFS Mount Syntax
`bash
mount -t nfs server:/path/to/export /mount/point
`
NFS Specific Options
| Option | Description | Default |
|--------|-------------|---------|
| hard | Hard mount (recommended) | soft |
| soft | Soft mount (timeout on failure) | - |
| intr | Allow interruption of NFS calls | - |
| rsize | Read buffer size | 1024 |
| wsize | Write buffer size | 1024 |
| timeo | Timeout value (deciseconds) | 600 |
| retrans | Number of retransmissions | 3 |
| proto | Transport protocol (tcp/udp) | udp |
| vers | NFS version | 3 |
NFS Examples
Basic NFS Mount:
`bash
Create mount point
sudo mkdir -p /mnt/nfsMount NFS share
sudo mount -t nfs 192.168.1.50:/home/shared /mnt/nfsMount with specific NFS version
sudo mount -t nfs -o vers=4 nfsserver:/exports/data /mnt/data`NFS Mount with Performance Options:
`bash
sudo mount -t nfs -o \
hard,\
intr,\
rsize=32768,\
wsize=32768,\
proto=tcp,\
vers=3 \
192.168.1.50:/exports/files /mnt/nfsfiles
`
NFSv4 Mount with Security:
`bash
Mount with Kerberos authentication
sudo mount -t nfs4 -o sec=krb5 server.domain.com:/exports /mnt/secureMount with integrity checking
sudo mount -t nfs4 -o sec=krb5i server.domain.com:/exports /mnt/secure`NFS Version Comparison
| Version | Features | Security | Performance | |---------|----------|----------|-------------| | NFSv2 | Basic functionality | Limited | Low | | NFSv3 | 64-bit file sizes, async writes | Limited | Good | | NFSv4 | Stateful, ACLs, delegation | Kerberos, encryption | Excellent | | NFSv4.1 | Parallel NFS, sessions | Enhanced | Superior | | NFSv4.2 | Server-side copy, sparse files | Latest security | Optimal |
SSHFS Mounting
Basic SSHFS Syntax
`bash
sshfs user@server:/remote/path /local/mount/point
`
SSHFS Specific Options
| Option | Description | Example |
|--------|-------------|---------|
| port | SSH port number | port=2222 |
| IdentityFile | SSH private key file | IdentityFile=~/.ssh/id_rsa |
| compression | Enable compression | compression=yes |
| reconnect | Automatic reconnection | reconnect |
| ServerAliveInterval | Keep-alive interval | ServerAliveInterval=15 |
| follow_symlinks | Follow symbolic links | follow_symlinks |
SSHFS Examples
Basic SSHFS Mount:
`bash
Create mount point
mkdir -p ~/mnt/remoteMount remote directory via SSH
sshfs user@remotehost:/home/user/documents ~/mnt/remoteMount with specific SSH port
sshfs -p 2222 user@remotehost:/data ~/mnt/data`SSHFS with SSH Key Authentication:
`bash
Mount using SSH key
sshfs -o IdentityFile=~/.ssh/id_rsa user@server:/home/user ~/mnt/serverMount with additional options
sshfs user@server:/remote/path ~/mnt/remote -o \ compression=yes,\ reconnect,\ ServerAliveInterval=15,\ ServerAliveCountMax=3`SSHFS with Advanced Options:
`bash
sshfs user@server:/path ~/mnt/path -o \
allow_other,\
default_permissions,\
uid=1000,\
gid=1000,\
umask=022,\
follow_symlinks
`
SSHFS Security Considerations
| Security Aspect | Implementation | Notes | |------------------|----------------|-------| | Authentication | SSH keys preferred | Avoid password authentication | | Encryption | Automatic via SSH | All data encrypted in transit | | Host Verification | SSH host keys | Verify server identity | | User Permissions | uid/gid mapping | Control local file ownership | | Network Security | SSH tunneling | Secure channel for all operations |
FTP/SFTP Mounting
CurlFtpFS for FTP Mounting
Installation:
`bash
Ubuntu/Debian
sudo apt install curlftpfsCentOS/RHEL
sudo yum install curlftpfs`Basic FTP Mount:
`bash
Create mount point
mkdir -p ~/mnt/ftpMount FTP server
curlftpfs ftp://user:password@ftpserver ~/mnt/ftpMount with options
curlftpfs -o allow_other,default_permissions ftp://user:pass@server ~/mnt/ftp`SFTP Mounting via SSHFS
`bash
SFTP is handled by SSHFS automatically
sshfs user@server:/remote/path ~/mnt/sftp -o sftp_server=/usr/lib/openssh/sftp-server`Advanced Options and Parameters
Performance Tuning Options
| Parameter | Description | Recommended Value |
|-----------|-------------|-------------------|
| rsize | Read buffer size | 32768-1048576 |
| wsize | Write buffer size | 32768-1048576 |
| cache | Cache mode | strict for SMB |
| actimeo | Attribute cache timeout | 30-60 seconds |
| tcp_window_size | TCP window size | Network dependent |
Cache Management
NFS Cache Options:
`bash
Attribute caching
mount -t nfs -o ac,actimeo=60 server:/export /mnt/nfsDisable attribute caching
mount -t nfs -o noac server:/export /mnt/nfsData caching control
mount -t nfs -o cache=rw server:/export /mnt/nfs`SMB Cache Options:
`bash
Strict caching (recommended)
mount -t cifs //server/share /mnt/share -o cache=strictLoose caching (better performance, less consistency)
mount -t cifs //server/share /mnt/share -o cache=looseNo caching
mount -t cifs //server/share /mnt/share -o cache=none`Security and Authentication Options
| Option | Protocol | Description |
|--------|----------|-------------|
| sec=krb5 | NFS | Kerberos authentication |
| sec=krb5i | NFS | Kerberos with integrity |
| sec=krb5p | NFS | Kerberos with privacy |
| seal | SMB | SMB3 encryption |
| vers=3.0 | SMB | Force SMB3 with encryption |
Persistent Mounts
/etc/fstab Configuration
The /etc/fstab file contains static file system information and mount options for automatic mounting at boot time.
fstab Format:
`
`
fstab Examples
NFS Entry:
`bash
Add to /etc/fstab
192.168.1.50:/exports/data /mnt/nfsdata nfs defaults,hard,intr,rsize=32768,wsize=32768 0 0`SMB/CIFS Entry:
`bash
Add to /etc/fstab
//fileserver/shared /mnt/shared cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0`SSHFS Entry (using autofs):
`bash
SSHFS typically requires user-space mounting
Use autofs or systemd mount units for automation
`Systemd Mount Units
Create systemd mount unit:
`bash
Create mount unit file
sudo nano /etc/systemd/system/mnt-network.mount[Unit] Description=Network Share Mount After=network.target
[Mount] What=//server/share Where=/mnt/network Type=cifs Options=credentials=/etc/samba/credentials,uid=1000,gid=1000
[Install]
WantedBy=multi-user.target
`
Enable and start mount unit:
`bash
sudo systemctl daemon-reload
sudo systemctl enable mnt-network.mount
sudo systemctl start mnt-network.mount
`
AutoFS Configuration
AutoFS provides on-demand mounting of file systems.
Install AutoFS:
`bash
sudo apt install autofs # Ubuntu/Debian
sudo yum install autofs # CentOS/RHEL
`
Configure AutoFS:
`bash
Edit master map
sudo nano /etc/auto.masterAdd entry
/mnt/auto /etc/auto.network --timeout=60Create map file
sudo nano /etc/auto.networkAdd mount definitions
nfs -fstype=nfs,rw 192.168.1.50:/exports/nfs smb -fstype=cifs,rw,credentials=/etc/samba/credentials ://server/share`Security Considerations
Authentication Methods
| Method | Security Level | Use Case | |--------|----------------|----------| | Password | Low | Development/testing | | SSH Keys | High | Production SSHFS | | Kerberos | Very High | Enterprise NFS | | Certificates | Very High | Enterprise environments |
Network Security
Encryption Options:
`bash
SMB3 with encryption
mount -t cifs //server/share /mnt/share -o seal,vers=3.0NFS with Kerberos privacy
mount -t nfs4 -o sec=krb5p server:/export /mnt/secureSSHFS (always encrypted)
sshfs user@server:/path /mnt/path`File Permission Mapping
SMB/CIFS Permission Mapping:
`bash
mount -t cifs //server/share /mnt/share -o \
uid=1000,\
gid=1000,\
file_mode=0644,\
dir_mode=0755,\
noperm
`
NFS Permission Handling:
`bash
NFSv4 with proper ID mapping
mount -t nfs4 -o vers=4.1 server:/export /mnt/nfsConfigure idmapd for user mapping
sudo nano /etc/idmapd.conf`Troubleshooting
Common Issues and Solutions
| Issue | Symptoms | Solution | |-------|----------|----------| | Permission Denied | Cannot access files | Check uid/gid mapping, file permissions | | Connection Timeout | Mount hangs or fails | Verify network connectivity, firewall rules | | Authentication Failed | Access denied | Verify credentials, domain settings | | Stale File Handle | I/O errors | Remount file system, check server status | | Performance Issues | Slow file operations | Tune buffer sizes, cache settings |
Diagnostic Commands
Network Connectivity:
`bash
Test network connectivity
ping server_ipCheck port accessibility
telnet server_ip 445 # SMB telnet server_ip 2049 # NFS telnet server_ip 22 # SSH/SSHFSNetwork trace
sudo tcpdump -i any host server_ip`Mount Status and Information:
`bash
List all mounts
mount | grep network_typeShow mount statistics
nfsstat -m # NFS statistics cat /proc/fs/nfsd/pool_stats # NFS server statsCheck mount options
findmnt /mnt/mountpoint`Log Analysis:
`bash
System logs
sudo journalctl -u systemd-networkd sudo tail -f /var/log/syslogSMB/CIFS logs
sudo tail -f /var/log/kern.log | grep CIFSNFS logs
sudo tail -f /var/log/messages | grep nfs`Performance Troubleshooting
Bandwidth Testing:
`bash
Test network bandwidth
iperf3 -c server_ipFile transfer performance
time cp large_file /mnt/network/ time rsync large_file /mnt/network/`I/O Performance:
`bash
Test I/O performance
dd if=/dev/zero of=/mnt/network/testfile bs=1M count=100 iostat -x 1Monitor network usage
iftop -i interface nethogs`Performance Optimization
Buffer Size Optimization
NFS Buffer Tuning:
`bash
Large buffers for high-bandwidth networks
mount -t nfs -o rsize=1048576,wsize=1048576 server:/export /mnt/nfsSmall buffers for low-bandwidth networks
mount -t nfs -o rsize=8192,wsize=8192 server:/export /mnt/nfs`SMB Buffer Tuning:
`bash
Optimize SMB buffers
mount -t cifs //server/share /mnt/share -o rsize=1048576,wsize=1048576`Caching Strategies
| Cache Type | Description | Trade-off | |------------|-------------|-----------| | Client-side | Local caching of data/metadata | Performance vs consistency | | Write-through | Immediate write to server | Consistency vs performance | | Write-back | Delayed write to server | Performance vs data safety | | Read-ahead | Prefetch data | Bandwidth vs latency |
Network Optimization
TCP Tuning:
`bash
Increase TCP window size
echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.conf echo 'net.core.wmem_max = 16777216' >> /etc/sysctl.conf echo 'net.ipv4.tcp_rmem = 4096 87380 16777216' >> /etc/sysctl.conf echo 'net.ipv4.tcp_wmem = 4096 65536 16777216' >> /etc/sysctl.confApply changes
sudo sysctl -p`Examples and Use Cases
Enterprise File Server Access
Scenario: Mounting corporate file shares for daily operations
`bash
Create mount points
sudo mkdir -p /mnt/corporate/{documents,projects,shared}Mount different shares with appropriate options
sudo mount -t cifs //fileserver/documents /mnt/corporate/documents -o \ credentials=/etc/samba/corp-creds,\ vers=3.0,\ seal,\ uid=1000,\ gid=1000,\ file_mode=0644,\ dir_mode=0755sudo mount -t cifs //fileserver/projects /mnt/corporate/projects -o \
credentials=/etc/samba/corp-creds,\
vers=3.0,\
cache=strict,\
rsize=1048576,\
wsize=1048576
`
Development Environment Setup
Scenario: Mounting remote development servers
`bash
Mount development server home directory
sshfs developer@devserver:/home/developer ~/dev/remote -o \ compression=yes,\ reconnect,\ ServerAliveInterval=15,\ allow_other,\ default_permissionsMount project repository
sshfs developer@gitserver:/repositories ~/dev/repos -o \ IdentityFile=~/.ssh/dev_key,\ compression=yes,\ follow_symlinks`Backup and Archive Access
Scenario: Accessing network backup storage
`bash
Mount backup NFS server
sudo mount -t nfs -o \ hard,\ intr,\ rsize=1048576,\ wsize=1048576,\ proto=tcp,\ vers=4 \ backupserver:/backups /mnt/backupsMount archive server with read-only access
sudo mount -t nfs -o \ ro,\ hard,\ proto=tcp,\ vers=4 \ archiveserver:/archives /mnt/archives`Multi-Protocol Environment
Scenario: Mixed environment with different protocols
`bash
Windows file server (SMB)
sudo mount -t cifs //winserver/shared /mnt/windows -o \ credentials=/etc/samba/win-creds,\ vers=3.0Unix NFS server
sudo mount -t nfs unixserver:/exports/data /mnt/unix -o \ hard,intr,vers=4Secure remote access (SSHFS)
sshfs admin@remotehost:/var/log ~/mnt/logs -o \ IdentityFile=~/.ssh/admin_key,\ compression=yes`This comprehensive guide covers the essential aspects of mounting network shares using various protocols and configurations. The examples and explanations provide a solid foundation for implementing network file system access in different environments, from simple home setups to complex enterprise infrastructures.