Информация о сервере:
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 потрясающие! Я настоятельно рекомендую больше узнать об этом предмете: