Centos

是否可以讓守護程序以另一個使用者身份執行程序而無需超級使用者守護程序?

  • January 4, 2016

我目前正在開發一個項目,我有一個需要以另一個使用者身份執行程序的守護程序。如果可能,我希望守護程序不要以 root 身份執行。但是,我正在努力弄清楚如何最好地做到這一點。

僅供參考,以下所有內容目前都在 python 中完成,但我不必使用 python。

我有一個 PAM 和 Kerberos Auth (GSSAPI) 的原型,我可以在其中成功地對使用者進行身份驗證。現在,如果我執行一個超級使用者守護程序,那麼我可以呼叫作業系統並使用以下命令生成程序,

ksu kerbuser -c "/bin/bash authed-process.py"

據我所知,這是安全的,因為為了進行欺騙,您需要 krbtgt 或使用者密碼。

因此,我考慮的另一件事是將使用者密碼儲存在 python 使用者 getpass 中,然後傳遞該密碼(這是一個非常不安全的解決方案)。我不會那樣做的。

我在想的最後一件事……如果我使用 kerberos 票證,我是否認為我可以使用“ksu”命令行工具以該使用者的身份生成一個程序?我只是在做 POC,但認為這裡有人可能有更好的方法來做到這一點?是否沒有執行可以作為經過身份驗證的使用者執行程序的非特權守護程序的標準?

這是我的第一篇文章,所以如果您認為這更適合其他地方,請告訴我。

乾杯,

摩根

萬一其他人對答案感興趣…

似乎實現這一點的方法是使用可轉發的 kerberos 票證。然後可以使用 gssapi 轉發票證,並且在伺服器端,票證可以與問題中的 ksu 命令一起使用,以作為所述使用者生成程序。

ksu kerbuser -c "/bin/bash authed-process.py"

此命令將在記憶體中查找使用者 kerberos 票證,然後執行該程序。但是,客戶端-伺服器 gssapi 必須具有特權,因為只有特權 (root) 使用者才能查看 keytab 文件。

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