剪切板是一個安全問題 – 在 Linux 中你可以用 xclip 和 cron 修復它
更新:我原文推薦的是 xsel,但幾個用戶報告說它禁用了他們的聲音。這對我來說不是問題,但我發現了另一種方式(使用 xclip )來實現同樣的目標,這樣應該就能迴避這個問題。文章已更新,切換到了 xclip。
在你的操作系統上複製/粘貼的能力是必不可少的。無論你寫的是代碼還是劇本,這兩個功能是在計算機上處理文本的核心。當你複製文本時,它會進入內存駐留的剪貼板。除非安裝了可以容納多個條目的剪貼板管理器,否則剪貼板默認情況下只會處理一個複製事件,當你複製其他東西的時候,它之前的條目才會消失。在標準 Linux 設置中,剪貼板內容存儲在控制它的程序的內存中(通常是 Xorg)。
剪貼板應該有所限制,因為任何程序都可以讀取其內容,如果放任它,它保存的東西就會一直呆在那裡。此外,現代瀏覽器允許惡意網站以多種方式從剪貼板讀取(和寫入)。
雖然不是默認設置,但瀏覽器可以設置為禁止訪問剪貼板。雖然也有用於瀏覽器和操作系統管理剪貼板的附加組件,但是,在此鏈條的源頭解決問題更容易、更可靠,並使系統範圍內的剪貼板安全。有很多理由使用一個剪貼板,但沒有足夠的理由讓內容在那裡保留一兩分鐘以上。
密碼管理器最近變得很受歡迎,如果你使用過的話,你已經了解了它們如何將密碼複製到剪貼板,以便你可以將其粘貼到瀏覽器中,並登錄到你的帳戶。接下來會發生什麼?你的密碼會保留在剪貼板上,直到另一個複製事件或重新啟動。
即使你使用單獨的瀏覽器來處理銀行等事務,複製密碼時,通過剪貼板會將其帶回其他瀏覽器,並將其暴露在基於 web 的剪貼板收集技術中。
我的解決方案是在後台進行處理,每分鐘自動清除剪貼板的內容。它使用 xclip 這個命令行工具、一個小腳本和 cron。cron 的一分鐘間隔給你足夠的時間來複制密碼,然後它會清空剪貼板。此動作會每分鐘執行一次,保證複製無憂。
我們需要使用 xclip 工具清除終端中的剪貼板。在基於 apt 的發行版中,輸入:
sudo apt-get install xclip
我們在終端中測試一下程序。首先從某處複製一些文字,複製到其他地方,並輸入這兩條命令:
touch blank
xclip -selection clipboard blank
接著再次嘗試複製文本 - 它應該就會消失了。現在把這個命令放在腳本中。創建一個腳本(用你的文本編輯器代替 leafpad):
leafpad nukeclipboard.sh
並在新文件中輸入下面的內容:
#!/bin/sh
touch blank && xclip -selection clipboard blank
保存並關閉文件,接著加上可執行許可權:
chmod +x nukeclipboard.sh
現在讓 cron 任務每分鐘運行一次。首先要小心,不同的發行版有不同的 cron 選項。以下設置適用於 Ubuntu(基於)的發行版,並且在你的發行版中過程可能不同,因此請閱讀手冊。
要設置 cron 任務,請在終端輸入:
crontab -e
在最後被注釋掉的行後,輸入下面的行(將 /home/user/
替換為你的腳本位置):
* * * * * export DISPLAY=:0 && /home/user/nukeclipboard.sh
現在按下 ctrl-o
保存(使用你的 cron 任務編輯器的保存快捷鍵),然後點擊回車保存你的 crontab。最後,按下 ctrl-x
退出程序。從現在起,你的剪貼板的使用壽命為一分鐘。
關於上面的 cron 條目的解釋: cron 有環境變數的限制,當它失敗時,你可能要花一整天試著一百種方法來解決它。在我找到了一個建議設置 DISPLAY 的快速修復 後,就解決了。感謝 Mike Q 的貢獻。
現在,可能會發生當你要粘貼複製的東西時,正好剪貼板被清空,從而無法粘貼,但它只是安全的一個小的代價。 如果這是一個問題,您可以配置 cron 以任何適合您的間隔運行任務(比如 2 分鐘)。 Ubuntu 的說明在此頁。
我希望這個教程能幫助你把剪貼板鎖定下來 - 如果你有可以工作的腳本或者更好的方法,歡迎來做評論。
作者:dmt 譯者:geekpi 校對:jasminepeng
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive