Я пытаюсь добавить ACL NFS v4, который позволяет каталогам, дочерним и внучатым каталогам и файлам и т. Д. Наследовать флаг удаления ('D') в Linux. Базовая файловая система на сервере - xfs и.
Я тоже не особо знаком с этим.
Сервер - Centos 6.3, клиент - Centos 6.4.
По моему чтению справочной страницы 'i
'флаг означает установку этого ACL для дочерних файлов / каталогов, но не применять его к текущему каталогу. Я не устанавливаю 'i
'флаг родительского ( /var/www/tauweb
), но, похоже, он устанавливается для любых созданных дочерних каталогов.
Что происходит, когда я пишу следующие ACE, используя nfs4_getfacl в каталоге /vaw/www/tauweb
:
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:dg:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy
в том, что система на самом деле пишет это:
[root@tau www]# nfs4_getfacl tauweb/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A:g:tau@ersa.edu.au:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy
Обратите внимание на "i" в предпоследнем пользователе. tau
вход. Это не было установлено, когда я редактировал ACE, но присутствовал сразу - кажется, система добавляет это.
Теперь, когда я читаю всю документацию, которую я могу найти, указывает, что "dg" после первого двоеточия в верхнем наборе ACE должно вызывать наследование ACL дочерним каталогам (насколько я понимаю, 'g' указывает, что участник является группой, а не Пользователь).
Теперь флаг «i», по-видимому, означает, что этот ACE будет унаследован, но не учитывает его в реальных проверках на постоянство.
Тогда, когда ребенок режиссер /var/www/tauweb/d2
создается, он получает эти:
[kkassahn@tau tauweb]$ nfs4_getfacl d2/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:tau@ersa.edu.au:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy
И внук /var/www/tauweb/d2/d3
получает эти:
[kkassahn@tau tauweb]$ nfs4_getfacl d2/d3/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:tau@ersa.edu.au:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy
Теперь d2 можно удалить - потому что это parent /var/www/tauweb has
в
A:g:tau@ersa.edu.au:rwaDxtcy
ACE. Но этот ACE не передается по наследству.
Только A:g:tau@ersa.edu.au:rxtcy
применяется к d2 и d3, хотя наследует, но не консультируется
A:fdig:tau@ersa.edu.au:rwaDxtcy
наследуется детьми, внуками и т. д.
Любая помощь или предложения приветствуются, спасибо.
Я нашел причину этой проблемы. Похоже, что ACL NFS v4 применяют umask пользователя. У моих пользователей umask равнялся 002, поэтому отсутствие записи на других приводило к удалению флагов 'w' 'a' 'd' и 'D'.
Насколько я могу судить, это поведение отличается от ACL POSIX.
В любом случае решением для меня было установить umask пользователя равным 0.
В моем случае одним из пользователей был apache, поэтому я установил umask 000
в /etc/init.d/http
.
Все остальные пользователи были chrooted-пользователями SFTP, и я использовал pam_umask в конфигурации ssh pam, чтобы установить их umask 000.
Мой друг нашел здесь обсуждение проблемы: http://www.spinics.net/lists/linux-nfs/msg27799.html