Как сделать php веб-страницу для доступа к файлу в / root каталоге?

Я использую Linux 12.04, на нем установлены apache и php. Я хочу получить доступ к текстовому файлу в / root / folder. Я действительно запутался с разрешениями. Скрипт php im использует

<?php
$file = fopen("/root/cr.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached

while(!feof($file))
  {
  echo fgets($file). "<br>";
  }

fclose($file);
?> 
[ 112] Этот скрипт может получить доступ к файлу / var / www, но не может получить доступ к файлу /root/ip.txt. Пожалуйста, помогите и объясните возможный шаг за шагом.

2
задан 26 November 2013 в 01:31

2 ответа

Доступен ли файл для чтения другим пользователям, кроме root? Попробуйте добавить доступ для чтения для ВСЕХ.

sudo chmod a+r /root/cr.txt
0
ответ дан 26 November 2013 в 01:31

Я забуду о последствиях этого для безопасности и перейду к делу:

Если вы сделали ls -l /var/www и ls -l /root, вы бы заметили, что оба имеют разные разрешения:

$ ls -l /root/cr.txt
total 2
-rw-r-----  1 root root    0 Jul  9 01:28 cr.txt
$ ls -l /var/www
total 2
-rw-r--r--  1 www-data www-data    0 Jul  9 01:28 somefile

/root доступен для чтения только для root, а /var/www - для пользователя www-data. Теперь, если вы проверите процесс apache, вы заметите, что он запущен с использованием пользователя www-data.

$ ps aux | grep apache www-data 5133 0,0 0,2 6512 1208? R + 10:04 0:00 apache

Теперь вы пытаетесь заставить apache, работающий с пользователем www-data, прочитать файл. Вы можете предпринять три действия:

  1. Переместите файл в /var/www и измените его разрешения, чтобы www-data пользователи могли его читать.

    mv /root/cr.txt /var/www/
    chown www-data:www-data /var/www/cr.txt
    

    Это предпочтительный метод.

  2. Создайте символическую ссылку на файл в каталоге /var/www:

    ln -s /root/cr.txt /var/www/
    

    В некоторых случаях это не гарантирует, что ваш файл читается.

  3. Это опасно и не должно быть сделано! Добавьте пользователя www-data в группу root или измените владельца файла, чтобы его могли прочитать пользователи www-data:

    chown :www-data /root/cr.txt
    ## Or
    sudo adduser www-data root
    

    Этого не следует делать, если вы не понимаете рисков!

0
ответ дан 26 November 2013 в 01:31

Другие вопросы по тегам:

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