Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Nfs
1. Basic NFS Configuration
In this config will guide you trough a quick and basic configuration of NFS server on RHEL7
Linux system. We do not take any security concerns into the consideration, nor we will be
concerned with fine tuning and access control. In our scenario we define two hosts:
NFS Server, IP 10.1.1.100
NFS Client, IP 10.1.1.18
Assuming your already have a running Redhat 7 Linux system in order to setup NFS server you
will need to install few additional packages:
NFS Server configuration
Run the below commands to begin the NFS Server installation:
[nfs-server ]# yum install nfs-utils rpcbind
Next we export some arbitrary directory called /opt/nfs. Create /opt/nfs directory:
[nfs-server ]# mkdir -p /opt/nfs
and edit /etc/exports NFS exports file to add the below line while replacing the IP address
10.1.1.18 with the IP address of your client:
/opt/nfs 10.1.1.18(no_root_squash,rw,sync)
Next make sure to enable 2049 port on your firewall to allow clients requests:
[nfs-server ]# firewall-cmd --zone=public --add-port=2049/tcp --permanent
[nfs-server ]# firewall-cmd --reload
Start rpcbind daemon and NFS server in this order:
[nfs-server ]# service rpcbind start; service nfs start
Check the NFS server status:
[nfs-server ]# service nfs status
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)
Active: active (exited) since Thu 2014-12-11 08:12:46 EST; 23s ago
Process: 2780 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT
(code=exited, status=0/SUCCESS)
Process: 2775 ExecStartPre=/usr/sbin/exportfs -r (code=exited,
status=0/SUCCESS)
Process: 2773 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-
server.preconfig (code=exited, status=0/SUCCESS)
Main PID: 2780 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
NFS Client configuration
To be able to mount NFS exported directories on your client the following packages needs to be
installed. Depending on your client's Linux distribution the installation procedure may be
different. On Redhat 7 Linux the installation steps are as follows:
[nfs-client ]# yum install nfs-utils rpcbind
[nfs-client ]# service rpcbind start
What remains is to create a mount point directory eg. /mnt/nfs and mount previously NFS
exported /opt/nfs directory:
2. [nfs-client ]# mkdir -p /mnt/nfs
[nfs-client ]# mount 10.1.1.110:/opt/nfs /mnt/nfs/
Test correctness of our setup between NFS Server and NFS client. Create an arbitrary file within
NFS mounted directory on the client side:
[nfs-client ]# cd /mnt/nfs/
[nfs-client ]# touch NFS.test
[nfs-client ]# ls -l
total 0
-rw-r--r--. 1 root root 0 Dec 11 08:13 NFS.test
Move the the server side and check whether our newly NFS.test file exists:
[nfs-server ]# cd /opt/nfs/
[nfs-server ]# ls -l
total 0
-rw-r--r--. 1 root root 0 Dec 11 08:13 NFS.test
Configuring permanent NFS mount
Now that we have a basic NFS configuration on RHEL7 Linux system done, next we can add
additional settings such as server persistence and permanent client mount using /etc/fstab. In
order to have our NFS exports permanently available after the NFS server system reboot we need
to make sure that nfs service starts after reboot:
[nfs-server ]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service'
'/etc/systemd/system/nfs.target.wants/nfs-server.service'
To allow client to mount NFS exported directory permanently after reboot we need to define a
mount procedure within /etc/fstab config file. Open /etc/fstab file and add the following
line:
10.1.1.110:/opt/nfs /mnt/nfs nfs defaults 0 0
Mount User Home Directory
In the following steps we will export a user home directory /home/rhel7. Since NFS needs full
access privileges to access /home/rhel7:
[nfs-server ]# ls -ld /home/rhel7/
drwx------. 2 rhel7 rhel7 59 Jul 17 14:22 /home/rhel7/
we will bind it to a new directory:
[nfs-server ]# mkdir -p /exports/rhel7
[nfs-server ]# mount --bind /home/rhel7/ /exports/rhel7/
To make the above permanent add the following line into your /etc/fstab file:
/home/rhel7 /exports/rhel7 none bind 0 0
Next, add another export line into /etc/exports file:
/exports/rhel7 10.1.1.18(no_root_squash,rw,sync)
Re-export all NFS directories:
[nfs-server ]# exportfs -ra
What has left is to mount the above user directory using our client host:
[nfs-client ]# mount 10.1.1.110:/exports/rhel7 /mnt/rhel7/
[nfs-client ]# cd /mnt/rhel7/
[nfs-client ]# ls
[nfs-client ]# touch RHEL7-test-nfs
[nfs-client ]# ls
3. RHEL7-test-nfs
Confirm that the file RHEL7-test-nfs exists on NFS server:
# ls -l /home/rhel7/
total 0
-rw-r--r--. 1 root root 0 Dec 11 09:13 RHEL7-test-nfs