PHP / Apache上传文件夹的权限是什么?
抱歉的基本问题 – 我是一个.NET开发人员,并没有太多的LAMP设置经验。
我有一个PHP网站,将允许上传到特定的文件夹。 我被告知,这个文件夹需要由Web服务器用户拥有上传过程才能工作,所以我创build了文件夹,然后设置权限,如下所示:
chown apache:apache -R uploads/ chmod 755 -R uploads/
现在唯一的问题是,FTP用户根本无法修改上传的文件。
是否有一个权限设置,允许我仍然上传文件,然后修改它们以外的用户而不是Web服务器用户?
你可以用apache用户和FTP用户作为成员创build一个新的组,然后在上传文件夹775上创build权限。这应该使apache和FTP用户都能够写入文件夹中的文件,但是让其他人从修改它们。
如果你真的想这样做的话,我会和Ryan一起回答。
总的来说,在一个* nix环境中,你总是希望尽可能less的授予权限。
10次中的9次,755是理想的权限 – 因为唯一能修改文件的用户将是web服务器。 如果您真的需要更改,请将您的ftp用户更改为775。
由于您自己承认PHP是新手,因此您可以通过以下链接提高上传服务的安全性: move_uploaded_file
或者至less766。
- 阅读= 4
- 写= 2
- 执行= 1
7 =读取+写入+执行
6 =读取+写入
- 第一个数字:所有者
- 第二个数字:组
- 第三个号码:其他用户
重要的是, apache用户和组应该有最小的read访问权限,并在某些情况下execute访问权限。 其余的你可以给0访问。
这是最安全的设置。
我会支持创build一个有权上传的ftp组的想法。 但是,我不认为有必要给予775的许可。 7代表读,写,执行。 通常你想允许某些组读取和写入,但根据情况,执行可能不是必需的。
我将补充一点,如果您使用的是SELinux,则需要确保types上下文是tmp_t您可以使用chcon实用程序
chcon -t tmp_t上传
还请记住CHOWN或chgrp您的网站文件夹。 尝试myusername# chown -R myusername:_www uploads
基于@Ryan Ahearn的回答,以下是我在Ubuntu 16.04上创build的用户front ,只有nginx的web dir /var/www/html权限。
脚步:
*前置步骤:
*基本的服务器准备,
*创build用户“开发”
这将是“/ var / www / html”的所有者,
*
*安装nginx,
*
*
*创build用户“前”
sudo useradd -d / home / front -s / bin / bash front
sudo passwd前面
#创build主文件夹,如果还不存在,
sudo mkdir / home / front
#设置新主文件夹的所有者,
sudo chown -R正面:正面/正面/正面
#切换到用户,
前线
#复制.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
*更改networking目录的权限,
chmod 775 $(find / var / www / html -type d)
chmod 664 $(find / var / www / html -type f)
*
*重新login为“前”
为了使小组生效,
*
*testing
*
* 好
*