簡體   English   中英

如何防止用戶刪除JVM正在使用的文件

[英]How to prevent user from deleting a file which is being used by JVM

我有一段JAVA代碼,它讀取一些文件,並將它們保存到內存中一段時間​​。 讀取后保留文件句柄。 我的問題是我想限制用戶使用“DEL”鍵或rm命令刪除這些文件。

我可以通過保留文件句柄在Windows上實現相同的功能,而在Unix上,rm不承認對文件的鎖定。 我甚至嘗試過Filechannel.lock()但它也沒有幫助。

任何建議表示贊賞。

只要您打開句柄,他們就可以從目錄中刪除該文件,但是他們無法刪除該文件。 即,在關閉文件或進程終止之前,文件不會被刪除。

我甚至嘗試過Filechaanel.lock(),但它也沒有幫助。

那是因為它是目錄,而不是正在改變的文件。 例如,如果他們對文件具有寫訪問權但對目錄沒有刪除權限。

您還可以查看可用於鎖定文件的chattr

chattr +i filename

應該渲染文件不可刪除。 然后,您可以通過...再次刪除它

chattr -i filename 

沒有純Java解決方案。 事實上,我認為沒有任何解決方案可能沒有潛在的惡劣后果。 根本問題是UNIX / LINUX無法臨時在文件上放置強制鎖定。 (用於鎖定文件的Linux系統調用是flock ,但是flock風格的鎖是自行決定的。一個不費心去flock文件的應用程序不會受到文件上其他應用程序鎖的影響。)

您可以做的最好的事情是使用chattr +i在文件上設置“immutable”屬性。 不幸的是,這有其他影響:

  • 不可變文件無法寫入或鏈接到任何一個。

  • 如果您的應用程序在未取消設置屬性的情況下崩潰,則會向用戶留下他/她神秘無法更改或刪除的文件。 甚至沒有sudo或su。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM