有沒有辦法在Linux中創造一個可以被任何人殺死的進程?

有沒有辦法在Linux中創造一個可以被任何人殺死的進程?

例如,我想在 Ubuntu 伺服器上秘密地在後台運行一個進程,但是每當除我之外的任何人登入伺服器時,該進程都必須被該用戶殺死。是否可以建立這樣的流程? (我有帳號sudo,可以修改/etc/bash.bashrc

謝謝!

答案1

請注意,以下內容可能會以各種方式損害您的系統安全。

建立一個腳本來負責終止您的進程(讓我們稱之為進程 P)。然後授予所有使用者在 sudoers 中執行此腳本的權限。最後使用 sudo into 對此腳本添加合適的呼叫/etc/bashrc

舉例來說,假設您知道您的進程是從何處啟動的/usr/local/sbin/myproc,並且您希望在有人登入時立即終止所有這些進程,因此您將使用簡單的 grep 和終止策略來終止它們。

因此,首先將以下內容放入/usr/local/sbin/killmyprocs

#!/bin/sh

ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1

# end of file.

如果你真的繼續並實現這個,你可能想要一些稍微複雜的東西。因此,請確保建立腳本來捕獲適當的訊號,並且通常以安全的方式執行操作。

/etc/sudoers其次,透過新增以下內容來授予所有使用者執行此腳本的權限:

ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs

第三步,也是最後一步,是將 sudo 呼叫添加到您的腳本中/etc/bashrc

[ "`id -n -u`" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs

替換為您自己的帳戶,以避免在您自己登入時殺死您的「秘密」進程。

總結一下:1)創建一個不產生輸出但殺死您想要殺死的進程的腳本,2)/etc/sudoers為系統上的每個用戶添加適當的條目,以便能夠以 root 身份執行該腳本,3)添加對您的腳本透過sudo /etc/bashrc(或/etc/profile)。

警告:(/etc/bashrc/etc/profile就此而言)僅取得互動式 shell 的來源。這意味著使用者可以輕鬆地執行 ssh yourhost 'ps auxw' 並從進程表中找到您的進程,它不會被上面介紹的機制殺死,因為不參考 shell 初始化檔案。有一種方法可以解決這個問題,即ForceCommand在「sshd_config」中使用,但這留給讀者作為練習。

最後,我想再次提醒一下,這有明顯的安全隱患。這聽起來也很像試圖在一個你沒有完全訪問權限的系統中設置後門,但這並不是我真正關心的問題(如果你必須向超級用戶詢問這些事情,無論如何你很快就會被抓住) 。

答案2

「進程必須被該用戶殺死」是什麼意思?

A)您希望使用者殺死他/她不擁有的進程?

製作腳本來終止進程,然後設定 setuid chmod u+s(這可能是一個巨大的安全漏洞,除非您知道自己在做什麼。)

或者

B) 您希望進程注意到使用者登入並殺死自己嗎?

嗯,這就是你會做的事。

相關內容