WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 Linux安全 Linux限制rm命令

Linux限制rm命令

夏柔 7月 1, 2020

常规做法是新建一个垃圾目录,把删除的内容mv到这个目录,在定期清理这个目录。是一样的,我自己动基于alias写了个脚本来限制rm命令,有以下好处:

  1. 只有一个脚本批量部署非常方便,不需求安装第三方软件
  2. 每次删除时会提示删除的内容,删除是将要删除的文件mv到/tmp/.trash/当天日期下,同时会提示是否清理目录,相当于仔细检查
  3. 限制删除内容:只允许删除文件和目录,对于特殊的软链接,设备等文件可以临时删除

其他功能懒得写了,使用方法将脚本丢到/etc/profile.d/即可。

#!/bin/bash
#author: will
#website: https://www.52os.net

rm_cmd(){

arg_array=()
for var in $*
do
if [ ! `echo "$var" |grep "^-"` ];then
arg_array+=("$var")
fi
done

if [ "$#" -eq "0" ] ;then
echo -e "\e[00;32mYou Are Using Security \"rm\" command \e[00m"
return 0
elif [ ${#arg_array[@]} -eq 0 ];then
echo -e "\e[00;32mYou Are Using Security \"rm\" command \e[00m"
return 0
fi

echo -e "\033[00;31mYou are going to DELETE: \033[00m"

list_array=()
for element in ${arg_array[@]}
do
if [ -f $element ];then
echo FILE: $element
list_array+=("$element")
elif [ -d $element ];then
echo DIR: $element
list_array+=("$element")
elif [ -S $element ];then
echo -e "\e[00;32mSOCKET: $element NOT Allow To Delete\e[00m"
return 0
elif [ -p $element ];then
echo -e "\e[00;32mPIPE: $element NOT Allow To Delete\e[00m"
return 0
elif [ -b $element ];then
echo -e "\e[00;32mBLOCK DEVICE: $element NOT Allow To Delete\e[00m"
return 0
elif [ -c $element ];then
echo -e "\e[00;32mCHARACTER DEVICE: $element NOT Allow To Delete\e[00m"
return 0
else
echo -e "\e[00;32mNOT Exist: $element \e[00m"
return 0
fi
done

read -n1 -p $'\033[00;31mAre you sure to DELETE [Y/N]? ' answer
case $answer in
Y | y)
echo -e "\n"

if [ ! -d "/tmp/.trash/`date -I`" ]; then
mkdir -p /tmp/.trash/`date -I`
chmod 777 /tmp/.trash/`date -I`
fi

for element in ${list_array[@]}
do
echo -e "Deleting $element to /tmp/.trash/`date -I`"
#/bin/rm --preserve-root -rf $element

mv $element /tmp/.trash/`date -I`

if [ $? -ne "0" ];then
echo -e "\nDeleted FAILED"
return 0
fi
done
echo -e "\nDeleted FINISHED"

read -n1 -p $'\033[00;31mFree Disk Space ? [Y/N]? ' fanswer
case $fanswer in

Y | y)
/bin/rm --preserve-root -rf /tmp/.trash/*
echo -e "\n"
;;
*)
echo -e "\nFree Disk Space SKIPED"
echo -e "\n"
;;
esac
;;
*)
echo -e "\nDelete SKIPED"
;;

esac
}

alias rm='rm_cmd $@'
alias grep='grep --color=auto'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#mv#rm命令#第三方软件#脚本
0
J2dcg1.png
猜你喜欢
  • 【高危】fastcdn用户数据库表存在明文,修改用户数据无鉴权限制即可增删改
  • fastcdn删除节点数据缺乏身份验证机制
  • fastcdn之SSH列表数据接口
  • fastcdn系统昨日上线发现两个未经身份验证接口
  • 主机盾公益免费主机测评
  • 关于宝塔新面板(真实性为止)
  • 使用测速脚本对国内Linux服务器进行测速
  • 手机号-社交媒体-地理位置开源情报
  • 防止SQL注入的五种方法
  • xss攻击入门
21 4月, 2024
04月21日,星期日, 每天60秒读懂世界!
夏柔
站长
夏山如碧 - 怀柔天下
1688
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2