Назад | Перейти на главную страницу

Проблемы с наследованием ACL в NFS v4 - флаг «i» установлен, но не требуется

Я пытаюсь добавить 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