OBSERVAÇÃO: Parece que configurar o selinux como modo Permissivo não evita esse problema de permissão de arquivo.
Temos uma VM de desenvolvimento executando o CentOS 7.2.1511. Os arquivos são compartilhados com nossas máquinas host (Macs) via NFS via vagrant (virtualbox).
O compartilhamento NFS é para que possamos editar o código usando o PHPStorm em nossas máquinas host. O problema não surge se usarmos compartilhamentos SMB, mas, em seguida, o desempenho do compartilhamento de arquivos r / w é indesejavelmente lento.
A configuração de compartilhamento no vagrant é:
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']
Esporadicamente, ao executar git checkout x
ou git clean -df
, receberemos mensagens de permissão negada.
$ 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
...
executando 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
Qual é o usuário / grupo correto para o compartilhamento, bem como o contexto de arquivo correto, e exatamente o mesmo que um arquivo que é removível. por exemplo,
$ ls -Z composer.json
-rw-rw-r--. 503 games system_u:object_r:nfs_t:s0 composer.json
Se tentarmos remover diretamente o arquivo agora com permissão, teremos a permissão negada.
$ rm modules/node_modules/acorn/bin/acorn
rm: cannot remove ‘modules/node_modules/acorn/bin/acorn’: Permission denied
No entanto, se nós vi o arquivo e escrevemos (mesmo sem fazer nenhuma alteração editável) ou seja,
vi modules/node_modules/acorn/bin/acorn
:w
rm modules/node_modules/acorn/bin/acorn
funcionará corretamente. Como alternativa, se verificarmos os arquivos / diretórios relevantes da máquina host, os problemas desaparecerão e poderemos recuperar os arquivos novamente.
Alguém poderia saber por que essa permissão de arquivo aparece esporadicamente? e como podemos consertar isso?
Atualização (27-01-2017) [a pedido do incorporado]:
A saída de executar $ mount
re: o compartilhamento 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)
Atualização (29-01-2017) [a pedido do lauc.exon.nod]:
Execute 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
Ainda não foi possível excluir o arquivo previamente com erro:
$ 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
Eliminou esse erro removendo os arquivos afetados do host e conseguiu reproduzir o erro novamente com novos arquivos. Parece que configurar o selinux para o modo Permissivo não afeta o problema do NFS.
Atualização (31-01-2017) [a pedido do mzhaase]:
Tocar em um arquivo com o problema de permissão não elimina o problema de permissão. Um vim subseqüente com: w limpou o problema de permissão e o arquivo foi então corrigido corretamente.
Atualização (02-02-2017) [a pedido de allo]:
Tentou lsattr
um arquivo com erro de permissão. Infelizmente recebi lsattr: Inappropriate ioctl for device...
. De acordo com o link - Sistemas de arquivos suportados - as montagens do NFS não são lsattr-capazes.