Linux

在命令上執行 shell 腳本

  • December 22, 2010

我想在date -s <string>使用命令時執行一個 shell 腳本。例如,我想通過在 shell 腳本中執行以下命令將命令記錄到文件 /tmp/user.log

logger -p user.notice "date -s command executed" -f /tmp/user.log

在 shell 上執行時如何執行 shell 腳本date -s <string>

為了使其更通用,我想在其他人在我的系統上發出特定的 linux 命令時執行我的 shell 腳本。這該怎麼做?

重新表述這個問題,您想知道何時有人嘗試設置系統時間。這正是audit子系統的用途……它允許您審核特定係統呼叫的執行。在這種情況下,您想知道何時有人呼叫任何可以更改系統時間的各種系統呼叫。通過使用該audit子系統,無論是有人呼叫/bin/date還是他們自己本地建構的命令版本,您都有一個可以正常工作的解決方案。

有關規則語法的完整描述,請參閱auditd(8)audit.rules(7),有關審核時間更改操作的範例,您可以在範例nispom.rules文件中查找“時間更改”。您可以在本地系統上找到它,也可以在這裡找到它:

有關audit子系統的更多資訊(文件有點難找):

您不能輕易地阻止使用者執行他自己的程序版本,但如果您假設使用者不是惡意的,則很容易:

  1. 創建一個記錄程序然後執行它的包裝腳本(使用原始參數)
  2. 確保包裝器替換使用者路徑中的原始程序。

您可以使用別名讓使用者使用包裝器,或者您可以簡單地移動/重命名原始程序並將包裝器放在原始位置。

如果您只想記錄一些執行,請在包裝腳本中使用正則表達式。

引用自:https://serverfault.com/questions/214826