Полномочия Unix, читайте по сравнению с, выполняются (контекст PHP)

У меня есть сценарий PHP, который должен соединиться с базой данных. Учетные данные для базы данных хранятся в другом сценарии PHP.

Если я установил полномочия для файла учетных данных к 661 так, чтобы Общественность имела, выполняют разрешение, но не читают разрешение, это позволяет основному сценарию получать доступ к учетным данным и подключению к DB при предотвращении кого-то с учетной записью пользователя на сервере от просмотра содержания файла учетных данных?

Я предполагаю, что смущен относительно различия между чтением и выполняюсь. Сценарий PHP (работающий как www или что-то подобное) нуждаются в разрешении чтения включать другой сценарий PHP и использовать какое-либо содержание внутри? Или это просто должны выполниться? Действительно читает разрешение неявно дают, выполняют разрешение?

Дополнительный вопрос: Если я установил все свои сценарии, чтобы только иметь, выполняют разрешение и не читают, там какие-либо ловушки, которые я должен ожидать? Это предполагает, что я оставлю любые файлы, которые мне нужно явное разрешение чтения (файлы данных) набор для чтения.

15
задан Anthony 6 January 2010 в 03:30
поделиться

2 ответа

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

Если вы пытаетесь сделать свои скрипты читаемыми веб-сервером (допустим, вы работаете под учетной записью "www", которая принадлежит к группе "www"), а не другими пользователями системы, вот что я сделаю (допустим, ваша учетная запись - "myuser"):

# Change owner to "myuser" and group to "www" for file(s) in question
chown myuser:www config.php

# 640: myuser has rw-, www has r--, world has ---
chmod 640 config.php

Если вы хотите помешать миру читать любой файл в каталоге "secrets", просто отключите бит execute:

# 750: myuser has rwx, www has r-x, world has ---
chmod 750 secrets

Если вы установите для всех своих сценариев разрешение на выполнение, но не разрешение на чтение, никто не сможет сделать с ними ничего полезного (включая веб-сервер) ;-)

.
10
ответ дан 1 December 2019 в 03:14
поделиться

Скрипты читаются, не исполняются. Разрешение на выполнение скриптов говорит загрузчику или ядру прочитать строку shebang и передать скрипт именованному интерпретатору.

.
13
ответ дан 1 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: