有什么方法可以检查您从bash脚本实际执行的操作吗?
说你的bash脚本调用几个命令(例如:tar
,mail
,scp
,mysqldump
),你愿意以确保tar
是真正的,真实的tar
,这是由确定root
用户是该文件的父目录的所有者,也是唯一一个具有写权限而不是/tmp/surprise/tar
拥有者www-data
或apache2
拥有者。
当然,我知道PATH
环境,我很想知道是否可以从正在运行的bash脚本中另外检查一下,如果可以的话,如何检查?
示例:(伪代码)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
不正确的说法tar
外,ls
还可能被黑客返回有关文件的错误信息(如果有)。也grep
可能被黑以返回错误信息;可以通过改用Shell匹配来避免这种情况,但随后可能会破坏Shell。首先,可以破解shell来产生错误的结果type
-或完全替换掉shell,因为与50年前的OS相比,shell的可替换性是Unix的一项重要创新。参见肯·汤普森(Ken Thompson)1984年的图灵演讲。一直都是乌龟。
TE
)的组件,它的数据库带有签名(即,比MD5校验和更广泛。当TE处于活动状态并且数据库中有文件时,您可以选择程序是否运行-或仅警告它与数据库不匹配。此外,还有其他两个设置:(TEP
可信执行路径)和TLP
(可信库路径)。仅可执行TEP中的程序,并且只能使用该目录包含在TLP中。在Linux中,我有一个名为“ AppArmor”的内容可能会对您有所帮助