Мне нужно сделать операцию немного странно.
Во-первых, я запускаю на Debian apache2 (который работает как пользовательские данные www)
Итак, у меня есть простой текстовый файл с расширением .txt ot .ini или любым другим, не имеет значения.
Эти файлы расположены в подпапках со структурой, подобной этой:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar .текст
поэтому имя файла всегда одинаковое, то же самое для «иерархии», просто измените имя папки: /folder-name-static/folder-name-dinamyc/file-name-static.txt
То, что я должен сделать, - это (я думаю) относительно просто: я должен иметь возможность читать этот файл программами на сервере (например, python, php), но если я пытаюсь извлечь содержимое файла с помощью broswer (с помощью ввода URL www. example.com/folder1/car/foobar.txt или через cUrl и т. д.) Я должен получить запрещенную ошибку или что-то еще, но не получить доступ к файлу .
Также было бы неплохо, чтобы даже доступ к этим файлам по FTP был «скрытым», или, во всяком случае, его нельзя было загрузить (по крайней мере, я использую его с корнем ftp и данными пользователя)
Как я могу сделать?
Я нашел это в Интернете, поместите в файл .htaccess:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Кажется, что это работает, но только если файл находится в корне сети (www.example.com / myfile.txt), а не в подпапках. Кроме того, папки второго уровня (www.example.com/folder1/ fruit /foobar.txt) будут создаваться динамически. Я бы хотел избежать необходимости время от времени изменять файл .htaccess.
Можно создать правило, подобное этому, для всех файлов с данным именем, которое находится на * www.example.com / folder-name-static / * folder-name-dinamyc / *** file-name -static.txt *, где эти части всегда одинаковы , только ** это одно изменение ?
РЕДАКТИРОВАТЬ :
Как сказал Дэйв Драгер, я мог бы проиллюстрировать это, оставив эти файлы вне каталога, доступного через Интернет. Но эти каталоги также будут содержать другие файлы, изображения и другие материалы, используемые моими пользователями, поэтому я просто стараюсь не иметь систему дубликатов папок, например:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]
//and, then for the 'secrets' files:
/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt
источник
Да, это все возможно. Однако если на сервере есть программы, которым требуется доступ к текстовым файлам, они должны находиться вне корневого веб-каталога. Например, если ваши веб-файлы находятся в ~ / public_html /, вы должны хранить их в ~ / data. Нет причин размещать их в общедоступной папке html.
В дополнение к удалению их из веб-папки убедитесь, что для них правильно установлены разрешения unix. Пользователь сценариев должен иметь доступ для чтения (записи?), Но кому-либо еще не требуется этот доступ.
Если вам НУЖНО хранить эти файлы в папке, доступной через Интернет, есть способы сделать то, что вы просите, через mod_rewrite. Смотрите следующий сайт для многих примеров, один из которых должен отвечать всем требованиям.
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
источник
Почему бы не использовать стандартные разрешения для файлов Unix, чтобы запретить доступ к файлу?
В википедии есть достойное объяснение прав доступа к файлам Unix.
источник
Поместите файл .htaccess в подкаталог и в утверждении установите AllowOverride All
источник
Вы можете использовать Linux ACL .
источник
Почитав вас всех, я заметил, что файл .htaccess может быть для меня подходящим: затрагивать только файлы в той папке, где он находится.
Но мои папки генерируются динамически. Я не думаю, что копировать файл .htaccess или пересоздавать его каждый раз, когда я создаю новую папку, - это надежный способ.
Как сказал Дейв, логичным способом должно быть сохранение текстовых файлов конфигурации вне папки, доступной через Интернет.
Но в каждой папке мне нужно хранить другие файлы, изображения для примеров, которые должны быть доступны через Интернет ... и я до сих пор не думаю, что копирование структуры папок, как в директории web-root, так и вне ее, является надежным способом. , Поэтому мне нужно изменить даже конфигурацию apache, чтобы включить папку config в разрешенный путь php. В любом случае, это не должно быть проблемой.
Так что, если у меня нет лучшего , я должен выбрать менее худший .
Сейчас я буду использовать решение для нескольких файлов .htaccess, надеясь, что в будущем у меня не будет сожалений.
Любое другое решение приветствуется.
источник
Из раздела « Заказная документация»:
Поэтому следующее неверно:
Следующее (более) правильно
источник