Решение, которое я обычно использую на веб-серверах, - используя ACL.По сути, это означает использование дополнительных наборов разрешений, отличных от обычной системы «пользователь-группа-прочее». Я считаю это особенно полезным, когда настраиваю ограниченный доступ PHP (например, с помощью suPHP).
Чтобы сохранить право собственности на мои файлы, я удостоверяюсь, что они принадлежат мне:
$ chown me:me /var/www -R
Затем я даю www-data
доступ на чтение везде (и разрешение на доступ к каталогам; иногда могут потребоваться более тонкие настройки ).
$ setfacl -Rdm 'u:www-data:r-X' /var/www
$ setfacl -Rm 'u:www-data:r-X' /var/www
Я также даю доступ для записи к Apache везде, где я хочу, чтобы он писал материал. Например:
$ setfacl -Rdm 'u:www-data:rwX' /var/www/uploads
$ setfacl -Rm 'u:www-data:rwX' /var/www/uploads
Обратите внимание, что для использования ACL необходимо убедиться, что вы смонтировали файловую систему с параметром acl
. Это делается в / etc / fstab
:
#
/dev/sdxy /var ext4 defaults,acl 0 2
(при условии, что / var
находится в другом разделе, в противном случае см. /
)
Кстати в некоторых системах параметр acl
установлен по умолчанию. Например :
Начиная с Ubuntu 14.04 и для ext4, вышеуказанное не требуется, поскольку acl уже установлены по умолчанию.
Вы можете проверить, включены ли ACL в файловой системе, используя tune2fs
(при условии, что ext * FS):
# tune2fs -l /dev/sdxy | grep acl
Default mount options: acl ...
Для получения дополнительной информации о setfacl
, посмотрите здесь .