【发布时间】:2010-02-07 04:24:53
【问题描述】:
好的,有没有办法让 PHP 用户(www-data)访问服务器的其他部分,例如 /home/username/another_folder/?提前致谢。
会
编辑:我只是将 www-data 添加到另一个组吗?或者类似的东西,还是有其他方法?
【问题讨论】:
标签: php linux accessibility
好的,有没有办法让 PHP 用户(www-data)访问服务器的其他部分,例如 /home/username/another_folder/?提前致谢。
会
编辑:我只是将 www-data 添加到另一个组吗?或者类似的东西,还是有其他方法?
【问题讨论】:
标签: php linux accessibility
您可以创建另一个组并将www-data(如果您的网络服务器在www-data 用户下运行)添加到该组,然后将该组分配给您希望访问的所有文件。
或者如果您只需要读取权限,并且系统上的其他用户对您的文件具有读取权限不是问题,那么只需将您的文件的权限(在其他地方)更改为具有@的读取权限987654323@。例如,775 用于您的目录,644 用于您的文件。
请记住,您不能在文档根目录以外的地方提供页面(例如 /var/www),即使您的网络服务器用户有权访问这些文件。
但是,如果您为 Web 服务器配置“别名”或“虚拟主机”,则可以将默认文档根目录以外的位置设置为可由 HTTP 请求访问。
但是,如果 Web 服务器用户有足够的权限,则在您的文档根目录下并由 Web 服务器执行的 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-data(如果 www-data 是它自己的组。)
您可以更改该文件夹 (chown) 和 chmod 的用户所有权,以便多个用户可以访问它。 (就像法扎德说的)
您可以创建一个组(“me_and_web”),其成员只有“用户名”和“www-data”,以及chgrp -R me_and_web /home/username/another_folder
【讨论】: