Хорошо, есть ли способ для пользователя PHP (www-data) получить доступ к другим частям сервера, например, / home / username / another_folder / ?? Заранее спасибо.
Будет
EDIT: Я просто добавляю www-данные в другую группу? Или что-то в этом роде, или есть другой путь?
Вы можете создать другую группу и добавить в эту группу www-data
(если ваш веб-сервер работает под пользователем www-data
), а затем назначить эту группу всем тем файлам, которые вы хотите получить.
Или, если вам просто нужно разрешение на чтение, и это не проблема, которую другие пользователи в системе имеют доступ к чтению ваших файлов, а затем просто изменяйте разрешения своих файлов (в других местах), чтобы иметь разрешение на чтение для other
. Например, 775
для ваших каталогов и 644
для ваших файлов.
Помните, что вы не можете показывать страницы в местах, отличных от вашего корня документа (например, / var / www), даже если у вашего пользователя веб-сервера есть разрешения на доступ к этим файлам.
Однако, если вы настраиваете «псевдонимы» или «виртуальные хосты» для своего веб-сервера, вы можете сделать другие места, которые были бы root-корнем по умолчанию, доступными по 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!; ?>
Вы можете изменить принадлежность группы ( chgrp
) вашей папки к www-данным (если www-data – это ее собственная группа).
Вы можете изменить права собственности на эту папку ( chown
) и chmod
чтобы несколько пользователей могли получить к ней доступ. (Как сказал farzad)
Вы можете создать группу («me_and_web»), членами которой являются «имя пользователя» и «www-data», а chgrp -R me_and_web /home/username/another_folder