為 /bin/false 用戶設定 $PATH

為 /bin/false 用戶設定 $PATH

我有一個 sensu 用戶:

sensu:x:496:496:Sensu Monitoring Framework:/opt/sensu:/bin/false

$PATH是: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin

我想更新它PATH,這樣當 sensu 觸發我的檢查腳本時,它將使用我側面安裝的 python 版本(安裝在 下/usr/local/bin),因此我想將 sensu 設為PATH

export PATH=$PATH:/usr/local/bin

但是,我已經編輯了 和,/opt/sensu/.bashrc/opt/sensu/.profile沒有用;我在網路上讀過(關聯),.bashrc只有在互動式/非互動式使用者登入後才會獲得來源,但是,作為/bin/false使用者的 sensu,.profile將在使用者使用 bash 登入後獲得來源,我的理解是它沒有登入 shell,但怎麼可能我達到我設定的目標$PATH了嗎?

順便說一句,透過運行sudo su - sensu -s /bin/bash我看到 .profile 的來源正確,但這對我來說沒有什麼意義,因為當 sensu 客戶端運行我的 python 檢查腳本時,它不會有 bash。

我可以修改/etc/passwd/bin/false/bin/bash這會導致問題嗎?

答案1

正如您已經注意到的,您的 sensu 使用者的 shell 是/bin/false,因此它根本沒有 shell。您可以給它一個像 /bin/bash 這樣的真實 shell,同時阻止該帳戶(使用passwd -l),這樣您就無法使用該帳戶遠端登錄,使其更安全。

答案2

若要更新 $PATH,需要新增以下行

導出 PATH=$PATH:/usr/local/bin

根據機器類型和伺服器/客戶端,檔案名稱會發生變化:

對於紅帽機器:

  • 感性客戶端

     /etc/sysconfig/sensu-client
    
  • sensu-伺服器

     /etc/sysconfig/sensu-server
    

對於 Debian 機器:

  • 感性客戶端

     /etc/default/sensu-client
    
  • sensu-伺服器

     /etc/default/sensu-server
    

相關內容