2013-08-06 4 views
1

Я использую Linux 12.04, Apache и PHP установлены на it.I хотят получить доступ к текстовому файлу в/корне/folder.I Я действительно путает с PHP скрипт им permissions.The с помощьюКак сделать apache2 пользователем доступ к файлу в каталоге/root?

<?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); 
?> 

Этих скрипт может получить доступ к папке file/var/www, но не может получить доступ к файлу /root/ip.txt. Пожалуйста, помогите и объясните шаг за шагом.

+0

Права доступа к файлу. '/ root /' доступен только пользователю root сервера. – ciruvan

+0

Попробуйте изменить группу файла file.txt как apache «chown root: apache file.txt», а затем предоставить разрешение на чтение для группировки. "chmod g + rw file.txt". Теперь попробуйте снова с вашего конца. Сообщите мне, помогло ли это вам. –

ответ

1

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

Если вы сделали Ls -l/вар/WWW и LS -l/корень вы бы заметили, что оба имеют различные разрешения:

$ Ls -l /root/cr.txt всего 2 - rw-r ----- 1 корень root 0 июл 9 01:28 cr.txt $ ls -l/var/www total 2 -rw-r-r-- 1 www-data www-data 0 июл 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-данных могли его прочитать.

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

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

Create a symlink to the file in the /var/www directory: 

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

3.Это не гарантирует, что ваш файл будет прочитан, в некоторых случаях.

Это опасно и не должно быть сделано! Добавьте пользователя WWW-данные в корневой группе или изменить владельца файла, так что может быть прочитан пользователями WWW-данных:

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

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

0

Во-первых, это, как правило, плохая идея предоставить apache доступ к root. Если вы настаиваете ...

Установить ACL (Список контроля доступа) Installing ACL

Тогда, предполагая, что ваш сервер Apache работает с «apache2» для его пользователя и группы, дают пользователю apache2 и групповой доступ к каталогам/файлам :

setfacl -m "group:apache2:r-x" /root/whatever.file 
setfacl -m "user:apache2:r-x" /root/whatever.file 

# *** only need the next two lines if you plan on writing new files in the specified directory. It sets the default file permissions that will be used when the new file is created. 
setfacl -d -m "group:apache2:r-x" /root 
setfacl -d -m "user:apache2:r-x" /root 

Изменение ПРМ разрешения на то, что вам нужно

Edit - возможное решение без ACL

Следующее не проверено и может потребовать настройки, но должно заставить вас двигаться в правильном направлении. ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК!

Создайте новую группу. Имя может быть любым, но для этого примера я буду называть его «wwwadmins» с помощью groupadd

groupadd wwwadmins 

Добавить корень и пользователь apache2 этой новой группы с помощью usermod

usermod -a -G wwwadmins root 
usermod -a -G wwwadmins apache2 

сменить владелец группы на файл в новую группу с помощью chown

chown :wwwadmins /root/whatever.file 
+0

нет другого пути без установки ACL? – acekapila

+0

Может быть, но я всегда использовал ACL. Я отредактировал свой ответ, чтобы включить потенциальное решение. – Drew