首先不能rm / unlink文件,但可以在vim和写入文件之后

注意:看起来像将selinux设置为Permissive模式不会阻止此文件权限问题。

我们有一个运行CentOs 7.2.1511的开发虚拟机。 文件通过NFS(通过vagrant(virtualbox))与我们的主机(Mac)共享。

NFS共享是我们可以在主机上使用PHPStorm编辑代码。 如果我们使用SMB共享,​​这个问题不会突然出现,但是文件共享r / w性能会慢得令人不快。

stream浪者的分享设置是:

config.vm.synced_folder "code", "/srv/client/code" , :nfs=>true, :mount_options => ['rw,noatime,nolock,vers=3,udp,fsc,actimeo=2,resvport,rsize=32768,wsize=32768'] 

当运行git checkout x或者git clean -df ,我们会收到权限被拒绝的消息。

 $ git clean -df warning: failed to remove modules/node_modules/acorn/bin/acorn warning: failed to remove modules/node_modules/acorn/bin/generate-identifier-regex.js ... 

运行ls -Z modules/node_modules/acorn/bin/acorn

 $ ls -Z modules/node_modules/acorn/bin/acorn -rwxr-xr-x. 503 games system_u:object_r:nfs_t:s0 modules/node_modules/acorn/bin/acorn 

哪个是共享的正确用户/组以及正确的文件上下文,与可移动文件完全相同。 例如

 $ ls -Z composer.json -rw-rw-r--. 503 games system_u:object_r:nfs_t:s0 composer.json 

如果我们试图直接删除现在奇怪的权限文件,那么我们会被拒绝。

 $ rm modules/node_modules/acorn/bin/acorn rm: cannot remove 'modules/node_modules/acorn/bin/acorn': Permission denied 

但是,如果我们vi文件和写(即使没有任何可编辑的变化),即

  • vi modules/node_modules/acorn/bin/acorn
  • :w
  • rm modules/node_modules/acorn/bin/acorn将正常工作。

或者,如果我们从主机检出相关的文件/目录,那么问题就会消失,我们可以再次读取这些文件。

谁会知道为什么这个文件许可会偶尔popup? 以及我们如何解决它?

更新(27-01-2017) [根据embedded的要求]:

运行$ mount的输出:nfs共享是:

 10.20.30.1:/Path/to/code on /guest/path/code type nfs (rw,noatime,vers=3,rsize=16384,wsize=16384,namlen=255,acregmin=2,acregmax=2,acdirmin=2,acdirmax=2,hard,nolock,proto=udp,timeo=11,retrans=3,sec=sys,mountaddr=10.20.30.1,mountvers=3,mountport=839,mountproto=udp,fsc,local_lock=all,addr=10.20.30.1) 

更新(29-01-2017) [应lauc.exon.nod的要求]:

已经运行sudo setenforce Permissive

 $ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28 

仍然无法删除以前的错误文件:

 $ rm /guest/path/code/vendor/twig/twig/doc/filters/abs.rst rm: cannot remove '/guest/path/code/vendor/twig/twig/doc/filters/abs.rst': Permission denied $ ls -Z /guest/path/code/vendor/twig/twig/doc/filters/abs.rst -rw-rw-r--. 503 games system_u:object_r:nfs_t:s0 /guest/path/code/vendor/twig/twig/doc/filters/abs.rst 

通过从主机中删除受影响的文件来清除此错误,然后能够使用新文件再次重现该错误。 看起来像将selinux设置为Permissive模式不会影响NFS问题。

更新( 31-01-2017 [应mzhaase的要求]:

触摸具有权限问题的文件不会清除权限问题。 随后的vim:w确实清除了权限问题,然后文件被正确地复制了。

更新(02-02-2017) [在allo的请求]:

试图find一个权限错误的文件。 不幸的是收到lsattr: Inappropriate ioctl for device... 根据http://www.jpeek.com/articles/linuxmag/2008-07/ – 支持的文件系统 – NFS挂载不可见。