НОТА: Похоже, установка selinux в разрешающий режим не предотвращает проблему с правами доступа к файлам.
У нас есть виртуальная машина разработки под управлением CentOs 7.2.1511. Файлы передаются нашим хост-машинам (Mac) через NFS через vagrant (виртуальный бокс).
Общий ресурс NFS предназначен для редактирования кода с помощью PHPStorm на наших хост-машинах. Проблема не возникает, если мы используем общие ресурсы SMB, но тогда скорость чтения / записи файлового ресурса становится нежелательно низкой.
Настройка доли в бродяге:
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
Однако, если мы vii файл и напишем (даже без внесения каких-либо редактируемых изменений), т.е.
vi modules/node_modules/acorn/bin/acorn
:w
rm modules/node_modules/acorn/bin/acorn
будет работать правильно.В качестве альтернативы, если мы проверим соответствующие файлы / каталоги с хост-машины, проблемы исчезнут, и мы сможем снова rm файлы.
Кто-нибудь знает, почему это разрешение файла появляется время от времени? и как мы можем это исправить?
Обновление (27-01-2017) [по запросу встроенного]:
Выход запущенного $ mount
re: доля 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 в разрешающий режим не влияет на проблему NFS.
Обновление (31-01-2017) [по просьбе мжаасе]:
Прикосновение к файлу с проблемой разрешения не устраняет проблему с разрешением. Последующий vim с: w действительно устранил проблему с разрешением, и затем файл был правильно удален.
Обновление (02-02-2017) [по просьбе алло]:
Попытка lsattr
файл с ошибкой разрешения. К сожалению получил lsattr: Inappropriate ioctl for device...
. В соответствии с http://www.jpeek.com/articles/linuxmag/2008-07/ - Поддерживаемые файловые системы - монтирование NFS не поддерживает lsattr.