【问题标题】:What is the difference in these Linux path这些Linux路径有什么区别
【发布时间】:2012-07-28 09:00:07
【问题描述】:

Linux 路径有什么不同

   /etc/passwd
 ../etc/passwd
/../etc/passwd

这些路径相同吗?

【问题讨论】:

    标签: linux path


    【解决方案1】:

    第一个是绝对路径。任何以 / 开头的路径都是绝对路径,它包含到达文件所需的所有目录。

    第二个是相对路径。 '..' 是一个特殊目录,表示当前目录的父目录。例如,如果您当前在 /etc/X11 文件夹中,../etc/passwd 将意味着上一个文件夹(到 /etc)并且文件 passwd 将在那里。

    最后一个很奇怪。根目录 '/' 没有父目录,但里面仍然有 '..' 文件夹。如果你在 '/' 内对 .. 进行 'cd' ,则不会发生任何事情,所以这与第一个选项 (/etc/passwd) 的工作方式几乎相同,但看起来相当混乱。

    【讨论】:

      【解决方案2】:

      /etc/passwd 与最近的 Linux 内核中的/../etc/passwd 相同。

      LVS 自动将"."".." 的条目添加到目录中,对于"/",它们都指向"/" 的inode。

      ../etc/passwd 是相对路径,所以取决于进程当前的工作目录。 如果 cwd 是"/""/etc",那么它们都指向同一个文件。

      另见:Canonicalization

      【讨论】:

      • Linux realpath 实用程序提供给定文件的真实规范路径。
      【解决方案3】:

      首先是绝对路径。将其视为真实的确切位置。

      第二是相对的,取决于你在哪里。 如果你的当前目录是

      /home/user/
      

      那么../etc/passwd 将位于: /home/etc/passwd

      至于最后一个,没有意义,因为 / 是每个文件夹的根目录。和/home/etc/passwd基本一样

      【讨论】:

      • 最后一个错误——根目录下没有..
      • @wroniasty:是的。它指向/。最后一个和第一个引用同一个文件。
      • 那么为什么当我尝试使用链接 www.host.com/?id=/etc/passwd 从浏览器读取文件时,我得到 passwd 文件,但是当我使用链接 www.host.com/ 时? id=../etc/passwd 我无法访问该文件。为什么?
      • 你想要达到的目标看起来很危险。但我的猜测是您的服务器从其 www 文件夹开始。这不是/www/(对吗?)
      • @dmitrij-holkin:应用程序(尤其是面向公众的应用程序)清理其输入以减轻目录遍历攻击。
      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2013-07-14
      • 2013-01-16
      • 1970-01-01
      • 2018-07-28
      • 2018-08-25
      相关资源
      最近更新 更多