Questo contenuto non è disponibile nella lingua selezionata.
Chapter 5. Deploying an NFS server
By using the Network File System (NFS) protocol, remote users can mount shared directories over a network and use them as they were mounted locally. This enables you to consolidate resources onto centralized servers on the network.
5.1. Key features of minor NFSv4 versions Copia collegamentoCollegamento copiato negli appunti!
Each minor NFSv4 version brings enhancements aimed at improving performance and security. Use these improvements to utilize the full potential of NFSv4, ensuring efficient and reliable file sharing across networks.
Key features of NFSv4.2
- Server-side copy
- Server-side copy is a capability of the NFS server to copy files on the server without transferring the data back and forth over the network.
- Sparse files
- Enables files to have one or more empty spaces, or gaps, which are unallocated or uninitialized data blocks consisting only of zeros. This enables applications to map out the location of holes in the sparse file.
- Space reservation
- Clients can reserve or allocate space on the storage server before writing data. This prevents the server from running out of space.
- Labeled NFS
- Enforces data access rights and enables SELinux labels between a client and a server for individual files on an NFS file system.
- Layout enhancements
- Provides functionality to enable Parallel NFS (pNFS) servers to collect better performance statistics.
Key features of NFSv4.1
- Client-side support for pNFS
- The support of high-speed I/O to clustered servers enables you to store data on multiple machines, to provide direct access to data, and synchronization of updates to metadata.
- Sessions
- Sessions maintain the server’s state relative to the connections belonging to a client. These sessions provide improved performance and efficiency by reducing the overhead associated with establishing and terminating connections for each Remote Procedure Call (RPC) operation.
Key features of NFSv4.0
- RPC and security
-
The
RPCSEC_GSSframework enhances RPC security. The NFSv4 protocol introduces a new operation for in-band security negotiation. This enables clients to query server policies for accessing file system resources securely. - Procedure and operation structure
-
NFS 4.0 introduces the
COMPOUNDprocedure, which enables clients to merge multiple operations into a single request to reduce RPCs. - File system model
NFS 4.0 retains the hierarchical file system model, treating files as byte streams and encoding names with UTF-8 for internationalization.
File handle types
With volatile file handles, servers can adjust to file system changes and enable clients to adapt as needed without requiring permanent file handles.
Attribute types
The file attribute structure includes required, recommended, and named attributes, each serving distinct purposes. Required attributes, derived from NFSv3, are essential for distinguishing file types, while recommended attributes, such as ACLs, provide enhanced access control.
Multi-server namespace
Namespaces span across multiple servers, simplify file system transfers based on attributes, support referrals, redundancy, and seamless server migration.
- OPEN and CLOSE operations
- These operations can combine file lookup, creation, and semantic sharing at a single point and make the file access management more efficient.
- File locking
- File locking is part of the protocol, eliminating the need for RPC callbacks. File lock state is managed by the server under a lease-based model, where failure to renew the lease may result in state release by the server.
- Client caching and delegation
- Caching resembles previous versions, with client-determined timeouts for attribute and directory caching. Delegations in NFS 4.0 allow the server to assign certain responsibilities to the client, guaranteeing specific file sharing semantics and enabling local file operations without immediate server interaction.
5.2. The AUTH_SYS authentication method Copia collegamentoCollegamento copiato negli appunti!
The AUTH_SYS method, which is also known as AUTH_UNIX, is a client authentication mechanism. With AUTH_SYS, the client sends the User ID (UID) and Group ID (GID) of the user to the server to verify its identity and permissions when accessing files. It is considered less secure as it relies on the client-provided information, making it susceptible to unauthorized access if misconfigured.
Mapping mechanisms ensure that NFS clients can access files with the appropriate permissions on the server, even if the UID and GID assignments differ between systems. UIDs and GIDs are mapped between NFS client and server by the following mechanisms:
- Direct mapping
UIDs and GIDs are directly mapped by NFS servers and clients between local and remote systems. This requires consistent UID and GID assignments across all systems participating in NFS file sharing. For example, a user with UID 1000 on a client can only access the files on a share that a user with UID 1000 on the server has access to.
For a simplified ID management in an NFS environment, administrators often rely on centralized services, such as LDAP or Network Information Service (NIS) to manage UID and GID mappings across multiple systems.
- User and Group ID mapping
-
NFS servers and clients can use the
idmapdservice to translate UIDs and GIDs between different systems for consistent identification and permission assignment.
5.3. The AUTH_GSS authentication method Copia collegamentoCollegamento copiato negli appunti!
Kerberos is a network authentication protocol that allows secure authentication for clients and servers over a non-secure network. It uses symmetric key cryptography and requires a trusted Key Distribution Center (KDC) to authenticate users and services.
Unlike AUTH_SYS, with the RPCSEC_GSS Kerberos mechanism, the server does not depend on the client to correctly represent which user is accessing the file. Instead, cryptography is used to authenticate users to the server, which prevents a malicious client from impersonating a user without having that user’s Kerberos credentials.
In the /etc/exports file, the sec option defines one or multiple methods of Kerberos security that the share should provide, and clients can mount the share with one of these methods. The sec option supports the following values:
-
sys: no cryptographic protection (default) -
krb5: authentication only -
krb5i: authentication and integrity protection -
krb5p: authentication, integrity checking, and traffic encryption
Note that the more cryptographic functionality a method provides, the lower is the performance.
5.4. File permissions on exported file systems Copia collegamentoCollegamento copiato negli appunti!
File permissions on exported file systems determine access rights to files and directories for clients accessing them over NFS.
Once the NFS file system is mounted by a remote host, the only protection each shared file has is its file system permissions. If two users that share the same User ID (UID) value mount the same NFS file system on different client systems, they can modify each other’s files.
NFS treats the root user on the client as equivalent to the root user on the server. However, by default, the NFS server maps root to the nobody account when accessing an NFS share. The root_squash option controls this behavior.
5.5. Services required on an NFS server Copia collegamentoCollegamento copiato negli appunti!
Red Hat Enterprise Linux (RHEL) uses a combination of a kernel module and user-space processes to provide NFS file shares:
| Service name | NFS versions | Description |
|---|---|---|
|
| 3, 4 | The NFS kernel module that services requests for shared NFS file systems. |
|
| 3 |
This process accepts port reservations from local remote procedure call (RPC) services, makes them available or advertised, allowing corresponding remote RPC services to access them. The |
|
| 3, 4 |
This service processes It checks that the requested NFS share is currently exported by the NFS server and that the client is allowed to access it. |
|
| 3, 4 | This process advertises explicit NFS versions and protocols the server defines. It works with the kernel to meet the dynamic demands of NFS clients, such as providing server threads each time an NFS client connects.
The |
|
| 3 | This kernel module implements the Network Lock Manager (NLM) protocol, which enables clients to lock files on the server. RHEL loads the module automatically when the NFS server runs. |
|
| 3, 4 | This service provides user quota information for remote users. |
|
| 4 | This process provides NFSv4 client and server upcalls, which map between NFSv4 names (strings in the form of `user@domain`) and local user and group IDs. |
|
| 3, 4 |
This service handles |
|
| 4 | This service provides a NFSv4 client tracking daemon that prevents the server from granting lock reclaims when other clients have taken conflicting locks during a network partition combined with a server reboot. |
|
| 3 | This service provides notification to other NFSv3 clients when the local host reboots, and to the kernel when a remote NFSv3 host reboots. |
5.6. The /etc/exports configuration file Copia collegamentoCollegamento copiato negli appunti!
The /etc/exports file controls which directories the server exports. Each line contains an export point, a whitespace-separated list of clients that are allowed to mount the directory, and options for each of the clients:
<directory> <host_or_network_1>(<options_1>) <host_or_network_n>(<options_n>)...
<directory> <host_or_network_1>(<options_1>) <host_or_network_n>(<options_n>)...
The following are the individual parts of an /etc/exports entry:
- <directory>
- The directory that is being exported.
- <host_or_network>
- The host or network to which the export is being shared. For example, you can specify a hostname, an IP address, or an IP network.
- <options>
- The options for the host or network.
Adding a space between a client and options, changes the behavior. For example, the following lines do not have the same meaning:
/projects client.example.com(rw) /projects client.example.com (rw)
/projects client.example.com(rw)
/projects client.example.com (rw)
In the first line, the server allows only client.example.com to mount the /projects directory in read-write mode, and no other hosts can mount the share. However, due to the space between client.example.com and (rw) in the second line, the server exports the directory to client.example.com in read-only mode (default setting), but all other hosts can mount the share in read-write mode.
The NFS server uses the following default settings for each exported directory:
| Default setting | Description |
|---|---|
|
| Exports the directory in read-only mode. |
|
| The NFS server does not reply to requests before changes made by previous requests are written to disk. |
|
| The server delays writing to the disk if it suspects another write request is pending.. |
|
|
Prevents that the |
5.7. Configuring an NFSv4-only server Copia collegamentoCollegamento copiato negli appunti!
If you do not have any NFSv3 clients in your network, you can configure the NFS server to support only NFSv4 or specific minor protocol versions of it. Using only NFSv4 on the server reduces the number of ports that are open to the network.
Procedure
Install the
nfs-utilspackage:dnf install nfs-utils
# dnf install nfs-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Edit the
/etc/nfs.conffile, and make the following changes:Disable the
vers3parameter in the[nfsd]section to disable NFSv3:[nfsd] vers3=n
[nfsd] vers3=nCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: If you require only specific NFSv4 minor versions, uncomment all
vers4.<minor_version>parameters and set them accordingly, for example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow With this configuration, the server provides only NFS version 4.2.
ImportantIf you require only a specific NFSv4 minor version, set only the parameters for the minor versions. Do not uncomment the
vers4parameter to avoid an unpredictable activation or deactivation of minor versions. By default, thevers4parameter enables or disables all NFSv4 minor versions. However, this behavior changes if you setvers4in conjunction with otherversparameters.
Disable all NFSv3-related services:
systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
# systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the
rpc.mountddaemon to not listen for NFSv3 mount requests. Create a/etc/systemd/system/nfs-mountd.service.d/v4only.conffile with the following content:[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
[Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udpCopy to Clipboard Copied! Toggle word wrap Toggle overflow Reload the
systemdmanager configuration and restart thenfs-mountdservice:systemctl daemon-reload systemctl restart nfs-mountd
# systemctl daemon-reload # systemctl restart nfs-mountdCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: Create a directory that you want to share, for example:
mkdir -p /nfs/projects/
# mkdir -p /nfs/projects/Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you want to share an existing directory, skip this step.
Set the permissions you require on the
/nfs/projects/directory:chmod 2770 /nfs/projects/ chgrp users /nfs/projects/
# chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/Copy to Clipboard Copied! Toggle word wrap Toggle overflow These commands set write permissions for the
usersgroup on the/nfs/projects/directory and ensure that the same group is automatically set on new entries created in this directory.Add an export point to the
/etc/exportsfile for each directory that you want to share:/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)Copy to Clipboard Copied! Toggle word wrap Toggle overflow This entry shares the
/nfs/projects/directory to be accessible with read and write access to clients in the192.0.2.0/24and2001:db8::/32subnets.Open the relevant ports in
firewalld:firewall-cmd --permanent --add-service nfs firewall-cmd --reload
# firewall-cmd --permanent --add-service nfs # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enable and start the NFS server:
systemctl enable --now nfs-server
# systemctl enable --now nfs-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
On the server, verify that the server provides only the NFS versions that you have configured:
cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2
# cat /proc/fs/nfsd/versions -3 +4 -4.0 -4.1 +4.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow On a client, perform the following steps:
Install the
nfs-utilspackage:dnf install nfs-utils
# dnf install nfs-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mount an exported NFS share:
mount server.example.com:/nfs/projects/ /mnt/
# mount server.example.com:/nfs/projects/ /mnt/Copy to Clipboard Copied! Toggle word wrap Toggle overflow As a user which is a member of the
usersgroup, create a file in/mnt/:touch /mnt/file
# touch /mnt/fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the directory to verify that the file was created:
ls -l /mnt/
# ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.8. Configuring an NFSv3 server with optional NFSv4 support Copia collegamentoCollegamento copiato negli appunti!
In a network which still uses NFSv3 clients, configure the server to provide shares by using the NFSv3 protocol. If you also have newer clients in your network, you can, additionally, enable NFSv4. By default, Red Hat Enterprise Linux NFS clients use the latest NFS version that the server provides.
Procedure
Install the
nfs-utilspackage:dnf install nfs-utils
# dnf install nfs-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: By default, NFSv3 and NFSv4 are enabled. If you do not require NFSv4 or only specific minor versions, uncomment all
vers4.<minor_version>parameters and set them accordingly:Copy to Clipboard Copied! Toggle word wrap Toggle overflow With this configuration, the server provides only the NFS version 3 and 4.2.
ImportantIf you require only a specific NFSv4 minor version, set only the parameters for the minor versions. Do not uncomment the
vers4parameter to avoid an unpredictable activation or deactivation of minor versions. By default, thevers4parameter enables or disables all NFSv4 minor versions. However, this behavior changes if you setvers4in conjunction with otherversparameters.By default, NFSv3 RPC services use random ports. To enable a firewall configuration, configure fixed port numbers in the
/etc/nfs.conffile:In the
[lockd]section, set a fixed port number for thenlockmgrRPC service, for example:[lockd] port=5555
[lockd] port=5555Copy to Clipboard Copied! Toggle word wrap Toggle overflow With this setting, the service automatically uses this port number for both the UDP and TCP protocol.
In the
[statd]section, set a fixed port number for therpc.statdservice, for example:[statd] port=6666
[statd] port=6666Copy to Clipboard Copied! Toggle word wrap Toggle overflow With this setting, the service automatically uses this port number for both the UDP and TCP protocol.
Optional: Create a directory that you want to share, for example:
mkdir -p /nfs/projects/
# mkdir -p /nfs/projects/Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you want to share an existing directory, skip this step.
Set the permissions you require on the
/nfs/projects/directory:chmod 2770 /nfs/projects/ chgrp users /nfs/projects/
# chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/Copy to Clipboard Copied! Toggle word wrap Toggle overflow These commands set write permissions for the
usersgroup on the/nfs/projects/directory and ensure that the same group is automatically set on new entries created in this directory.Add an export point to the
/etc/exportsfile for each directory that you want to share:/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)
/nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)Copy to Clipboard Copied! Toggle word wrap Toggle overflow This entry shares the
/nfs/projects/directory to be accessible with read and write access to clients in the192.0.2.0/24and2001:db8::/32subnets.Open the relevant ports in
firewalld:firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} firewall-cmd --reload# firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enable and start the NFS server:
systemctl enable --now rpc-statd nfs-server
# systemctl enable --now rpc-statd nfs-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
On the server, verify that the server provides only the NFS versions that you have configured:
cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2
# cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow On a client, perform the following steps:
Install the
nfs-utilspackage:dnf install nfs-utils
# dnf install nfs-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mount an exported NFS share:
mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/
# mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the share was mounted with the specified NFS version:
mount | grep "/mnt"
# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (rw,relatime,vers=3,...Copy to Clipboard Copied! Toggle word wrap Toggle overflow As a user which is a member of the
usersgroup, create a file in/mnt/:touch /mnt/file
# touch /mnt/fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow List the directory to verify that the file was created:
ls -l /mnt/
# ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.9. Enabling quota support on an NFS server Copia collegamentoCollegamento copiato negli appunti!
If you want to restrict the amount of data a user or a group can store, you can configure quotas on the file system. On an NFS server, the rpc-rquotad service ensures that the quota is also applied to users on NFS clients.
Prerequisites
Procedure
Verify that quotas are enabled on the directories that you export:
For ext file system, enter:
quotaon -p /nfs/projects/
# quotaon -p /nfs/projects/ group quota on /nfs/projects (/dev/sdb1) is on user quota on /nfs/projects (/dev/sdb1) is on project quota on /nfs/projects (/dev/sdb1) is offCopy to Clipboard Copied! Toggle word wrap Toggle overflow For an XFS file system, enter:
findmnt /nfs/projects
# findmnt /nfs/projects TARGET SOURCE FSTYPE OPTIONS /nfs/projects /dev/sdb1 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquotaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Install the
quota-rpcpackage:dnf install quota-rpc
# dnf install quota-rpcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: By default, the quota RPC service runs on port 875. If you want to run the service on a different port, append
-p <port_number>to theRPCRQUOTADOPTSvariable in the/etc/sysconfig/rpc-rquotadfile:RPCRQUOTADOPTS="-p __<port_number>__"
RPCRQUOTADOPTS="-p __<port_number>__"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: By default, remote hosts can only read quotas. To allow clients to set quotas, append the
-Soption to theRPCRQUOTADOPTSvariable in the/etc/sysconfig/rpc-rquotadfile:RPCRQUOTADOPTS="-S"
RPCRQUOTADOPTS="-S"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open the port in
firewalld:firewall-cmd --permanent --add-port=875/udp firewall-cmd --reload
# firewall-cmd --permanent --add-port=875/udp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enable and start the
rpc-rquotadservice:systemctl enable --now rpc-rquotad
# systemctl enable --now rpc-rquotadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
On the client:
Mount the exported share:
mount server.example.com:/nfs/projects/ /mnt/
# mount server.example.com:/nfs/projects/ /mnt/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Display the quota. The command depends on the file system of the exported directory. For example:
To display the quota of a specific user on all mounted ext file systems, enter:
quota -u <user_name>
# quota -u <user_name> Disk quotas for user demo (uid 1000): Filesystem space quota limit grace files quota limit grace server.example.com:/nfs/projects 0K 100M 200M 0 0 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow To display the user and group quota on an XFS file system, enter:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10. Enabling NFS over RDMA on an NFS server Copia collegamentoCollegamento copiato negli appunti!
If both the NFS server and clients are connected over RDMA, clients can use NFS over Remote Direct Memory Access (NFSoRDMA) to mount an exported directory.
RDMA is a protocol that enables a client system to directly transfer data from the memory of a storage server into its own memory. This enhances storage throughput, decreases latency in data transfer between the server and client, and reduces CPU load on both ends.
Prerequisites
- The NFS service is running and configured
- An InfiniBand or RDMA over Converged Ethernet (RoCE) device is installed on the server.
- IP over InfiniBand (IPoIB) is configured on the server, and the InfiniBand device has an IP address assigned.
Procedure
Install the
rdma-corepackage:dnf install rdma-core
# dnf install rdma-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow If the package was already installed, verify that the
xprtrdmaandsvcrdmamodules in the/etc/rdma/modules/rdma.conffile are uncommented:NFS over RDMA client support NFS over RDMA server support
# NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdmaCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: By default, NFS over RDMA uses port 20049. If you want to use a different port, set the
rdma-portsetting in the[nfsd]section of the/etc/nfs.conffile:rdma-port=<port>
rdma-port=<port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open the NFSoRDMA port in
firewalld:firewall-cmd --permanent --add-port={20049/tcp,20049/udp} firewall-cmd --reload# firewall-cmd --permanent --add-port={20049/tcp,20049/udp} # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Adjust the port numbers if you set a different port than 20049.
Restart the
nfs-serverservice:systemctl restart nfs-server
# systemctl restart nfs-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
On a client with InfiniBand hardware, perform the following steps:
Install the following packages:
dnf install nfs-utils rdma-core
# dnf install nfs-utils rdma-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mount an exported NFS share over RDMA:
mount -o rdma server.example.com:/nfs/projects/ /mnt/
# mount -o rdma server.example.com:/nfs/projects/ /mnt/Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you set a port number other than the default (20049), pass
port=<port_number>to the command:mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
# mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the share was mounted with the
rdmaoption:mount | grep "/mnt"
# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.11. Setting up an NFS server with Kerberos in a Red Hat Enterprise Linux Identity Management domain Copia collegamentoCollegamento copiato negli appunti!
If you use Red Hat Enterprise Linux Identity Management (IdM), you can join your NFS server to the IdM domain. This enables you to centrally manage users and groups and to use Kerberos for authentication, integrity protection, and traffic encryption.
Prerequisites
- The NFS server is enrolled in a Red Hat Enterprise Linux Identity Management (IdM) domain.
- The NFS server is running and configured.
Procedure
Obtain a kerberos ticket as an IdM administrator:
kinit admin
# kinit adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a
nfs/<FQDN>service principal:ipa service-add nfs/nfs_server.idm.example.com
# ipa service-add nfs/nfs_server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Retrieve the
nfsservice principal from IdM, and store it in the/etc/krb5.keytabfile:ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
# ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytabCopy to Clipboard Copied! Toggle word wrap Toggle overflow Optional: Display the principals in the
/etc/krb5.keytabfile:Copy to Clipboard Copied! Toggle word wrap Toggle overflow By default, the IdM client adds the host principal to the
/etc/krb5.keytabfile when you join the host to the IdM domain. If the host principal is missing, use theipa-getkeytab -s idm_server.idm.example.com -p host/nfs_server.idm.example.com -k /etc/krb5.keytabcommand to add it.Use the
ipa-client-automountutility to configure mapping of IdM IDs:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Update your
/etc/exportsfile, and add the Kerberos security method to the client options. For example:/nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you want that your clients can select from multiple security methods, specify them separated by colons:
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Reload the exported file systems:
exportfs -r
# exportfs -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow