很抱歉这个基本问题 - 我是一名 .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,以下是我在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'
使组生效,
*
* 测试
*
* 行
*