我正在尝试制作自己的 ls。此外,我想实现安全的 ls 选项,它可以在整个 linux 系统中找到可疑文件。我必须只用两个信息做出决定。(文件位置,文件属性)
我如何确定哪个文件可疑?
我找到了一些例子。
例)
- /dev/setuid #如果/dev中有setuid文件,则警告
- /etc/.file # 是否有以字符'.'开头的文件在/etc 中,然后发出警告
- /worldwritable #如果整个目录有777权限文件
- /setgid #如果整个目录下有setgid文件
请给我你的想法!
(我认为没有正确答案,但我只是想要你的合理想法)
嗯,我们无法告诉您哪些文件您认为“可疑”...
您的描述听起来像是您想要实现一个“规则目录”,您要根据这个“规则目录”测试所有结果条目,但这非常含糊。一般的方法是将文件列表的原始结果中的每个条目(ls
通常所做的)提供给将目录中的所有规则应用于条目的某种逻辑。如果一个规则匹配(出现 true
),那么你就有了匹配。听起来像是用 C 语言编码的实用程序的一个很好的例子,用 Lua 编码的规则(作为插件)。这将提供很大的可扩展性。但是请记住您创建的极端性能开销!
通常使用不同的策略:大多数 Linux 系统上的包管理允许决定文件是否由已安装的包“拥有”以及是否已被修改。这在这里可能会派上用场:您在典型位置检查每个文件的“拥有”包,例如 /etc
、/var
、/srv
,如果它不属于任何包,那么那个就是我所说的可疑,因为它暗示了一个“野生安装包”,所以有人绕过了包管理。
我是一名优秀的程序员,十分优秀!