我需要使文件不可刪除,但允許它可修改和重命名

我需要使文件不可刪除,但允許它可修改和重命名

我有一個腳本來檢查文件是否存在,如果存在,請從中讀取電子郵件地址清單以發送通知。當我不需要通知時,例如,當我在工作中已經監視輸出時,我會重新命名它。我只是不希望其他管理員刪除它。

我知道chattr +i會使文件不可變,但我只想防止文件被刪除。我認為 chattr 程式將使用索引節點號來追蹤屬性而不是檔案名稱。

有沒有一個實用程式可以實現這一點?

答案1

關於“其他管理員”的評論暗示您已經root您想要儲存檔案的系統的權限。您可以透過權限方式設定的任何內容都可以由具有相同權限的人撤銷。

如果這不是問題,並且沒有人具有擴展權限,那麼您可以簡單地將文件放入/tmp/var/tmp中,該文件通常設置了 t 位元(防止其他人特權用戶來自刪除它。您可以 chmod 檔案以使其可組寫入(並且可由同一組中的其他人修改)。

答案2

「其他管理員」是惡意的嗎?他們是來抓你的嗎?如果是的話,您可能無能為力。

如果沒有,也許最簡單的解決方案是更改腳本以將文件放入主目錄中。對此的變體是在不同的目錄中建立指向檔案的硬連結;只要他們不刪除(取消連結)全部鏈接,文件仍然完好無損。 (您應該編寫另一個腳本來遍歷所有連結位置,找到仍然存在的連結位置,然後重新連結所有已刪除的連結位置。)請注意,某些編輯器會斷開連結(即,如果您編輯文件) 。

即使「其他管理員」是惡意的和/或想要抓你,如果他們缺乏經驗且不徹底,這也可能解決問題。

或使文件不可變,並更改腳本以使用其他測試來確定是否發送電子郵件。

答案3

對於其他一些答案中提出的觀點,您可以使用該mv實用程式來建議社交障礙:

mv yourfile THIS_IS_user38537_FILE_PLEASE_DO_NOT_REMOVE

答案4

[替換舊答案]

您可以簡單地建立一個到該文件的硬連結:

ln email_file hard_link

然後,如果它被刪除,它仍然存在並且可以輕鬆恢復。


[舊答案,基於對問題的誤解]

一種解決方案是使腳本本身不可變chattr,但打開和關閉它,不是透過重命名它,而是透過存在或不存在可以承受丟失的空文件。稱之為,說, snoozebutton。如果存在,腳本不會通知。如果不存在,腳本會發出通知。如果有人不小心刪除了它,那麼這樣做會安全失敗:您會收到通知,並且還會收到snoozebutton.

當然,這是假設您不需要經常修改腳本。如果您這樣做,您將需要執行一個小實用程式腳本chattr,然後執行編輯器,然後chattr再次執行以鎖定它。

相關內容