AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 115167
Accepted
Xeoncross
Xeoncross
Asked: 2010-02-22 11:19:59 +0800 CST2010-02-22 11:19:59 +0800 CST 2010-02-22 11:19:59 +0800 CST

如何在 linux 上为 apache/PHP、git 和我自己启用完整的 www 访问权限?

  • 772

/var/www 文件夹归root root(用户、组)所有。这意味着www-data(apache/php 组)没有访问权限。这导致了写入错误,因为不允许 PHP 创建文件。

我通过 CHMOD 0777 解决了整个 /var/www 文件夹,因为它只是一个私人开发机器。但是,这仍然会导致问题,因为 CHMOD 仅适用于运行时存在的文件 - 而不是之后创建的文件。因此,如果我要创建一个新文件,那么 PHP 将无法 rwx 它。

现在我正在使用 git 来引入更多文件,我很难让 apache/php、git 和我自己的用户都能够很好地处理彼此的文件。

如何为我们三个人启用完全访问权限?

apache-2.2 git
  • 3 3 个回答
  • 904 Views

3 个回答

  • Voted
  1. Carl Cravens
    2010-02-22T15:17:12+08:002010-02-22T15:17:12+08:00

    chmod 777 是一个坏习惯,即使它是一台私人机器……学习如何在安全的环境中正确地做事意味着当你需要在不安全的环境中做事时你知道如何去做。而且您不会想发布带有“chmod -R 777 /var/www/myapp”的安装说明的生产应用程序。

    伯顿的回答就是我所做的。我的开发者帐户在组 www-data 中,www-data 是所有文件上设置的组。

    查看“man 2 chmod”并阅读 group-sticky-bit 的作用。当您的主要组不是您想要分配给您在那里创建的新文件的组时,它会非常方便。它将允许您创建的文件自动设置到您设置它的目录中的 www-data 组。

    如果您的网络服务器没有创建具有足够广泛权限的新文件(当您需要 0775 时它正在创建 0755),请查看其 umask 设置。

    对于 Perl CGI,我通常使用 suexec,以便 CGI 作为特定用户而不是 www-data 运行。正如 jdoss 指出的那样,您需要一个特定于 PHP 的模块。还有一个 Apache2 mpm (prefork),它允许每个虚拟主机作为特定用户运行,即使是常规读取也是如此。我还没有尝试过这个,但如果它运作良好,它将有助于解决这种安全问题。

    • 4
  2. Best Answer
    Burton
    2010-02-22T11:49:54+08:002010-02-22T11:49:54+08:00

    创建一个 www 或类似的命名组,并将您要写入 /var/www 的所有用户添加到该组。然后 chown -R www-data:www 完整的 /var/www 目录。这应该允许您访问所需的权限。

    除此之外,只需清理 0777 权限并将其重置为正常。

    我希望能解决:-)

    • 1
  3. jdoss
    2010-02-22T12:04:02+08:002010-02-22T12:04:02+08:00

    您可以做的是设置一个 Apache vhost 并将其 docroot 到我用户的主目录 (/home/username/public_html) 内的一个目录中。这允许您的用户和 Git 操作文件,而不必过多担心权限/所有权。从那里您可以懒惰并更改 Apache/PHP 用户以作为您的用户运行(我认为这会起作用),或者您可以考虑设置 SuPHP(http://www.suphp.org/Home.html)将以其所有者的权限运行您的 PHP 脚本。

    • 0

相关问题

  • 在您分发的应用程序中使用 Apache HTTPD 运行 SSL 的最佳方式是什么?

  • 阿帕奇的替代品

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve