[英]How to prevent user from deleting a file which is being used by JVM
我有一段JAVA代碼,它讀取一些文件,並將它們保存到內存中一段時間。 讀取后保留文件句柄。 我的問題是我想限制用戶使用“DEL”鍵或rm命令刪除這些文件。
我可以通過保留文件句柄在Windows上實現相同的功能,而在Unix上,rm不承認對文件的鎖定。 我甚至嘗試過Filechannel.lock()
但它也沒有幫助。
任何建議表示贊賞。
只要您打開句柄,他們就可以從目錄中刪除該文件,但是他們無法刪除該文件。 即,在關閉文件或進程終止之前,文件不會被刪除。
我甚至嘗試過Filechaanel.lock(),但它也沒有幫助。
那是因為它是目錄,而不是正在改變的文件。 例如,如果他們對文件具有寫訪問權但對目錄沒有刪除權限。
沒有純Java解決方案。 事實上,我認為沒有任何解決方案可能沒有潛在的惡劣后果。 根本問題是UNIX / LINUX無法臨時在文件上放置強制鎖定。 (用於鎖定文件的Linux系統調用是flock
,但是flock風格的鎖是自行決定的。一個不費心去flock
文件的應用程序不會受到文件上其他應用程序鎖的影響。)
您可以做的最好的事情是使用chattr +i
在文件上設置“immutable”屬性。 不幸的是,這有其他影響:
不可變文件無法寫入或鏈接到任何一個。
如果您的應用程序在未取消設置屬性的情況下崩潰,則會向用戶留下他/她神秘無法更改或刪除的文件。 甚至沒有sudo或su。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.