NFS 挂载命令失败:权限被拒绝

NFS 挂载命令失败:权限被拒绝

我正在开发一块嵌入式主板,上面运行着嵌入式 Linux。我想将 Linux 主机(Ubuntu 20.04)上的目录挂载到我的嵌入式主板上。

根据与董事会共享的文档,我运行以下命令进行挂载。

# busybox mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.60.68:/home/paras/nfs_mount/ /nfsroot/

其中,192.168.60.68 是我的 Linux 主机(Ubuntu 20.04)的 IP。

当我在嵌入式主板,抛出错误。

# busybox mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.60.68:/home/paras/nfs_mount/ /nfsroot/ 

mount: mounting 192.168.60.68:/home/paras/nfs_mount/ on /nfsroot/ failed: Permission denied 

在我的 Linux 系统(Ubuntu 20.04)上,防火墙未处于活动状态并且 nfs 服务器正在运行。

paras@paras-desktop:~/$    systemctl status nfs-server
● nfs-server.service - NFS server and services
     Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-11-14 13:50:40 IST; 1min 38s ago
    Process: 14244 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
    Process: 14245 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
   Main PID: 14245 (code=exited, status=0/SUCCESS)

Nov 14 13:50:39 paras-desktop systemd[1]: Starting NFS server and services...
Nov 14 13:50:40 paras-desktop systemd[1]: Finished NFS server and services.

paras@paras-desktop:~/$ sudo ufw status
Status: inactive

paras@paras-desktop:~/$ ifconfig
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.60.68  netmask 255.255.252.0  broadcast 192.168.63.255
        inet6 fe80::155e:fa5a:a0b:cb37  prefixlen 64  scopeid 0x20<link>
        ether 80:2b:f9:e7:0a:31  txqueuelen 1000  (Ethernet)
        RX packets 481975  bytes 483409798 (483.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 284309  bytes 91521351 (91.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

答案1

您只能使用专门的 NFS 挂载路径出口(类似于在Windows上创建“共享”),这是通过/etc/exports文件完成的。

例如,/home/paras/nfs要从 LAN 为客户端导出,请使用:

/home/paras/nfs 192.168.60.0/24(sec=sys,rw,no_subtree_check)

或者:

/home/paras/nfs -rw,no_subtree_check 192.168.60.0/24(sec=sys) 192.168.70.0/24(sec=sys)

完成编辑后,运行exportfs -rv以应用更改。

请注意 NFS 具有默认情况下进行客户端身份验证 - 它只检查 IP 地址,因此*除非必须,否则请避免导出文件系统。(NFS 通过 sec=krb5 支持 Kerberos,但我怀疑它是否适用于嵌入式 Linux。)

出于相关原因,NFS 服务器不允许客户端拥有 root 权限 – 每当 NFS 客户端声称访问由 root (UID 0) 执行时,它实际上获得的是该nobody用户的权限。(可以使用“no_root_squash”禁用此功能,但最好只向“nobody”用户授予必要的最低访问权限。)

如果嵌入式客户端使用的 UID 在你的服务器系统上没有实际意义,你可能需要重新映射全部all_squash使用和导出选项访问特定的 UID anonuid=

答案2

我遇到了同样的问题。根本原因是共享机器上缺少权限。

chmod 777 .

在这一点上解决了我的问题。

相关内容