Пользователь Www-data для доступа к файлам / папкам вне / var / www / - PullRequest
3 голосов
/ 07 февраля 2010

Хорошо, есть ли способ для пользователя PHP (www-data) получить доступ к другим частям сервера, например, / home / username / another_folder / ?? Заранее спасибо.

Будет

РЕДАКТИРОВАТЬ: я просто добавить www-данные в другую группу ?? Или что-то в этом роде, или есть другой способ?

Ответы [ 2 ]

3 голосов
/ 07 февраля 2010

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

Или, если вам просто нужно разрешение на чтение, и другие пользователи системы не имеют права на чтение ваших файлов, просто измените разрешения ваших файлов (в других местах), чтобы иметь разрешение на чтение для other. Например, 775 для ваших каталогов и 644 для ваших файлов.

Помните, что вы не можете обслуживать страницы в местах, отличных от корня документа (например, / var / www), даже если у пользователя вашего веб-сервера есть права доступа к этим файлам.

Однако, если вы настроите «псевдонимы» или «виртуальные хосты» для своего веб-сервера, вы можете сделать места, отличные от корневого документа по умолчанию, доступными для HTTP-запросов.

Но файлы PHP, которые находятся в корневом каталоге вашего документа и выполняются веб-сервером, МОГУТ прочитать содержимое файлов вне корневого каталога документа, ЕСЛИ у пользователя веб-сервера достаточно прав.

// file permissoins
/tmp/shared_by_all.txt -> 644
/home/user1 -> 751 or 755
/home/user1/shared_by_all.txt -> 644
/home/secureuser -> 750
/home/secureuser/myfile.txt -> 640 (or even 644 because of the containing directory permissions, other can not even enter the directory tree. so file is not accessible)


// file: /var/www/read_file.php
<?php
    echo file_get_contents('/tmp/shared_by_all.txt'); // ok!
    echo file_get_contents('/home/user1/shared_by_all.txt'); // ok!;
    echo file_get_contents('/home/secureuser/myfile.txt'); // fail!;
?>
2 голосов
/ 07 февраля 2010

Вы можете изменить владение группой (chgrp) вашей папки на www-data (если www-data является собственной группой.)

Вы можете изменить владельца этой папки (chown) и chmod, чтобы несколько пользователей могли получить к ней доступ. (Как сказал Фарзад)

Вы можете создать группу ("me_and_web"), единственными членами которой являются "username" и "www-data", и chgrp -R me_and_web /home/username/another_folder

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...