这可能是一个菜鸟问题,但无法在任何地方找到答案。
我遇到了一个问题,Another file permissions problem帮助我解决了问题。
我在linux( danny )中创建了一个具有sudo访问权限的用户。 我还创建了一个名为ALSO danny 的新组,并将用户 danny 添加到该组。 此论坛有sudo(root)访问权限。
我在danny / danny group拥有的 www 文件夹中包含所有文件和文件夹。
我有一个 php 的图片上传代码。此代码无法将图像上传到名为“图像”文件夹的文件夹,该文件夹位于 www 文件夹下,除非我提供图像文件夹 777 权限。
所以,我已经按照链接问题的答案,并且已经发现上传脚本运行的用户是“ www-data ”。
根据我发布的另一个问题的链接上的答案,我需要将 www-data 添加到一个群组......但我被困在这里......
我应该添加哪个群组?我该怎么办?
任何提示都表示赞赏。
顺便说一下,这里有一些关于www-data和danny的信息
id www-data:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
id danny
uid=1000(danny) gid=33(www-data) groups=33(www-data)
谢谢,如果您需要更多输入,请告诉我......
答案 0 :(得分:18)
一般情况下,否,您的内容不归www-data所有。应该由www-data拥有的唯一内容是您需要Web应用程序能够修改的特定文件以及他们需要能够创建或删除文件的特定目录。其余不应该由www-data拥有(或写入),因为www-data可以写入的每个文件都是攻击者破坏您的Web服务器(包括它运行的任何脚本或Web应用程序)将能够替换的文件他可能会选择任何恶意数据。
www-data 不拥有或能够写入任何可执行文件(例如,脚本,Flash文件,Word或其他格式的文档)尤其重要具有宏功能等)因为用恶意可执行文件替换它们将提供一种攻击用户计算机或Web服务器本身的简便方法。
答案 1 :(得分:2)
我认为www-data使用的文件归www-data所有。我的意思是还有谁应该拥有它?最重要的部分是Web应用程序不应具有对其自己的Web根目录的写入权限。原因是因为copy()
或file_put_contents()
等PHP函数中的directory traversal漏洞可能允许攻击者在您的Web根目录中删除.php后门。
要注意的另一个重要攻击是系统上的另一个进程或用户可能想要读取或写入您的Web根目录,因此最后一个数字为零非常重要。中间的数字是组,你不使用它,所以它也应该为零。以下两个命令使您的Web根目录可由apache读取和执行,并且只能使用apache。有时会使用其他用户帐户,因此请运行<?php system('whoami')?>
以找出正确的用户帐户。
chown www-data -R /path/to/webroot
chmod 500 -R /path/to/webroot
当攻击者远程执行代码以更改其游戏结束的Web根权限时。重点是试图阻止成功的利用。
答案 2 :(得分:1)
我将www-data用户添加到组danny。
usermod -a -G danny www-data
这种方式www-data可以进入danny的位置,但不是相反的。
为了允许www-data用户写入danny组文件夹,权限掩码必须像(通配符表示任何值都可以):
d???rwx???
答案 3 :(得分:-2)
实际上,您的问题是您需要用户 www-data 才能对 images 文件夹进行写访问。
您可能希望用户 danny 也可以完全访问该文件夹。
编辑:附加警告: 拥有可由您的网络服务器编写的文件始终是安全风险。务必检查写入的文件,并确保人们无法上传或更改代码。 摘要: *不要让您的网络服务器运行可写的脚本或可写的文件夹。 因此,请确保只有images /文件夹可写,并仔细检查所写的所有内容实际上是图像!
或者: