1. 程式人生 > >Linux_lsof追蹤程序或使用者恢復刪除檔案

Linux_lsof追蹤程序或使用者恢復刪除檔案

當Linux計算機受到入侵時,常見的情況是日誌檔案被刪除,以掩蓋攻擊者的蹤跡。管理錯誤也可能導致意外刪除重要的檔案,比如在清理舊日誌時,意外地刪除了資料庫的活動事務日誌。有時可以通過lsof來恢復這些檔案。

當程序打開了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序並不知道檔案已經被刪除,它仍然可以向開啟該檔案時提供給它的檔案描述符進行讀取和寫入。除了該程序之外,這個檔案是不可見的,因為已經刪除了其相應的目錄索引節點。

在/proc 目錄下,其中包含了反映核心和程序樹的各種檔案。/proc目錄掛載的是在記憶體中所對映的一塊區域,所以這些檔案和目錄並不存在於磁碟中,因此當我們對這 些檔案進行讀取和寫入時,實際上是在從記憶體中獲取相關資訊。大多數與 lsof 相關的資訊都儲存於以程序的 PID 命名的目錄中,即 /proc/1234 中包含的是 PID 為 1234 的程序的資訊。每個程序目錄中存在著各種檔案,它們可以使得應用程式簡單地瞭解程序的記憶體空間、檔案描述符列表、指向磁碟上的檔案的符號連結和其他系統信 息。lsof 程式使用該資訊和其他關於核心內部狀態的資訊來產生其輸出。所以lsof 可以顯示程序的檔案描述符和相關的檔名等資訊。也就是我們通過訪問程序的檔案描述符可以找到該檔案的相關資訊。

當系統中的某個檔案被意外地刪除了,只要這個時候系統中還有程序正在訪問該檔案,那麼我們就可以通過lsof從/proc目錄下恢復該檔案的內容。 假如由於誤操作將/var/log/messages檔案刪除掉了,那麼這時要將/var/log/messages檔案恢復的方法如下:

首先使用lsof來檢視當前是否有程序開啟/var/logmessages檔案,如下:

# lsof |grep /var/log/messages
syslogd   1283      root    2w      REG        3,3  5381017    1773647 /var/log/messages (deleted)

從上面的資訊可以看到 PID 1283(syslogd)開啟檔案的檔案描述符為 2。同時還可以看到/var/log/messages已經標記被刪除了。因此我們可以在 /proc/1283/fd/2 (fd下的每個以數字命名的檔案表示程序對應的檔案描述符)中檢視相應的資訊,如下:

# head -n 10 /proc/1283/fd/2
Aug  4 13:50:15 holmes86 syslogd 1.4.1: restart.
Aug  4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started.
Aug  4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 ([email protected]) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007
Aug  4 13:50:15 holmes86 kernel: BIOS-provided physical RAM map:
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable)
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved)
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved)
Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)

從上面的資訊可以看出,檢視 /proc/8663/fd/15 就可以得到所要恢復的資料。如果可以通過檔案描述符檢視相應的資料,那麼就可以使用 I/O 重定向將其複製到檔案中,如:

cat /proc/1283/fd/2 > /var/log/messages 

對於許多應用程式,尤其是日誌檔案和資料庫,這種恢復刪除檔案的方法非常有用。

相關推薦

【轉】Linux_lsof追蹤程序或使用者恢復刪除檔案

參考:http://blog.csdn.net/hx_jinqiang/article/details/6545728 我的常用: 1)根據埠找程序 lsof -i:22 2) 檢視指定目錄的程序佔用情況 lsof  /opt/app 3) 特定的程式打開了哪些檔案

Linux_lsof追蹤程序或使用者恢復刪除檔案

當Linux計算機受到入侵時,常見的情況是日誌檔案被刪除,以掩蓋攻擊者的蹤跡。管理錯誤也可能導致意外刪除重要的檔案,比如在清理舊日誌時,意外地刪除了資料庫的活動事務日誌。有時可以通過lsof來恢復這些檔案。 當程序打開了某個檔案時,只要該程序保持開啟該檔案,即使將其刪除,它依然存在於磁碟中。這意味著,程序

git恢復刪除檔案之ls-files

如果一個檔案不小心被刪除了,可以有兩種方法恢復: 1、需要記住所需恢復檔案的名字和版本號(commit id)      git checkout commit_id -- file_name 如果不加commit_id,那麼git ch

MyEclipse 更新後返回上一個版本(恢復刪除檔案功能)

  恢復檔案: 選中你需要恢復檔案的package/File,右擊==》Restore from Local History.. 然後直接選中你需要恢復的檔案就OK了。 恢復類語句塊: 選中你需要恢復的塊,右擊==》Replace with=》previous from L

SVN~恢復刪除檔案

SVN刪除檔案 一、本地刪除 SVN刪除檔案中的本地刪除,指的是在客戶端delete了一個檔案,但還沒有commit,使用revert來撤銷刪除。 二、伺服器刪除 1.通過本地刪除後提交伺服器 a)Update上一個版本,但只適用於修改較少的情況;

如何使用救援模式進行恢復錯誤刪除程序或者庫文件所以以來的共享庫

光盤 測試 過程 tin 自用 term 讀寫 sha 生產 1.為了實驗先進行刪除。。例如。。ls的依賴庫是。。我們把。libacl.so.1進行刪除了。在使用ls就會進行相應的報錯 2.重啟系統。在載入中讀條中 esc (註意 只能點一次。點多了。進入救援模式的選

Linux中恢復仍在活動程序中的已刪除檔案

許多情況下,刪除的檔案都可以恢復,比如在該檔案有活動的程序在操作它,並且目前被單個或多個使用者使用時。在 Linux 系統中,每個當前正在執行的程序都會獲得 ID,其被稱之為程序識別符號 “PID”,並將它們存放在 /proc 目錄中。這正是我們恢復仍在執行的程序中(具有

【轉帖】 Windows中解決刪除檔案時提示被程序佔用的問題

原文連結是:https://blog.csdn.net/caodinke/article/details/45101119 應用背景:   windows作業系統中,有時我們關閉程式後,一些相關的程序仍在後臺執行,並訪問著一些檔案,使得我們無法對這些檔案及其所屬的資料夾進行刪除、重新命名等操

.adobe字尾勒索病毒刪除+檔案恢復(Dharma家族)

Dharma勒索病毒繼續構建其密碼病毒的新變種,這些變種遍佈全球的計算機。.adobe字尾勒索病毒作為最新變體已經開始活躍起來 Dharma的當前變體通過將.adobe副檔名附加到檔案來加密檔案,使其無法訪問。它也可以像以前的版本一樣新增唯一的標識號。所有加密檔案都將作為次要檔案接收新副檔名

刪除檔案或資料夾不成功,顯示被程序佔用的解決方法

 我是在解除安裝SQLServer2008的最後一步,刪除c盤下的program Files下Microsoft SOL Server資料夾下的90資料夾時出現該錯誤。解決方案如下: 1.開啟工作管理員,點選標題欄的效能,在點選資源監視器,在標題欄裡點選cpu,再在關聯的控制代碼裡搜尋

【MATLAB】Matlab刪除檔案或者檔案

Matlab刪除檔案基本操作 刪除一個檔案:delete(filename) 刪除一類檔案:delete(‘*.字尾’) 刪除資料夾及資料夾下的檔案:rmdir(資料夾名字,‘s) 程式碼如下: % get multiply station observe path destin

Linux檢視磁碟用量,以及殺死已刪除檔案程序

Linux檢視磁碟用量 命令 df -l df -h #易讀模式顯示 Linux檢視當前資料夾使用磁碟用量 #進入資料夾 du -sh 已刪除檔案可能還有程序在使用 找出這些程序的命令 1、如果你知道檔名的話:lsof | grep nohup.out,找到

Vim刪除檔案到行首或者行尾

vim用的不是很熟練,只是有時候需要的時候會學習一下 我們知道,vim有三種模式,一種是一般模式,一種是編輯模式,另外一種是命令列模式 在一般模式下,可以進行刪除,複製貼上等操作,在編輯模式下可以編輯檔案,在命令列模式下就是儲存,讀取檔案了 現在我的問題背景是這樣的

使用extundelete恢復測試liunx的刪除檔案

環境:rhel6.5給虛擬主機新增一塊磁碟,磁碟為/dev/vdb 格式化ext4格式,因為它恢復只支援ext2,3,4等格式[[email protected] ~]# mount /dev/vdb /mnt/disk/[[email protected] ~]# cd /mnt/dis

C# 匯出excel後,刪除檔案提示 正由另一程序使用,因此該程序無法訪問此檔案

原始碼 path = Server.MapPath("~/TemporaryFile/"); if (false == System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(p

Linux恢復誤刪刪除檔案,釋放刪除空間

參考網址https://www.cnblogs.com/z-sm/p/6108689.html 鍵入命令:lsof |grep deleted 找到刪除的檔案。 恢復程序號為1464的檔案 需要先建立路徑/home/hadoop/zktmp/version-2 cat /

git操作總結(6):刪除檔案以及刪除檔案恢復檔案

1.確實要從版本庫中刪除該檔案 (1)那就用命令git rm刪掉 git rm test06add.txt (2)並且git commit: git commit -m "first delete" (3)推送到遠端資料庫 git push 2.刪錯了 (1)

Intellij IDEA如何恢復刪除檔案或資料夾

不小心刪除了IDEA專案的檔案或者資料夾 怎麼恢復?下面介紹兩種方法: 1. 方法1 例如將如圖的檔案刪除,最簡單最直接的方法就是CTRL+Z 如果ctrl+z不能返回 並且還有可能出現混亂 這個時候我們對這個資料夾點右鍵,選擇Local HIstory-Show Histtory 出

電腦刪除檔案如何恢復?比較適用的方法

  電腦刪除檔案如何恢復?在辦公的時候我們都會遇到恨到未知的問題,在辦公的時候經常會出現刪除檔案的情況,一般我們刪除的檔案都是一些不需要的檔案了,在刪除檔案的時候也會不小心刪除了一些需要的檔案,我們在電腦刪除的檔案如何恢復呢?   我們在使用電腦的時候經常會遇到檔案刪除的情況,但是卻不知道該怎麼

恢復誤刪的程序在使用的檔案【轉】

轉自:https://www.cnblogs.com/276815076/p/5473185.html 原理:在Linux系統的/proc 分割槽下儲存著程序的目錄和名字,包含fd(檔案描述符)和其下的子目錄(程序開啟檔案的連結),那麼如果刪除了一個檔案,還存在一個 inode的引用:/proc/程序號/f