1、问题描述
这里我将文件传入nfs的共享目录中,随即要运行目录中的脚本从而去导入对应的镜像,
但是这里它提示ctr执行这个文件表示权限拒绝。
2、排查
(1)提权
既然文件权限不允许执行,我猜测是不是文件的所有者和当前用户不一致导致的无法运行,于是我为了试验,对文件增加了777权限,想要试验下。
额......但是失败了,也不允许我去对文件权限进行操作。
(2)检查nfs配置文件
我看了下exports文件哈,有如下内容:
/nfsdata/ 10.0.0.0/24(rw)
这里表示在这个网段的机器中可以对此目录中的文件进行读写操作
这边我问了下ai,然后得出了下面的结论
结论
nfs为了安全,默认情况下会开启一个名为
root_squash的机制,表示如果你是使用root用户访问的文件情况下,nfs会将你的root用户匿名为一个匿名用户,通常是nfsnobody或nobody,然后你的系统中这两个用户也没有对应的权限,所以你便无法进行操作。
------而相对来说,还有一个名为no_
root_squash的配置,意思与上面相反,如果是root用户,则不会将root转换为匿名用户,而是继续使用root用户的权限去操作和执行命令,而用此方法可以解决以上问题。
【注意】建议临时使用下,长期使用可能存在安全隐患。
3、如何解决
需要在exports配置文件中,增加no_root_squash配置
/nfsdata/ 10.0.0.0/24(rw,no_root_squash)
然后对nfs服务进行重启后试验
systemctl restart nfs
这时的问题就解决了。


