我想确保正在运行的 python 脚本不会被其他进程(或宇宙射线,或意外的开发人员更新)意外修改。我听说过将脚本的校验和(例如md5sum
)与写保护文件中存储的已知值进行比较,但不确定如何获取正在使用的文件的校验和。 正在执行的脚本的内存是我的实际源文件吗? 或者正在其他地方执行什么?
这是我到目前为止所尝试过的,但不知道我的结果是否有效。
1. 创建包含校验和的写保护文件
cd ~/Developer/MyProj
# Compute the md5 hash and store it in a new file
md5sum /home/username/Developer/MyProj/myscript.py > checksum
# Remove the write permissions for all (user, group, and other)
chmod a-w checksum
# Inspect the permissions to validate
ls -al checksum
2.添加cronjob来定期(例如每小时)检查脚本的完整性
sudo crontab -e
0 * * * * /bin/sh /home/username/Developer/MyProj/healthcheck.sh
在healthcheck.sh
:
#!/bin/bash
s1=$(md5sum /home/username/Developer/MyProj/myscript.py)
s2=$(cat /home/username/Developer/MyProj/checksum)
if [ "$s1"="$s2" ]
then
echo "Script is what we think it is"
else
echo "Script was modified!"
fi