0

如何防止工具(可执行文件)从指定目录以外的任何其他目录执行?可以编辑工具源代码并重新编译。基于 Linux 的操作系统。

4

1 回答 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 回答