【发布时间】:2015-06-11 13:33:05
【问题描述】:
我在 C 中为一个类创建了一个类似 apache 的服务器,但遗憾的是它允许客户端查看我的文件系统中的文件和文件夹。我可能可以对请求进行大量解析以避免这种情况,但我怀疑这是最好的方法。 有没有办法只授予服务器访问当前文件夹内内容的权限? (通过代码或通过在操作系统本身中配置某些东西) 它调用“ls”来查看文件系统,我怀疑这可能非常相关。
【问题讨论】:
-
好吧,我不知道googleing it 会不会告诉你chroot?
-
我认为你会通过权限和某种配置文件的组合来做到这一点。您的服务器不应该以 root 身份运行,而是它自己的用户,例如 apache 如何以 _www 或类似的方式运行。还为每个站点设置一个配置,告诉您的服务器哪个文件夹是根文件夹,以便应用程序知道它只能访问该文件夹中或更深的文件。但总的来说,这个问题太长了,无法在堆栈中回答,你只会得到一百万个意见。
-
我确实尝试了一些查询,但没有找到任何相关的内容,我猜我的措辞不正确。谢谢!
-
我已经有了前缀路径,问题出在 /../ 字符串上。我考虑过解析和拒绝它们,但我担心可能会错过其他类似的问题。
-
使用 shell 工具总是很危险的,因为它们不是为通过 Web 界面使用而设计的。您应该首先实现自己的目录爬虫,它首先将相对路径转换为绝对路径并将其使用限制为允许的路径。 (当然包括不以 root 身份运行)。