如何检查Linux上C中通过CLI提供的主目录快捷方式

如何检查Linux上C中通过CLI提供的主目录快捷方式,c,linux,input,filesystems,command-line-interface,C,Linux,Input,Filesystems,Command Line Interface,我想检查主目录快捷方式~,该快捷方式是在Linux上运行的C程序中通过CLI作为输入选项的参数提供的 在从main()函数参数读取快捷方式之前,会将其转换为完整路径 我对它添加了以下文字检查,但它不起作用,因为CLI已将该参数替换为主目录完整路径(如/home/my) 如何添加禁止用户输入主目录快捷方式(非完整路径)的文字检查,或者如何确保CLI不会将快捷方式转换为路径 请注意,如果用户显式输入主目录路径作为输入参数,则可以。我只需要在捷径上打个勾 一些背景: 这只是安全检查之一,不允许用户访问

我想检查主目录快捷方式
~
,该快捷方式是在Linux上运行的C程序中通过CLI作为输入选项的参数提供的

在从
main()
函数参数读取快捷方式之前,会将其转换为完整路径

我对它添加了以下文字检查,但它不起作用,因为CLI已将该参数替换为主目录完整路径(如
/home/my

如何添加禁止用户输入主目录快捷方式(非完整路径)的文字检查,或者如何确保CLI不会将快捷方式转换为路径

请注意,如果用户显式输入主目录路径作为输入参数,则可以。我只需要在捷径上打个勾

一些背景:


这只是安全检查之一,不允许用户访问特权位置。用户将通过web界面访问应用程序,应用程序将在分配给用户的空间(/home/user_1)之外的空间(/home/main)中运行。

~
由shell扩展为
$home
,而不是由您的应用程序。您的应用程序无法确定是否发生了
~
扩展,即您无法区分用户是否键入了

application ~/foo


你想做什么?只是一个安全检查,不允许用户访问特权位置。用户将通过web界面访问应用程序,应用程序将在分配给用户(/home/user_1)之外的空间(/home/main)中运行。那么,为什么不将目录与
/home/main
进行比较,而不是检查波浪扩展?@fuzzxl要求限制快捷方式~(不知道它已转换为主目录)。现在,这似乎不可能做到。我看不出
~
扩展如何存在安全问题。如果用户可以键入
/home/user_1
并获得相同的结果,就没有安全问题-用户具有相同的权限。因此,这个问题没有解决方案?@ZeeshanMahmood不,没有。这是为什么有什么问题吗?为什么您有兴趣禁止用户使用
~
扩展?请参阅上面问题中的“一些背景”。我刚刚编辑了它。fuzzxl-问题的另一部分是,我们是否可以禁止~扩展(通过应用程序)“ZeShanHaMalMod”应用程序不能禁止<代码> ~> /代码>扩展。在某些shell中,可以关闭<代码> ~扩展,但我不知道如何在BASH(标准Linux shell)中这样做。请考虑以不同的方式使用路径,例如从配置文件或从标准输入到不存在这个问题。
application ~/foo
application /home/me/foo