Cron

我如何“鎖定”我的 Linux 機器幾個小時?

  • March 6, 2020

由於我過度使用我的電腦,我想將它屏蔽幾個小時,例如每天從 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

我建議兩管齊下的攻擊:

  1. 設置一個腳本(通過 root 的 crontab),它將在 2300 小時關閉(掛起)電腦。將其設置為從 2300 到 2315 每分鐘執行一次,以防萬一某些事情取消了第一個。這會讓你在睡前踢出去。
  2. 如果時間在 2300 到 0700 小時之間,請在您的~/.bashrc和 root 使用者中設置一個停止系統的命令。這將阻止在這些時間登錄。

但是,正如我在評論中提到的那樣,您可以設置的任何內容都不會是萬無一失的*。*您對自己的盒子有 root 訪問權限。

這是為人類問題尋找技術解決方案的經典範例;如果您想在 2300 到 0700 小時之間睡覺,則需要通過其他方式處理這一點上的自律。Root 無法為您做到這一點,因為您root。這承擔個人責任。

關於這一點,我有很多非常實用的資訊,但我會保留它,因為它會離題。:)

引用自:https://unix.stackexchange.com/questions/322294