Я пытаюсь настроить 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

1 ответ1

3

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

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

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

chmod ug+s /srv/www

который устанавливает бит set-user-ID и set-group-ID . Информационное руководство по coreutils объясняет этот механизм:

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

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

Обратите внимание на ограничение "в некоторых системах" для бита set-user-ID . Действительно, ни в моем Debian, ни в моей системе openSuSE наследование владельца не работает, распространяется только группа. Согласно Википедии, это верно для всех систем Linux:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .