Как работают разрешения для файлов в OpenShift?

Я думаю, что неправильно понимаю что-то фундаментальное в правах доступа к файлам в PHP-приложении OpenShift. Как они на самом деле работают?

Я разрабатываю на OSX и проталкиваю изменения, используя SourceTree. Когда я вхожу в приложение через SFTP-программу (Cyberduck), файл index.php показывает свои права доступа, установленные на 600, но посетители могут просматривать его в браузере.

Это удивляет меня, так как я думал, что для просмотра файлов потребуется разрешение 644 (например, веб-сервер Apache).

В OpenShift кажется, что разрешения для файлов 600, 640 и 644 эквивалентны. Это правильно, или я делаю что-то не так?

Связанные с:
В моем приложении OpenShift есть папка cgi-bin, содержащая программу cgi, которую следует запускать (вызывать) только из файла PHP. Другими словами, любой PHP-скрипт должен вызывать эту программу cgi, но посетитель, пытающийся напрямую перейти в папку cgi-bin, не должен этого делать.

Я установил права доступа как для папки cgi-bin, так и для файла программы cgi на 700 (поэтому только «владелец» имеет права на чтение / запись / выполнение, и никакие разрешения для «группы» и «других» не предоставляются). Однако посетители могут по-прежнему напрямую обращаться к URL-адресу программы и выполнять его (например, www.example.com/cgi-bin/program.cgi) — как если бы разрешения были 777. Как мне решить эту проблему?

2

Решение

Я думаю, что вы привыкли к системе, где один пользователь владеет обслуживаемыми файлами, а веб-сервер работает как другой пользователь, но поскольку владелец файлов (ваша учетная запись пользователя, которая является таким длинным хэшем) также является владельцем процесса, который запускает веб-сервер на OpenShift, затем использует часть разрешений «6», поэтому имеет смысл, что две другие цифры, которые вы добавляете, не имеют значения. Если есть скрипт, который вы не хотите, чтобы веб был доступен, но который вы хотите, чтобы PHP мог выполнять, то вы должны поместить его вне вашей веб-директории, содержащей ваши php-файлы. Самый простой способ сделать это — создать папку «php» в репозитории и поместить в нее свои файлы, которые должны быть доступны через Интернет. Это изменит ваш documentRoot на этот каталог php, и вы можете поместить ваш скрипт на один уровень выше, чтобы пользователи не могли выполнить его с помощью веб-запроса.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]