如何防止工具(可执行文件)从指定目录以外的任何其他目录执行?可以编辑工具源代码并重新编译。基于 Linux 的操作系统。
user2223291
问问题
40 次
1 回答
0
调用getcwd()
查看目录是否为指定目录。
#define ALLOWED_DIR "/foo/bar/baz"
char dir[BUFSIZ];
getcwd(dir, BUFSIZ);
if (strcmp(dir, ALLOWED_DIR) != 0) {
/* complain and exit */
}
编辑
从您的评论来看,您似乎不是在寻找用户正在执行的目录,而是在寻找包含可执行文件本身的目录。没有完全可靠的方法可以做到这一点,请参阅http://www.linuxquestions.org/questions/programming-9/how-do-i-get-the-application-path-in-c-426517/
检查可执行位置并不能提供任何真正的安全性。如果有人复制了该程序,他们可以简单地删除检查它所在位置的部分。
如果要确保用户只使用官方安装的程序版本,则需要使其依赖于访问普通用户无法访问的东西。然后制作程序 setuid 或 setgid,以便它可以访问它。如果他们尝试运行他们的副本,它将无法工作,因为它不会以适当的权限运行。
于 2013-04-16T07:26:40.143 回答