问题描述
问题:
如何在 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
部分?此外,除了使用 ../
之外,还有其他方法可以逃避此限制吗? (例如,使用 ..
不起作用,提供绝对路径也不起作用。)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)