题
对于这个基本问题,我深表歉意 - 我是一名 .NET 开发人员,对 LAMP 设置没有太多经验。
我有一个 PHP 站点,允许上传到特定文件夹。我被告知该文件夹需要由网络服务器用户拥有才能使上传过程正常工作,因此我创建了该文件夹,然后设置权限如下:
chown apache:apache -R uploads/
chmod 755 -R uploads/
现在唯一的问题是FTP用户根本无法修改上传的文件。
是否有权限设置允许我仍然上传文件,然后以网络服务器用户以外的用户身份稍后修改它们?
解决方案
您可以创建一个新组,其中包含apache用户和FTP用户作为成员,然后将上传文件夹的权限设置为775。这应该使 apache 和 FTP 用户都能够写入文件夹中的文件,但阻止其他人修改它们。
其他提示
如果你真的想这样做,我会同意瑞安的回答。
一般来说,在 *nix 环境中,您总是希望放弃尽可能少的权限。
十分之九,755 是对此的理想权限 - 因为唯一能够修改文件的用户将是网络服务器。如果您确实需要更改此值,请将您的 ftp 用户在组中的值更改为 775。
由于您自己承认是 php 新手,因此这里有一个有用的链接,可帮助您提高上传服务的安全性:move_uploaded_file
或者至少 766。
- 读=4
- 写=2
- 执行=1
7 = 读取 + 写入 + 执行
6 = 读 + 写
- 第一个数字:所有者
- 第二个数字:团体
- 第三个数字:其他用户
我要补充一点,如果您使用 SELinux,则需要确保类型上下文是 tmp_t 您可以通过使用 chcon 实用程序来完成此操作
chcon -t tmp_t 上传
重要的是 apache
用户和组应具有最低限度 read
访问,并且在某些情况下 execute
使用权。剩下的你可以给 0
使用权。
这是最安全的设置。
我支持创建一个有权上传的 ftp 组的想法。不过,我认为没有必要给予775许可。7 代表读、写、执行。通常您希望允许某些组读取和写入,但根据情况,可能不需要执行。
还记得 CHOWN
或者 chgrp
您的网站文件夹。尝试 myusername# chown -R myusername:_www uploads
根据来自的答案 @Ryan Ahearn
, ,以下是我所做的 Ubuntu
16.04 创建用户 front
只对 nginx 的 web 目录有权限 /var/www/html
.
脚步:
* pre-steps: * basic prepare of server, * create user 'dev' which will be the owner of "/var/www/html", * * install nginx, * * * create user 'front' sudo useradd -d /home/front -s /bin/bash front sudo passwd front # create home folder, if not exists yet, sudo mkdir /home/front # set owner of new home folder, sudo chown -R front:front /home/front # switch to user, su - front # copy .bashrc, if not exists yet, cp /etc/skel/.bashrc ~front/ cp /etc/skel/.profile ~front/ # enable color, vi ~front/.bashrc # uncomment the line start with "force_color_prompt", # exit user exit * * add to group 'dev', sudo usermod -a -G dev front * change owner of web dir, sudo chown -R dev:dev /var/www * change permission of web dir, chmod 775 $(find /var/www/html -type d) chmod 664 $(find /var/www/html -type f) * * re-login as 'front' to make group take effect, * * test * * ok *