Bash fork 炸彈 —— :(){ :|: };:

🧠 什么是 Fork 炸彈?

Fork 炸彈是一種拒絕服務(DoS)攻擊技術,利用操作系統的 fork() 系統調用不斷創建新進程,直到系統資源(如進程表、CPU、內存)被耗盡,從而使系統無法響應正常操作。

在類 Unix 系統中,fork() 是用于創建新進程的系統調用。


(){ :|:& };: 是一個著名的 Bash fork 炸彈(fork bomb)腳本,它通過遞歸創建大量子進程,迅速耗盡系統資源,導致系統變得極度緩慢甚至完全崩潰。

🔍 :(){ :|:& };: 的結構解析

這個 Bash 腳本看起來簡短,但其結構非常巧妙:

:(){ :|:& };:

逐部分解釋如下:

  • :():定義一個名為 : 的函數。

  • { :|:& }:函數體,執行以下操作:

    • ::遞歸調用自身。
    • |:將前一個調用的輸出通過管道傳遞給另一個調用。
    • &:將整個管道命令放入后臺執行。
  • ;:表示命令結束。

  • ::調用函數,啟動遞歸過程。

簡化后的可讀版本如下:

forkbomb() { forkbomb | forkbomb & }; forkbomb

每次函數調用都會啟動兩個新的后臺進程,導致進程數量呈指數級增長,迅速耗盡系統資源。


?? 執行后的影響

執行該腳本后,系統會出現以下問題:

  • 進程表耗盡:無法創建新進程,系統無法響應用戶輸入。
  • CPU 和內存資源耗盡:系統變得極度緩慢,可能完全無響應。
  • 需要強制重啟:通常只能通過硬重啟來恢復系統。([Baeldung][1])

在某些系統中,可能會看到如下錯誤信息:


bash: fork: Resource temporarily unavailable

🛡? 防范措施

為了防止 fork 炸彈造成系統崩潰,可以采取以下措施:

1. 限制用戶的最大進程數

編輯 /etc/security/limits.conf 文件,添加以下內容:([It’s FOSS][7])

username hard nproc 100

username 替換為目標用戶名,100 為允許的最大進程數。

2. 使用 ulimit 命令設置限制

在用戶的 shell 配置文件中添加:

ulimit -u 100

這將限制用戶最多只能創建 100 個進程。([教程要點][8])

3. 配置 systemd 的 cgroup 限制

對于使用 systemd 的系統,可以設置每個用戶的最大進程數:([Baeldung][1])

sudo systemctl set-property user-$(id -u).slice TasksMax=100

這將限制當前用戶最多只能創建 100 個任務。


🧪 合法用途

盡管 fork 炸彈具有破壞性,但在受控環境中,它也可用于:

  • 測試系統的資源限制配置:驗證系統對資源濫用的防護能力。
  • 演示遞歸和進程管理機制:用于教學目的,展示遞歸函數和進程創建的效果。
  • 測試監控和報警系統的響應能力:確保在資源異常使用時,監控系統能夠及時報警。

在進行上述測試時,務必在虛擬機或非生產環境中進行,避免對實際系統造成影響。


? 總結

Bash fork 炸彈 :(){ :|:& };: 是一個利用遞歸函數快速耗盡系統資源的腳本,具有極大的破壞性。

通過合理配置系統的資源限制,可以有效防范此類攻擊。

在學習和測試時,應確保在安全、受控的環境中進行,避免對實際系統造成損害。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81400.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81400.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

<前端小白> 前端網頁知識點總結

HTML 標簽 1. 標題標簽 h1到h6 2. 段落標簽 p 3. 換行 br 水平線 hr 4. 加粗 strong 傾斜 em 下劃線 ins 刪除 del 5. 圖像標簽 img src-圖像的位置 alt- 圖片加載失敗顯示的文字 替換文本 title--- 鼠標放到圖片上顯示的文字 提示…

tomcat查看狀態頁及調優信息

準備工作 先準備一臺已經安裝好tomcat的虛擬機&#xff0c;tomcat默認是狀態頁是默認被禁用的 1.添加授權用戶 vim /usr/local/tomcat/conf/tomcat-users.xml22 <role rolename"manager-gui"/>23 <user username"admin" password"tomcat&q…

.NET NativeAOT 指南

目錄 1. 引言 2. 什么是 .NET NativeAOT&#xff1f; 2.1 NativeAOT 的定義 2.2 NativeAOT 與傳統 JIT 的對比 2.3 NativeAOT 的適用場景 3. NativeAOT 的核心優勢 3.1 性能提升 3.2 簡化部署 3.3 更小的應用體積 3.4 知識產權保護 4. NativeAOT 的基本用法 4.1 環境…

產品周圍的幾面墻

不能把排序&#xff0c;當單選題做。 2025年的杭州咖啡館&#xff0c;味道最濃的不是咖啡&#xff0c;是聊各種項目和創業的卷味。 在過去幾年&#xff0c;聊項目的也不少&#xff0c;那時候帶著更加濃烈的自信和松弛感&#xff0c;不過今年略帶幾分忐忑和試探的口吻。 看到網…

例舉3種強制類型轉換和2種隱式

1. 強制類型轉換 強制類型轉換是指程序員顯式地將一個數據類型的值轉換為另一種數據類型。這種轉換通常是通過使用特定的函數或運算符來完成的。 常用的強制類型轉換方法&#xff1a; 使用Number()函數 let value "123"; let num Number(value); // 強制轉換為數字…

UI-TARS本地部署

UI-TARS本地部署 UI-TARS本地部署 UI-TARS 論文&#xff08;arXiv&#xff09; UI-TARS 官方倉庫&#xff1a;包含部署指南、模型下載鏈接及示例代碼。 UI-TARS-Desktop 客戶端&#xff1a;支持本地桌面應用的交互控制。 模型部署框架&#xff1a;vLLM本地部署 1.下載項目…

新電腦軟件配置三 pycharm

快捷鍵放大和縮小字體 按住ctrl鼠標滾輪向上 縮小同理

華為OD機試真題——考勤信息(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 100分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

Python語法規則:縮進、代碼塊與空格規范

在眾多編程語言中&#xff0c;Python 以其“簡潔而優雅”的語法風格獨樹一幟。然而&#xff0c;這種“簡潔”并非輕率隨意&#xff0c;而是建立在一套嚴謹的語法哲學之上。縮進、代碼塊與空格規范&#xff0c;不僅是 Python 的語法基礎&#xff0c;更是它傳達代碼意圖、塑造開發…

Baklib智能知識管理增效方案

Baklib智能知識管理核心優勢 基于Baklib構建的知識中臺&#xff0c;通過多維度結構化處理與智能語義引擎&#xff0c;重構了企業知識管理范式。該系統支持文檔、表格、音視頻等多格式內容聚合&#xff0c;利用自然語言處理技術實現知識資產的自動化分類與標簽匹配&#xff0c;…

【導航信號模擬器】【MATLAB APP】MATLAB AppDesigner基本使用教程

MATLAB AppDesigner基本使用教程 作者&#xff1a;齊花Guyc(CAUC) 文章目錄 MATLAB AppDesigner基本使用教程一、創建項目二、編寫回調函數1. 按鈕——獲取選擇文件路徑2. 按鈕——保存文件路徑3. 單選按鈕組4. 復選框5. 文本框顯示 三、打包APP 一、創建項目 建立空文件夾—…

ImgShrink:攝影暗房里的在線圖片壓縮工具開發記

我正在參加CodeBuddy「首席試玩官」內容創作大賽&#xff0c;本文所使用的 CodeBuddy 免費下載鏈接&#xff1a;騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 在一次 CodeBuddy 的項目試玩官活動中&#xff0c;我決定構建一個實用又不失視覺特色的小工具——ImgShrink。它…

利用systemd啟動部署在服務器上的web應用

0.背景 系統環境&#xff1a; Ubuntu 22.04 web應用情況&#xff1a; 前后端分類&#xff0c;前端采用react&#xff0c;后端采用fastapi 1.具體配置 1.1 前端配置 開發態運行&#xff08;啟動命令是npm run dev&#xff09;,創建systemd服務文件 sudo nano /etc/systemd/…

在vue3中使用Cesium的保姆教程

1. 軟件下載與安裝 1. node安裝 Vue.js 的開發依賴于 Node.js 環境&#xff0c;因此我們首先需要安裝 Node.js。Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境&#xff0c;它允許你在服務器端運行 JavaScript 代碼&#xff0c;同時也為前端開發提供了強大的工具支…

基于LabVIEW的雙音多頻系統設計

目錄 1 系統設計概述 雙音多頻(Dual-Tone Multi-Frequency, DTMF)信號是一種廣泛應用于電話系統中的音頻信號,通過不同的頻率組合表示不同的按鍵。每個按鍵對應兩個頻率,一個低頻和一個高頻,共同組成獨特的信號。在虛擬儀器技術快速發展的背景下,利用LabVIEW等圖形化編程…

【筆記】端口轉發

echo off :loop ssh -N -L 13306:192.168.0.3:23306 -o ServerAliveInterval60 admin192.168.0.2 timeout /t 5 goto loop 代碼功能剖析 1、基礎設置&#xff1a; echo off 此命令的作用是讓批處理腳本在執行過程中不顯示命令行&#xff0c;從而使輸出更為簡潔。 2、定義循環…

Flink Table SQL

Apache Flink 提供了強大的 Table API 和 SQL 接口&#xff0c;用于統一處理批數據和流數據。它們為開發者提供了類 SQL 的編程方式&#xff0c;簡化了復雜的數據處理邏輯&#xff0c;并支持與外部系統集成。 &#x1f9e9; 一、Flink Table & SQL 核心概念 概念描述Table…

【AWS入門】Amazon SageMaker簡介

【AWS入門】Amazon SageMaker簡介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 機器學習(Machine Learning&#xff0c;簡稱ML) 是當代流行的計算機科學分支技術。通常&#xff0c;人們在本地部署搭建環境&#xff0c;以滿足機器學習的要求。 AWS…

解決 Go 構建依賴超時問題:使用 GOPROXY 提升 Docker 構建穩定性

目錄 解決 Go 構建依賴超時問題&#xff1a;使用 GOPROXY 提升 Docker 構建穩定性 ? 問題背景 ? 正確做法&#xff1a;多階段中在 Go 階段設置 GOPROXY ? 實際收獲 &#x1f9ea; 小技巧&#xff1a;驗證 GOPROXY 設置是否生效 ? 總結 解決 Go 構建依賴超時問題&#x…

【周輸入】510周閱讀推薦-3

前文 【周輸入】510周閱讀推薦-1-CSDN博客 【周輸入】510周閱讀推薦-2-CSDN博客 本次推薦 目錄 前文 本次推薦 算法技術 模型產品 算法技術 vLLM和DeepSpeed部署模型的優缺點_vllm deepspeed-CSDN博客 優點缺點總結vLLM 適用于推理 優化內存管理 高效并行化 功能單…