很抱歉这个基本问题 - 我是一名 .NET 开发人员,对 LAMP 设置没有太多经验。
我有一个允许上传到特定文件夹的 PHP 站点。有人告诉我,此文件夹需要由网络服务器用户拥有才能使上传过程正常工作,因此我创建了该文件夹,然后将权限设置为:
chown apache:apache -R uploads/
chmod 755 -R uploads/
现在唯一的问题是FTP用户根本无法修改上传的文件。
是否有权限设置允许我仍然上传文件,然后以网络服务器用户以外的用户身份修改它们?
您可以创建一个以 apache 用户和 FTP 用户为成员的新组,然后对上传文件夹 775 设置权限。这应该使 apache 和 FTP 用户都能够写入文件夹中的文件,但保留其他所有人从修改它们。
如果您真的想这样做,我会选择 Ryan 的回答。
一般来说,在 *nix 环境中,您总是希望尽可能少地放弃权限。
10 次中有 9 次,755 是理想的权限 - 因为唯一能够修改文件的用户将是网络服务器。如果您确实需要更改此设置,请与您的组中的 ftp 用户一起将其更改为 775。
由于您自己承认您是 php 新手,因此这里有一个有助于提高上传服务安全性的链接:
move_uploaded_file
我会支持创建一个有权上传的 ftp 组的想法。但是,我认为没有必要给予 775 许可。7 代表读、写、执行。通常您希望允许某些组进行读写,但根据具体情况,可能不需要执行。
我将补充一点,如果您使用的是 SELinux,您需要确保类型上下文是 tmp_t 您可以使用 chcon 实用程序来完成此操作
chcon -t tmp_t 上传
重要的是apache
用户和组应该有最小read
的访问权限,在某些情况下应该有访问execute
权限。对于其余部分,您可以授予0
访问权限。
这是最安全的设置。
还记得CHOWN
或chgrp
您的网站文件夹。尝试 myusername# chown -R myusername:_www uploads
根据来自 的回答@Ryan Ahearn
,以下是我在Ubuntu
16.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' 使组生效, * * 测试 * * 行 *