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

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?

答案1

您可以使用 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 -m u::rwx,g::rwx,o::r-x /var/www/public

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

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

答案2

我相信你已经解决了这个问题,所以这对任何有类似要求的人来说都适用

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

sudo chown manny -R www

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

答案3

如果您的网络服务器甚至无法读取文件,则很可能权限为new-file.php600(所有者可读写)。搜索umask在您的 FTP 应用程序中设置,并确保它类似于 007。

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

相关内容