锁定目录的 C++ 解决方案 - Linux
c++ solution to locking a directory - linux
一个简单的问题。是否可以在 linux 下锁定目录?实际上,我需要的是只有一个应用程序(我编写的(可以访问该应用程序创建的指定目录。所以基本上它是该应用程序的缓存目录,到目前为止,用户一直在搞砸它。因此,我希望将来防止这种情况发生。
有没有可能做到这一点??以及如何(语言:c ++(?
在标准C++中根本不可能。
在 linux 下,对可执行文件使用 setuid 权限,使其在其所有者的上下文中运行。 然后,您可以锁定目录的访问权限,以便只有可执行文件的所有者才能访问它。
当然,这并不能阻止使用您的程序的用户弄乱您的缓存。 您需要设计程序,以防止用户进行不当操作。 并确保所有者帐户(可以专门为您的应用程序设置(没有超出其需要的权限。
如果您信任对安装此文件的系统具有"root"权限的人,则可以依靠拥有特殊用户或组,并使用setuid
和/或setgid
来防止其他人篡改文件。但是,这确实意味着软件的安装程序需要具有root权限,因此"任何"用户都无法安装该软件,这在某些情况下可能不是一个好的解决方案。
更好的解决方案实际上是将文件的哈希存储在文件中[加上一些常量数据或类似的东西,这样用户就不能只是运行sha1 modified-file
并获得"正确的哈希"],或者加密整个文件。
这两种方法的问题在于,您仍然不能 100% 依赖它 - 具有足够动力和资源的人会弄清楚常量数据是什么,并在修改文件中的数据后将其计算为新哈希。同样,假设您的应用程序知道如何解密文件,则可以对应用程序进行逆向工程以查找加密密钥和加密方法。
所以你正在与你的"用户"进行一场"代码战"(冷战双关语(。
有可用于许可证管理的商业解决方案(我一直是FlexLM的用户,但还有其他几个(。这是更多的工作,并且可能会花费一点许可费,但是如果您使用商业产品,您将为自己节省一大堆潜在的麻烦。
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- visual c++,如何获取解决方案目录中的代码
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- 无法在问题解决方案中执行输出逻辑
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 在Visual Studio中将Windows解决方案移植到Linux
- 锁定目录的 C++ 解决方案 - Linux
- 如何在Linux下构建Visual Studio解决方案
- 是否可以将VS2005解决方案导入到IDE中,以便在Linux上进行调试?