我有一個 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