使用nfs挂载共享maven仓库之后  新项目编译会报错如下

chown: changing ownership of ‘/usr/local/services/maven/repo/com/sc/sc-core

 

 

然后在部署脚本打了tag测试

明明启动用户是root 并且单独执行命令或者放脚本里运行不会报错.这里就是会报错

 

发现是job在jenkins slave上执行,nfs同步主jenkins上的jar包等文件的时候才会报错.

 

修改nfs权限 使他挂载之后 为root 而不是nfsnobody

修改前

 

先在slave上卸载nfs

umout /usr/local/services/maven

 

然后在nfs server上修改/etc/exports,添加no_root_squash

/root/.m2 192.168.10.0/24(rw,sync)

/usr/local/services/maven 192.168.10.0/24(rw,no_root_squash,sync)

/ops 192.168.10.0/24(rw,sync)

如下

分析:

     用户对目录的权限受两方面约束:NFS认证权限、Posix权限;

     NFS权限:

     NFS服务器器中exports中配置额读写、只读权限

     Posix权限:

     发现exports目录权限中,参数no_root_squash的其作用是:NFS客户端使用共享目录的用户,如果是root 的话,所有的操作均在服务器端映射为root用户,拥有共享目录的root权限!

     默认情况使用的是相反参数root_squash:在登入 NFS 主机export目录的使用者如果当root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份。
因为客户端是使用root登录的,自然权限被压缩为nobody了,难怪无法写入。

 

重新加载服务

exportfs  -arv          

 

修改后在jenkins slave上再挂载测试

mount -t nfs   192.168.10.170:/usr/local/services/maven /usr/local/services/maven

 

 

 

 

 

再部署就ok了

 

之后的文件权限如下  没有问题了!

 

nfs用户权限修改可以参考

https://blog.51cto.com/yttitan/2406403

 

看到还有说可能selinux问题的

关闭selinux(我采取了这个)
在selinux添加规则,修改挂载目录

修改/etc/sysconfig/selinux

关闭selinux 修改SELINUX=disabled

并临时关闭selinux

setenforce 0

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐