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

CentOS 7, SELinux, PHP, Apache: как установить разрешения по умолчанию для новых или обновленных файлов в каталоге?

Информация о сервере:

CentOS Linux release 7.0.1406 (Core)  
PHP 5.4.16 (cli) (built: Sep 30 2014 09:44:39)  
SELinux enforcing  
Apache/2.4.6 (CentOS)

Мой PHP-скрипт должен читать текстовые файлы из домашнего каталога. Эти файлы обновляются каждые 30 минут. (от доверенного пользователя).

Обычно права доступа для этих файлов установлены на -rw----r--. владелец и группа принадлежат пользователю, который загружает файлы.

Теперь есть случай, когда разрешения на чтение для других отсутствуют. (я не знаю почему ..) и скрипт PHP не может прочитать содержимое:

file_get_contents(/home/someuser/some_dir/subdir1/subdir2/file.txt): failed to open stream: Permission denied (2)

Поскольку права на чтение группы также отсутствуют, я не могу просто добавить apache-пользователь someuser-группа.

Мне просто нужно убедиться, что разрешения на чтение для процесса apache предоставляются в любое время.

Что было бы самым лучшим и безопасным способом сделать это?
Возможно установка umask 173 в каталог или файлы?

Вы можете использовать ACL (списки управления доступом) для установки дополнительных разрешений группы, которые можно установить с помощью setfacl команда. Например:

setfacl -dm g:apache:r /home/someuser/some_dir/subdir1/subdir2

Когда вы делаете ls в этом каталоге будет отображаться + подпишите рядом с разрешениями, чтобы указать, что ACL установлен:

$ ls -ld /home/someuser/some_dir/subdir1/subdir2
drwxrwxr-x+ 2 someuser somegroup 26 Oct 10 10:17 /home/someuser/some_dir/subdir1/subdir2

Вы можете просмотреть ACL с помощью getfacl команда.

$ getfacl home/someuser/some_dir/subdir1/subdir2
# file: home/someuser/some_dir/subdir1/subdir2
# owner: someuser
# group: somegroup
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:apache:r-x
default:mask::rwx
default:other::r-x

И затем, когда там будут созданы файлы и каталоги, они унаследуют эти разрешения:

$ cd /home/someuser/some_dir/subdir1/subdir2
$ touch moo
$ getfacl moo
# file: moo
# owner: someuser
# group: somegroup
user::rw-
group::rwx          #effective:rw-
group:apache:r-x        #effective:r--
mask::rw-
other::r--

ACL потрясающие! Я настоятельно рекомендую больше узнать об этом предмете: