Почему эти ACL не работают?

0

Я пытаюсь настроить ACL так, чтобы пользователь и группа новых файлов и каталогов, созданных в каталоге веб-сервера, принадлежали пользователю www-data. У меня точно такой же ACL на другом сервере, и они работают нормально.

andrew@sona:/srv/www$ getfacl .
# file: .
# owner: www-data
# group: www-data
user::rwx
group::rwx
group:www-data:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::r-x

andrew@sona:/srv/www$ mount | grep acl
/dev/xvda on / type ext3 (rw,noatime,errors=remount-ro,acl)
andrew@sona:/srv/www$ touch test.txt
andrew@sona:/srv/www$ ll
total 12
drwxrwxr-x+ 3 www-data www-data 4096 Sep  3 17:14 ./
drwxr-xr-x+ 3 root     root     4096 Sep  1 19:36 ../
-rw-rw-r--+ 1 andrew   andrew      0 Sep  3 17:14 test.txt

Сервер Ubuntu 12.04 LTS

Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:    12.04
Codename:   precise
Prydie
источник
1
serverfault.com/questions/460262/... Это может помочь?
Darius
ACL выше (насколько я знаю) не должны требовать от вас установки gid, но должны иметь тот же эффект ...
Prydie

Ответы:

3

Списки контроля доступа (ACL) обеспечивают мелкозернистый механизм для управления доступ в файл / каталог. Они не меняют и не определяют владельца.

default значение определяет, какой ACL должен «наследовать» новый созданный файл внутри этого каталога. Это, кажется, работает для /srv/www, потому что ваш новый созданный файл test.txt получает некоторые ACL (обратите внимание на + в списке каталогов).

Основы для достижения вашей цели приведены в ответе SF, связанном с @Darius:

chmod ug+s /srv/www

который устанавливает установленный идентификатор пользователя а также установленный идентификатор группы немного. Информационное руководство по coreutils объясняет этот механизм:

27.5 Каталоги и биты Set-User-ID и Set-Group-ID

В большинстве систем, если установлен бит set-group-ID каталога, заново   созданные субфайлы наследуют ту же группу, что и каталог, и заново   созданные подкаталоги наследуют бит set-group-ID родительского элемента   каталог. В некоторых системах бит set-user-ID каталога имеет   аналогичное влияние на владение новыми подфайлами и set-user-ID   биты новых подкаталогов. (...)

Обратите внимание на ограничение «на нескольких системах» для установленный идентификатор пользователя немного. Действительно, ни в моем Debian, ни в моей системе openSuSE наследование владельца не работает, распространяется только группа. В соответствии с Википедия это верно для все Linux-системы:

Набор разрешений setuid для каталога игнорируется в UNIX и Linux   системы. [4] FreeBSD может быть настроен так, чтобы интерпретировать его аналогично   setgid, а именно, чтобы заставить все файлы и подкаталоги принадлежать   владелец верхнего каталога. [5]

mpy
источник
Итак, когда у вас есть default:group:www-data:rwx это разрешения по умолчанию, которые должны быть определены для файла, созданного членами этой группы?
Prydie
Нет, это означает, что если файл / dir создан, он будет иметь запись ACL group:www-data:rwx - независимый кто создал файл. Проверить с getfacl test.txt например, вы увидите, что все default записи каталога отображаются.
mpy
Значит ли это, что группа файла должна быть www-data? Я запутался в том, какая функция позволяет вам указать группу в правиле по умолчанию, если это не так.
Prydie
@Prydie Записи ACL по умолчанию работают как обычные записи ACL. group:www-data: Часть определяет, кто должен получить следующие разрешения.
Blacklight Shining
@Prydie: Эта статья действительно хорошее введение в ACL, оно, безусловно, объясняет концепции лучше, чем я (я думаю, что этот документ был также мой начать в мир Linux ACL ...)
mpy