Www-пользователь данных для доступа к файлам/папкам за пределами /var/www/


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

Будет

ИЗМЕНИТЬ: Могу ли я просто добавить www-данные в другую группу?? Или что-то в этом роде, или есть другой способ?

Author: willbeeler, 2010-02-07

2 answers

Вы можете создать другую группу и добавить 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!;
?>
 3
Author: farzad, 2017-04-04 02:41:11

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

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

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

 2
Author: poundifdef, 2010-02-07 04:33:27