Linux下nfs配置以及使用

1.nfs配置

NFS概念

网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制

目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。NFS协议有多个版本:Linux支持版本4、版本3和版本2, 而大多数系统管理员

熟悉的是NFSv3。默认情况下,该协议并不安全,但是更新的版本(如NFSv4)提供了对更安全的身份验证的支持,甚至可以通过kerberos进行加密。

NFS服务器配置

若要配置基本NFS服务器,您应该安装nfs-utils软件包。然后,您应该编辑/etc/exports以列出您希望通过网络与客户端系统共享的文件系统,并指出哪些客户端对导出具有何种访问权限。例如:/var/ftp/pub

192.168.0.0/24(ro,sync)

将目录/var/ftp/pub导出至192.168.0.0/24网络上的所有主机(对目录具有只读权限)。

/export/homes *.example.com(rw,sync)

将目录/export/homes导出至exmaple.com中的所有主机(对目录具有读写权限)。

NFS服务器运行时,每次您编辑/etc/exports后,都应通过在保存更改后执行exportfs -r来确保应用这些更改。您可以使用exportfs -v显示所有导出。NFSv4还导出pseudo-root(所有导出的文件系统的root)。如果客户端挂载nfs-server:/ ,这将在NFS服务器上的/下面相对于其位置挂载所有导出文件系统。这对于浏览从客户端的服务器导出的所有文件系统有用。您仍可单独挂载文件系统。

5默认情况下,NFS服务器将NFS客户端上的root视为用户nfsnobody。即,如果root尝试访问挂载的导出中的文件,服务器会将其视作用户nfsnobody访问。在NFS导出被无磁盘客户端用作/和root需要被视作root的情况中,这种安全措施存在隐患。若要禁用此保护,服务器需要将no_root_squash添加到在/etc/exports中导出设置的选项列表:

/exports/root

192.168.0.1(rw,no_root_squash)

对于NFSv4,必须在服务器上打开端口2049/TCP(对于nfsd)。对于NFSv3和更早版本,必须为rpcbind、rpc.mountd、lockd和rpc.rquotad打开更多端口,而在“随机”选择的端口上启动其中许多服务这一事实又增加了复杂性。此外,NFSv2和NFSv3支持UDP传输,还要求打开相应的端口

。本课程中我们将关注NFSv4。

6Demo

1. 启动NFS服务:

# systemctl start nfs-server ; systemctl enable nfs-server

2. 创建共享目录并设置权限:

# mkdir /nfsshare ; chown nfsnobody /nfsshare

3. 编辑/etc/exports。例如:

/nfsshare/read 172.25.0.0/24(ro,sync)

/nfsshare/write 172.25.0.0/24(rw,sync) 127.0.0.1(rw,sync)

4. 从客户端查看并挂载NFS pseudo-root共享:

[root@desktop0 ~]# showmount -e server0

[root@desktop0 ~]# mkdir /mnt/nfsshare

[root@desktop0 ~]# mount -t nfs server0.example.com:/ /mnt/nfsshare

www.westos.org

7永久挂载NFS文件系统:

将相应的行添加至/etc/fstab:

nfsserver:/nfsshare

/mnt/nfsshare nfs defaults 0 0

客户端NFS挂载选项

 rw:挂载可读写的文件系统

 ro:挂载只读文件系统

vers=4:尝试只使用指定的NFS版本进行挂载。如果服务器不支持该版本,则挂载请求失败

soft:如果NFS请求超时,三次尝试后返回错误。权衡数据完整性与提高客户端响应性。(默认行为hard,将无限期地重试)。

8保护NFS输出

Demo:

serverx和desktopx上运行脚本,加入kerberos认证域:

# lab nfskrb5 setup

安装kerberos服务所需的keytab:(以下操作都在server0上进行)

# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab

激活NFS v4.2版本,可以输出selinux标签,编辑/etc/sysconfig/nfs修改如下选项:

RPCNFSDARGS="-V 4.2"

启动nfs-secure-server服务:

# systemctl start nfs-secure-server; systemctl enable nfs-secure-server

配置NFS输出:

# mkdir /securenfs

# echo '/securenfs desktop0(sec=krb5p,rw)' >> /etc/exports

# exportfs -r

9安装kerberos服务所需keytab:(以下操作都在dekstop0进行)

# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab

启动nfs-secure服务:

# systemctl start nfs-secure; systemctl enable nfs-secure

配置客户端挂载:

# mkdir /mnt/secureshare

# echo 'server0:/securenfs /mnt/secureshare

/etc/fstab

nfs defaults,v4.2,sec=krb5p 0 0' >>

# mount -a

操作实例:

服务端

[root@localhost mnt]# yum install nfs-utils -y

Loaded plugins: langpacks

Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version

Nothing to do

[root@localhost mnt]# systemctl start nfs

[root@localhost mnt]# firewall-cmd --permanent --add-service=nfs

success

[root@localhost mnt]# firewall-cmd --permanent --add-service=mountd

success

[root@localhost mnt]# firewall-cmd --reload

success

[root@localhost mnt]# firewall-cmd --permanent --add-service=rpc-bind

success

[root@localhost mnt]# firewall-cmd --reload

success

[root@localhost mnt]# vim /etc/exports

[root@localhost mnt]# exportfs -rv

exporting 172.25.254.0:/westos

[root@localhost mnt]# vim /etc/exports

[root@localhost mnt]# exportfs -rv

exporting 172.25.254.0/24:/westos

[root@localhost mnt]# showmount -e 172.25.254.100

Export list for 172.25.254.100:

/westos 172.25.254.0/24

[root@localhost mnt]# showmount -e 172.25.254.137

Export list for 172.25.254.137:

/westos 172.25.254.0/24

客户端

[root@foudation37 ~]# showmount -e 172.25.254.137

Export list for 172.25.254.137:

/westos 172.25.254.0/24

[root@foudation37 ~]# mount 172.25.254.137/westos /mnt

mount: special device 172.25.254.137/westos does not exist

[root@foudation37 ~]# mount 172.25.254.137:/westos /mnt

[root@foudation37 ~]# df

Filesystem             1K-blocks     Used Available Use% Mounted on

/dev/sda5               66816128 31267544  35548584  47% /

devtmpfs                 1870084        0   1870084   0% /dev

tmpfs                    1883192      500   1882692   1% /dev/shm

tmpfs                    1883192     9048   1874144   1% /run

tmpfs                    1883192        0   1883192   0% /sys/fs/cgroup

/dev/sda2                 508588   149448    359140  30% /boot

tmpfs                     376640       28    376612   1% /run/user/1000

/dev/sdb1               30703568 16409024  14294544  54% /run/media/kiosk/ECHO SWEET

172.25.254.137:/westos  10473984  3158528   7315456  31% /mnt

[root@foudation37 ~]# cd /mnt

[root@foudation37 mnt]# ls

file1

[root@foudation37 mnt]# touch file

[root@foudation37 mnt]# 

你可能感兴趣的:(linux系统管理)