56

很抱歉这个基本问题 - 我是一名 .NET 开发人员,对 LAMP 设置没有太多经验。

我有一个允许上传到特定文件夹的 PHP 站点。有人告诉我,此文件夹需要由网络服务器用户拥有才能使上传过程正常工作,因此我创建了该文件夹,然后将权限设置为:

chown apache:apache -R uploads/
chmod 755 -R uploads/

现在唯一的问题是FTP用户根本无法修改上传的文件。

是否有权限设置允许我仍然上传文件,然后以网络服务器用户以外的用户身份修改它们?

4

7 回答 7

46

您可以创建一个以 apache 用户和 FTP 用户为成员的新组,然后对上传文件夹 775 设置权限。这应该使 apache 和 FTP 用户都能够写入文件夹中的文件,但保留其他所有人从修改它们。

于 2008-08-14T13:32:55.473 回答
15

如果您真的想这样做,我会选择 Ryan 的回答。

一般来说,在 *nix 环境中,您总是希望尽可能少地放弃权限。

10 次中有 9 次,755 是理想的权限 - 因为唯一能够修改文件的用户将是网络服务器。如果您确实需要更改此设置,请与您的组中的 ftp 用户一起将其更改为 775。

由于您自己承认您是 php 新手,因此这里有一个有助于提高上传服务安全性的链接: move_uploaded_file

于 2008-08-14T13:45:04.903 回答
3

我会支持创建一个有权上传的 ftp 组的想法。但是,我认为没有必要给予 775 许可。7 代表读、写、执行。通常您希望允许某些组进行读写,但根据具体情况,可能不需要执行。

于 2016-02-12T15:17:52.710 回答
1

我将补充一点,如果您使用的是 SELinux,您需要确保类型上下文是 tmp_t 您可以使用 chcon 实用程序来完成此操作

chcon -t tmp_t 上传

于 2008-08-14T13:43:36.653 回答
1

重要的是apache用户和组应该有最小read的访问权限,在某些情况下应该有访问execute权限。对于其余部分,您可以授予0访问权限。

这是最安全的设置。

于 2012-02-27T06:11:53.790 回答
0

还记得CHOWNchgrp您的网站文件夹。尝试 myusername# chown -R myusername:_www uploads

于 2014-07-11T02:51:20.793 回答
-1

根据来自 的回答@Ryan Ahearn,以下是我在Ubuntu16.04 创建一个front仅对 nginx 的 web dir 具有权限的用户的操作/var/www/html

脚步:

* 前置步骤:
    *服务器的基本准备,
    * 创建用户'dev'
        这将是“/var/www/html”的所有者,
    *
    * 安装 nginx,
    *
*
* 创建用户'front'
    sudo useradd -d /home/front -s /bin/bash front
    须藤密码前面

    # 创建主文件夹,如果不存在,
    sudo mkdir /home/front
    # 设置新主文件夹的所有者,
    sudo chown -R front:front /home/front

    # 切换到用户,
    苏前

    # 复制 .​​bashrc,如果不存在,
    cp /etc/skel/.bashrc ~front/
    cp /etc/skel/.profile ~front/

    # 启用颜色,
    vi ~front/.bashrc
    # 取消注释以“force_color_prompt”开头的行,

    # 退出用户
    出口
*
* 添加到组“开发”,
    sudo usermod -a -G dev 前端
*更改网络目录的所有者,
    sudo chown -R dev:dev /var/www
* 更改网络目录的权限,
    chmod 775 $(查找 /var/www/html -type d)
    chmod 664 $(查找 /var/www/html -type f)
*
* 重新登录为 'front'
    使组生效,
*
* 测试
*
* 行
*

于 2017-06-07T03:26:42.747 回答