У меня есть выделенный сервер, на этом сервере у меня два хоста. и я дам доступ к серверу двум людям. В моем php файле есть пароль базы данных, и я не хочу делиться им с ними. Итак, как я могу защитить файл php от чтения? Если я делаю chmod 700, apache2 не может читать, а страница «Запрещена». Спасибо и спокойной ночи
Если у вас есть root-доступ, вы можете настроить разрешения для файла, чтобы apache (и, следовательно, php) мог читать его, используя дополнительную группу; и не дать двум «пользователям» его прочитать.
Не зная о своем варианте ОС; что-то вроде следующего процесса должно работать. Конечно, тестирование обязательно.
# create new group
groupadd credentials
# add apache to that group (supplementary group)
usermod -G credentials -a apache
# change file ownership
chgrp credentials /etc/credentialfile.conf
chown root /etc/credentialfile.conf
chmod 640 /etc/credentialfile.conf
Вам потребуется перезапустить Apache, чтобы получить новые дополнительные группы.
Чтобы использовать данные, они должны быть доступны для чтения uid веб-сервера - это означает, что любой, кто может развернуть код PHP на сервере, может читать файлы. Это верно для всех языков веб-программирования.
PHP необычен тем, что он предоставляет механизмы для разделения общего доступа на веб-сервере.
с помощью open_basedir - вам просто нужно настроить разные деревья каталогов в соответствии с доступом - и настроить отдельные учетные записи базы данных с соответствующими учетными данными, хранящимися в отдельных средах, - и настроить безопасность на уровне базы данных.
В качестве альтернативы вы можете использовать suPHP для ограничения доступа на основе виртуального пользователя - при запуске скрипта PHP он делает это с uid / gid скрипта PHP. Опять же, вам нужны отдельные учетные записи базы данных с разными привилегиями для управления доступом к данным.