【发布时间】:2017-02-09 03:27:47
【问题描述】:
我有一个脚本,它确实需要一个特定文件夹上的 rm -fr
我想让它尽可能安全。我在下面开始了这个脚本,但我想知道是否还有什么我错过的。
folder=""
if [[ ! -d "$folder" ]]; then
echo "Error: is not a folder"
elif [[ "$folder" == "/" ]]; then
echo "Error: folder points to root"
elif [[ "$folder" == "../"* ]]; then
echo "Error: folder start with ../"
elif [[ "$folder" == *"/.."* ]]; then
echo "Error: folder contains /.."
elif [[ "$folder" == *"/*"* ]]; then
echo "Error: folder ends with /*"
else
rm -fr "$folder"
fi
更新:添加了对“/”的检查
【问题讨论】:
-
也可以检查
/? -
感谢我更新了代码!
-
是否所有文件夹都位于给定用户下..eg ~/home/jsmith ?
-
在我拥有的脚本中,该文件夹应位于 /tmp 而不是用户的主文件夹中。但是,如果您有任何要添加的内容涵盖所有情况,请随时分享。
-
嗯,你可以有一个可重用的“黑名单”机制,再加上一个逐案白名单检查。只需检查它们的路径是否位于特定目录中,这是一个非常简单的白名单方法的良好起点。您的可重用脚本/函数可以接受一个参数来进行检查,只需要调用者提供一个目录名称。