php用户www-data的默认文件权限

我在我的ubuntu机器上安装了一个php。 Web根目录是/var/www

我为此文件夹设置了权限,如下所示:

sudo chown -R ftpuser:www-data / var / www

ftpuser是我设置的用户,所以我可以从网络上的另一台机器ftp到/ var / www。 www-data是php使用的用户。 我使用php中的whoami双重检查。

每当我ftp将新文件上传到机器时,该组对该文件没有任何权限。 因此,当我尝试通过machine-name/new-file.php在我的浏览器中访问它时,我被告知权限被拒绝,我必须去chmod新文件。

我想知道是否有一种方法可以默认www-data用户/组具有对新文件的访问权限,所以我不必保持chmod每个新文件?

你可以使用ACL。 要为Ubuntu 10.10设置ACL,首先使用/ etc / fstab中的acl选项挂载文件系统。

 sudo vim /etc/fstab 

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4默认值,acl 0 1

 sudo mount -o remount,acl / 

然后创建一个用户可能为此目的所属的组。

 sudo groupadd developers sudo usermod -a -G developers $username 

用户需要注销并再次成为开发人员组的成员。

当然,如果您在/ var / www目录中有所需内容,请不要这样做,只是为了说明将其设置为开始:

 sudo rm -rf /var/www sudo mkdir -p /var/www/public sudo chown -R root.developers /var/www/public sudo chmod 0775 /var/www/public sudo chmod g+s /var/www/public sudo setfacl -d -mu::rwx,g::rwx,o::rx /var/www/public 

然后在配置文件中用“/ var / www / public”替换对“/ var / www”的引用并重新加载。

 sudo vim /etc/apache2/sites-enabled/000-default sudo /etc/init.d/apache2 reload 

如果我们想限制除了创建文件的用户以外的所有用户的删除和重命名:

 sudo chmod +t /var/www/public 

这样,如果我们想要为Apache文档根目录之外的框架创建目录,或者创建服务器可写目录,那么它仍然很容易。

Apache可写日志目录:

 sudo mkdir /var/www/logs sudo chgrp www-data /var/www/logs sudo chmod 0770 /var/www/logs 

Apache可读的库目录:

 sudo mkdir /var/www/lib sudo chgrp www-data /var/www/lib sudo chmod 0750 /var/www/lib 

我相信你已经对它进行了整理,所以这适用于任何有类似要求的人

在您的webroot文件夹上运行“更改所有权”命令:

 sudo chown manny -R www 

这将使您的所有者用您的用户名替换“manny”,使您能够在www文件夹中写入/读取

如果你的网络服务器甚至无法读取文件,那么new-file.php的权限很可能就像是600(对所有者来说读写)。 在FTP应用程序中搜索umask设置,并确保它类似于007。

如果您的Web应用程序需要chmod文件(或只能由文件所有者完成的其他操作),则需要另一种方法。 如果您使用的是Apache,则应考虑使用itk MPM 。 使用该模块,您可以使用与“ftpuser”相同的用户使Apache运行/打开文件。 如果您需要有关此主题的更多信息,请添加评论。