检查目录是否是特定目录的子目录

Check if directory is a subdirectory of specific directory

我目前正在开发一个带有 SSH 连接的 Web 应用程序。

一个任务是我需要验证目录是否在当前用户的 htdocs-dir 之下。

到目前为止,我所做的是检查目录字符串是否在字符串的开头有 htdocs-part。 喜欢

"/var/users/user/htdocs" is in front of "/var/users/user/htdocs/testDir"

现在我正在对此进行渗透测试并输入

"/var/users/user/htdocs/testDir/../../../".

问题来了。我如何检查一个目录是否是另一个目录的第 n 级的子目录

您可以使用 readlink 获取实际结果路径:

mybox\> readlink -m /var/users/user/htdocs/testDir/../../../    
/var/users

您可以使用 realpath:

find /var/users -path `realpath /var/users/user/htdocs/testDir/../..`

另外,它也适用于相对路径:

find `realpath dir` -path `realpath dir/htdocs/testDir/..`

我会用

find /var/users/user/htdocs -path $(readlink -m /var/users/user/htdocs/testDir/../../../)