使用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./yttitan/2406403
看到还有说可能selinux问题的
关闭selinux(我采取了这个)
在selinux添加规则,修改挂载目录
修改/etc/sysconfig/selinux
关闭selinux 修改SELINUX=disabled
并临时关闭selinux
setenforce 0