NFS挂载问题 mount.nfs: access denied by server while mounti
这两天在搭建嵌入式开发环境,配置好NFS服务器后,遇到了一个很纠结的错误 使用 mount -t nfs 127.0.0.1:/home/lzgonline/rootfs /mnt 和 mount -t nfs 192.168.1.9:/home/lzgonline/rootfs /mnt 本机挂载nfs则没有问题,然而使用 mount -t nfs 192.168.3.12
这两天在搭建嵌入式开发环境,配置好NFS服务器后,遇到了一个很纠结的错误
使用 mount -t nfs 127.0.0.1:/home/lzgonline/rootfs /mnt 和 mount -t nfs 192.168.1.9:/home/lzgonline/rootfs /mnt 本机挂载nfs则没有问题,然而使用 mount -t nfs 192.168.3.12:/home/lzgonline/rootfs /mnt 时却出现了问题,导致开发板无法通过nfs挂载启动,其中192.128.3.12 和 192.128.1.9(即nfs服务器)之间建立了映射(DMZ)关系。
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
百度、谷歌了很久,大部分都说是权限设置有问题,其实文件夹权限都设为777了,权限上都没问题,hosts.deny和hosts.allow都保留默认设置,防火墙也关了,该设置的都设置了,但还是被拒绝,很是郁闷,就在一筹莫展的时候,通过查看一些linux技术论坛后逐渐找到了问题所在。
首先使用命令查看出错日志文件
[root@lzgonline init.d]# cat /var/log/messages | grep mount
Jun 29 00:49:04 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1689
Jun 29 00:51:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1710
Jun 29 01:02:17 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 1916
Jun 29 01:09:51 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2157
Jun 29 01:17:02 lzgonline mountd[1644]: refused mount request from 192.168.3.12 for /home/lzgonline/rootfs (/home/lzgonline/rootfs): illegal port 2318
从出错日志可以看出,mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs 被拒绝的原因是因为使用了非法端口,功夫总没白费,终于在一个linux技术论坛上找到了答案:
I googled and found that since the port is over 1024 I needed to add the "insecure" option to the relevant line in /etc/exports on the server. Once I did that (and ran exportfs -r), the mount -a on the client worked.
//如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作:
查看 exports 手册中关于 secure 选项说明也发现确实如此
[root@lzgonline init.d]# man exports
secure,This option requires that requests originate on an Internet port less than IPPORT_RESERVED (1024). This option is on by default. To turn it off, specify insecure.
//secure 选项要求mount客户端请求源端口小于1024(然而在使用 NAT 网络地址转换时端口一般总是大于1024的),默认情况下是开启这个选项的,如果要禁止这个选项,则使用 insecure 标识
修改配置文件/etc/exports,加入 insecure 选项
/home/lzgonline/rootfs *(insecure,rw,async,no_root_squash)
保存退出
然后重启nfs服务:service nfs restart
然后问题就解决了
**********************************************************************************
NFS服务器的配置
一、NFS服务器端的配置,即共享发布者
(一)需启动的服务和需安装的软件
1、 NFS服务器必须启动两个daemons服务:rpc.nfsd和rpc.mountd
rpc.nfsd:用来管理客户端PC是否可以登录。类似于windows中的共享权限。
rpc.mountd:用来管理客户端pc能够使用的文件安全权限。 如windows中的共享安全权限。
RPC:因为NFS支持的功能很多,所以NFS的功能对应的端口才无法固定,而是采用小于1024的随机端口。
但客户端需要得知服务器的端口才能联机,此时就需要启用RPC服务。
RPC的功能就是指定每个NFS功能的端口号。并传信息给客户端,让客户端可以连到正确的端口上。
服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC知道每个NFS功能对应的端口。
RPC用111端口监听客户端的请求,并应答正确的端口。启动NFS前,RPC就要先启动了,否则NFS会无法向RPC注册。
2、NFS 服务器需要安装nfs主程序,nfs-utils和rpc主程序 portmap
(二)exports服务器的方法:
1、 NFS文件存取权限
因为NFS没有验证机制,当客户端用户访问NFS服务器的共享文件夹时会遇到的权限情况:
(1)NFS服务器端用户列表中有与客户端用户名相同的用户名时,客户端可以直接存取共享文件夹。例:客户端用户为khp,而nfs服务器用户列表(/etc/passwd)中也有khp这个用户名,则将拥有KHP权限。。
(2)当访问NFS服务器的客户端用户UID与服务器端 UID相同,但用户名却不相同时,客户端将拥有与服务器端UID 相同但不同用户的权限。
例:客户端为 501UID,用户名为 khp的帐号访问NFS服务器。NFS服务器用户列表中(/etc/passwd)有uid为501 ,但用户名为pla的用户,所以客户端khp用户可以拥有NFS服务器pla相同权限。
(3)如果客户端用户UID在NFS服务器端用户列表中不存在时,则以匿名用户的权限访问。即nobody的用户。
(4)如果客户端用户为root用户,因为每台电脑都有root用户,如果不作控制,NFS服务器将会很危险,会被客户端全部控制。所以默认root用户名的客户端访问NFS服务器,会变为匿名用户,拥有匿名用户权限。也可不控制。
2、编辑/etc/exports文件,此文件不一定存在,如不存在就手工建立
/etc /exports的格式:
共享目录 允许访问的电脑 (选项)
共享目录:即nfs服务器准备共享的目录
允许访问的电脑:即允许访问这个共享的客户端有哪些。可用电脑名、IP地址,还可以用通配符。
选项:
(1) rw //读写。客户端拥有读写的权限。
(2) ro //只读 客户端只有读的权限。
(3) no_root_squash //root用户可访问,不变成匿名用户,即root用户可以以root用户的权限访问NFS服务器的共享资源。
(4) root_squash //root用户变成匿名用户
(5) all_squash //所有用户都变成匿名用户
(6) anonuid
(7) anongid //所有匿名用户的UID或组ID都变为后面设定的UID或GID的权限。因为所有在NFS服务器用户列表中没有用户名的都会匿名用户,这里设定这些匿名用户的用户权限。
(8) sync //同步到硬盘
(9) async //数据存放到内存而不是直接写到硬盘
例: /mnt/export www.elitek.com(rw) //这个目录只允许www.elitek.com这台电脑读写。注意,后面(rw)前没有空格。
/mnt/export www.elitek.com (rw) // /mnt/export这具目录只允许www.elitek.com这台电脑读写,且允许所有其他用户读写权限。(rw)前面有空格。
/mnt/export *.elitek.com(rw) //允许所有elitek.com这个域里的电脑读写这个共享文件夹。
3、 exportfs命令。 可以更改设置 (命令目录/usr/sbin/exportfs)
exportfs [-avu][-o option] [director]
-a:把 exprotfs里的所有路径都共享出去
-u:把export出去的路径取消
-v:在export时,共享显示到屏幕
-o option :即一些选项
-r :重新挂载exports里的设置
例: exportfs -a ro /tmp/user //即把/tmp/user目录全部exports,但用户只能读取资料。
4、 /var/lib/nfs/*tab //存放日志文件.etab记录NFS共享出来的目录完整权限设置。 .xtab记录曾经连接引NFS的客户机数据
5、rpcinfo [-p] [ip |电脑名] //查看RPC服务的注册状态
6、 netstat -ultn 查看开放了哪些端口
二、客户端的端设置
作为NFS客户端需要先运行 nfslock和 portmap服务。 /etc/init.d/nsflock start
/etc/init.d/portmap start
并且有几种挂载方法
(一)、命令方式
mount 命令挂载
1、 showmount -e [nfs服务器电脑名| ip地址 ] //查看nfs服务器的可用共享目录
2、mount nfs主机名:nfs共享目录 挂载到本机的目录 //把nfs服务器共享的目录挂载到本机。主机名外还可用IP地址
例: mount 192.168.9.1:/tmp/export /tmp/export //即把192.168.9.1nfs服务器共享的 /tmp/export目录,挂载到本机的 /tmp/export目录上。
mount -t nfs -o time=20 www.linux.com/home/khp /tmp/export //把远程nfs服务器的/home/khp 挂载到本机的/tmp/export目录下。最长响应时间为20秒。
3、 unmount 命令中断挂载
(二) 编辑 /etc/fstab文件挂载
/etc/fstab文件详解在文件系统管理中有说明
1、格式: NFS服务器及共享目录 挂载到本地的目录 文件格式 选项
www.elitek.com:/home/project /tmp/export ro //把 www.elitek.com这对口NFS服务器上的 /home/project目录挂载到本机的 /tmp/export目录上,且为只读。格式为nfs
2、打开文件夹。此时输入 mount /tmp/export 即可以打开挂载的文件
(三)autofs来挂载nfs文件系统
只在文件系统被访问时才被挂载。
1、在 /etc/auto.master中定义挂载点
2、再在 auto.master中定义的 /etc/auto.dirctory 中定义目录的总挂载点。
即在系统文件 /etc/auto.master中先定义一个总的总挂载点。 然后依这个文件中定义的总挂载点文件,再设置详细挂载点。
例: vi /etc/auto.master 编辑这个文件:
/misc /etc/auto.khp -timeout 60 //即 /etc/auto.khp中的文件将挂载到 /misc目录下
再编辑: vi /etc/auto.khp 这个文件,定义挂载点。
myproject -rw,soft,intr www.elitek.com:/home/project //即把NFS服务器 www.elitek.com:/home/project共享目录,挂载到本机的 /misc/myproject目录下。
注意: /misc/myproject目录是动态的,不是实际存在的,只是在访问时这个目录才会产生。退出就消息。但 /misc目录需存在。
当防火墙开着时,有时就无法访问,可用 /etc/rc.d/init.d/iptables stop 停用防火墙,或用 iptable命令开放NFS的端口。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SQL IF 語句用於有條件地執行 SQL 語句,語法為: IF (condition) THEN {語句} ELSE {語句} END IF;。條件可以是任何有效的 SQL 表達式,如果條件為真,執行 THEN 子句;如果條件為假,執行 ELSE 子句。 IF 語句可以嵌套,允許更複雜的條件檢查。

多線程的好處在於能提升性能和資源利用率,尤其適用於處理大量數據或執行耗時操作。它允許同時執行多個任務,提高效率。然而,線程過多會導致性能下降,因此需要根據 CPU 核心數和任務特性謹慎選擇線程數。另外,多線程編程涉及死鎖和競態條件等挑戰,需要使用同步機制解決,需要具備紮實的並發編程知識,權衡利弊並謹慎使用。

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

解決 Vue Axios 跨域問題的方法包括:服務器端配置 CORS 頭使用 Axios 代理使用 JSONP使用 WebSocket使用 CORS 插件

PHPMyAdmin安全防禦策略的關鍵在於:1. 使用最新版PHPMyAdmin及定期更新PHP和MySQL;2. 嚴格控制訪問權限,使用.htaccess或Web服務器訪問控制;3. 啟用強密碼和雙因素認證;4. 定期備份數據庫;5. 仔細檢查配置文件,避免暴露敏感信息;6. 使用Web應用防火牆(WAF);7. 進行安全審計。 這些措施能夠有效降低PHPMyAdmin因配置不當、版本過舊或環境安全隱患導致的安全風險,保障數據庫安全。

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

Apache服務器是強大的Web服務器軟件,充當瀏覽器與網站服務器間的橋樑。 1. 它處理HTTP請求,根據請求返回網頁內容;2. 模塊化設計允許擴展功能,例如支持SSL加密和動態網頁;3. 配置文件(如虛擬主機配置)需謹慎設置,避免安全漏洞,並需優化性能參數,例如線程數和超時時間,才能構建高性能、安全的Web應用。
