gpt4 book ai didi

apache - 如何为 apache2 设置权限以让用户在/var/www/中创建或编辑文件

转载 作者:行者123 更新时间:2023-12-04 18:35:09 25 4
gpt4 key购买 nike

我正在使用 DO 的 Ubuntu 14 服务器,安装了 LAMP 堆栈,我按照此处的说明在 ubuntu 上安装了 Flask,因为我的主要目的是在我的网站上使用 Flask。

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps

在测试期间,当用户连接到在当前文件夹/var/www/上创建一个新文件的“http:/myvpsip/createfile/”时,我从 Apache 收到错误消息,提示无法创建该文件,“权限被拒绝”。

我再次尝试使用在同一目录/var/www/上创建新文件的 PHP 脚本,但遇到了同样的问题。两个试验都是使用 root 帐户完成的。我试图将 www 文件夹 chmod 为 755 或 777,但它们不工作。

我的问题是,如何为 apache2 设置权限,当用户浏览网站时,他们将能够在当前目录中创建/编辑文件?

谢谢

最佳答案

这是因为当您安装应用程序时,您是以 root 用户身份安装的。您的所有应用程序文件和目录都归 root 所有。

如果您在/var/www 上 ls -l 并查看 FlaskApp 文件夹结构,您可能会看到权限设置如下:

-rw-r--r--  1 root     root

当 Apache 运行时,它代表用户 root 拥有的一个主进程和用户 www-data 拥有的几个子进程运行。所以本质上,Apache 就像以用户 www-data 登录一样运行。

当您的应用程序需要执行文件或文件夹操作(它代表 Apache www-data 用户运行)时,将使用 public/world 权限位,因为 Apache 子进程不是作为 root 用户运行,也不是作为 root 组运行。

从上面看,我们看到只有读取位设置为公共(public)/世界权限 - 没有写入。这就是问题所在。

解决此问题的一种方法是使/var/www/mywebsite 下的所有内容都归用户 root 和组 www-data 所有。这将设置为只有 root 用户才能拥有完全权限,而 www-data(其他所有人)只能读取和执行(不能写入)。

当你设置你的网站时,你应该把它设置在它自己的单独文件夹下。这样,您以后可以添加多个虚拟域(即更多网站)。假设 'mywebsite' 是您的域所在的位置,并且您已经在其中安装了应用程序软件(Flask):
cd /var/www/mywebsite
chown -R root:www-data /var/www

然后,您作为系统管理员,需要了解应用程序并通过文件夹和文件设置权限。一般应用权限,然后根据具体情况。

对于大多数目录 (750)
- Only root can rwx directory
- www-data can only read and execute directory
- no public/world bits set as it makes no sense (*)

对于可由 Web 应用程序更改的目录 (770)
- Root can rwx directory
- www-data can rwx directory
- no public/world bits set as it makes no sense (*)
- for uploading files, creating images, documents, etc by the users of the site

对于大多数文件 (640)
- Never set the execute bit to avoid execution of misplaced shell or executable files
- PHP, Perl, etc. are just text files. They have nothing to do with exec permission
- No group write bit set
- Read must be set for owner and group else they cant see the web document

对于需要更改文件的特殊情况 (660)
- Set group write bit if you want www-data users to create things

(*) 因为所有访问 Apache 的用户都是代表 www-data 运行的

关于apache - 如何为 apache2 设置权限以让用户在/var/www/中创建或编辑文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com