我如何“鎖定”我的 Linux 機器幾個小時?
由於我過度使用我的電腦,我想將它屏蔽幾個小時,例如每天從 23 點到 7 點,這樣我就無法在那個時間段內使用它。
目前,我習慣於
crontab
在需要時暫停/關閉電腦,並且我每分鐘都這樣做,所以 - 通常 - 如果我嘗試登錄或打開電腦,我只有幾秒鐘的時間再次暫停。問題是那幾秒鐘足以改變 crontab 並鎖定機制。所以,我想在那幾個小時內完全阻止登錄過程(即使是 root!),這樣從 23 點到 7 點,沒有人可以以任何方式訪問電腦。如果我想禁用這種行為,我必須事先做.
那麼,如何配置我的 Linux 機器,以便在幾個小時內沒有人可以登錄?我應該使用 PAM 嗎?如果是,如何?
注意:我想阻止使用 GDM 和 shell 登錄。
另一種方法是禁用滑鼠和鍵盤(假設系統帶有 USB 輸入設備):
00 23 * * * rmmod usbhid 00 7 * * * modprobe usbhid
這不會阻止您關閉並再次打開系統,這將重新啟用鍵盤和滑鼠…如果您想阻止這種情況,您可以將模組列入黑名單,但您可能需要重建您的initramfs 每次(
usbhid
需要在啟動期間很早就載入,因為當系統無法啟動時,您需要一個工作鍵盤來修復問題)。如果
usbhid
是內置在你係統的核心中(例如Fedora),你仍然可以通過解除綁定所有 HID 設備來達到相同的效果;困難的部分是在早上 7 點重新綁定它們——您需要將它們未綁定的驅動程序儲存在某個地方(除非有一種重新列舉它們的方法)。解除綁定所有設備:for device in /sys/bus/hid/devices/*; do echo ${device##*/} > ${device}/driver/unbind done
(當然有適當的錯誤檢查)。要重新綁定,您需要記住
${device}/driver
指向的驅動程序以及驅動程序目錄中echo
的設備標識符bind
。
我建議兩管齊下的攻擊:
- 設置一個腳本(通過 root 的 crontab),它將在 2300 小時關閉(掛起)電腦。將其設置為從 2300 到 2315 每分鐘執行一次,以防萬一某些事情取消了第一個。這會讓你在睡前踢出去。
- 如果時間在 2300 到 0700 小時之間,請在您的
~/.bashrc
和 root 使用者中設置一個停止系統的命令。這將阻止在這些時間登錄。但是,正如我在評論中提到的那樣,您可以設置的任何內容都不會是萬無一失的*。*您對自己的盒子有 root 訪問權限。
這是為人類問題尋找技術解決方案的經典範例;如果您想在 2300 到 0700 小時之間睡覺,則需要通過其他方式處理這一點上的自律。Root 無法為您做到這一點,因為您是root。這將承擔個人責任。
關於這一點,我有很多非常實用的資訊,但我會保留它,因為它會離題。:)