我的 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 文件夹中进行写入/读取