shellscript:检查用户输入路径是否在另一个路径中

时间:2021-02-06 12:34:52

标签: shell path git-shell

问题:

如何在 shellscript 中验证给我的路径(尚未创建)是否在已知目录中?

背景:

我想为 <img/> 编写一个服务器端脚本,它会创建一个裸仓库。我有 git-shell 用户的主目录,其中包含一些配置,例如 ssh 密钥、gitweb 配置和 git 目录。还有 git-shell-commands 目录,其中包含所有存储库。

上述脚本允许您在使用 git-shell 时创建新的存储库。您可以提供路径(对于子目录中的项目)或仅提供名称(对于顶级项目)。然后脚本创建该目录并初始化裸仓库。

但是,我注意到当您提供路径 ~/repos 作为项目名称时,您可以转义 ../escaped.git 目录并在 ~/repos 用户具有写入权限的任何位置创建一个裸仓库.我不想那样。

我尝试过的:

这是我目前所拥有的:

git

如果我然后运行 ​​#!/bin/sh # File: create-repo mkdir -p ~/repos/$1; git init --bare ~/repos/$1; ,我显然在不应该的地方创建了一个存储库。在这种情况下我怎么能失败,或者(甚至更好)只是省略路径的 create-repo ../escaped 部分?此外,除了使用 ../ 之外,还有其他方法可以逃避此限制吗? (例如,使用 .. 不起作用,提供绝对路径也不起作用。)

0 个答案:

没有答案
相关问题