NFS-Kernel Server : Linux File Sharing Configuration
A detailed guide to configuring and managing NFS-Kernel Server, covering installation, commands, troubleshooting, and best practices for Linux.
Understanding NFS-Kernel Server
The NFS (Network File System) Kernel Server is a critical component in Unix/Linux environments that allows file sharing between systems on a network. Developed by Sun Microsystems in the 1980s, NFS enables a client machine to access files on a remote server as though they were local. This capability makes it an essential tool for managing resources in both small and large-scale deployments.
Key features include:
- File Sharing: Share directories and files across multiple systems.
- Centralized Management: Manage files in a central location, reducing redundancy.
- Cross-Platform Compatibility: Interoperate between different Unix-like systems.
- User Mapping: Map remote users to local users for secure access control.
Installation and Configuration
Prerequisites
Before starting, ensure:
- A Linux server (e.g., Ubuntu, CentOS) for hosting NFS.
- A client machine (Linux or Unix-based).
- Administrative privileges on both systems.
- Basic understanding of file permissions.
Installing NFS-Kernel Server
On Ubuntu/Debian:
sudo apt update
sudo apt install nfs-kernel-server -y
On CentOS/RHEL:
sudo yum update
sudo yum install nfs-utils -y
Configuring NFS Exports
Edit the /etc/exports
file to define shared directories and access permissions. Example configuration:
/home/shared 192.168.1.0/24(rw,sync,no_subtree_check)
Explanation of options:
/home/shared
: Directory to be shared.192.168.1.0/24
: Restricts access to a specific subnet.rw
: Grants read-write access.sync
: Ensures data is written to disk before confirming.no_subtree_check
: Prevents subtree-related permission issues.
Applying Changes
sudo exportfs -a
Starting and Enabling NFS Service
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
Configuring the Firewall
Allow NFS traffic through the firewall:
sudo ufw allow from 192.168.1.0/24 to any port nfs
Client-Side Configuration
Installing the NFS Client
On Ubuntu/Debian:
sudo apt install nfs-common -y
On CentOS/RHEL:
sudo yum install nfs-utils -y
Mounting an NFS Share
sudo mount -t nfs 192.168.1.100:/home/shared /mnt
Automating Mounts with /etc/fstab
192.168.1.100:/home/shared /mnt nfs defaults 0 0
Common Commands for NFS Management
Listing Active Exports
sudo exportfs -v
Restarting the NFS Service
sudo systemctl restart nfs-kernel-server
Troubleshooting NFS
Permissions Issues
sudo chmod 777 /home/shared
Firewall Blocks
sudo ufw allow from <client-ip> to any port nfs
Client Cannot Mount
sudo showmount -e 192.168.1.100
Best Practices
- Use firewall rules and IP restrictions to enhance security.
- Implement UID/GID mapping for proper user management.
- Regularly monitor logs for suspicious activity.