我有一个 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。您可以为其提供一个真正的 shell,如 /bin/bash,同时阻止该帐户(使用passwd -l
),这样您就无法远程使用该帐户登录,从而使其更安全一些。
答案2
要更新 $PATH,需要添加以下行
导出 PATH=$PATH:/usr/local/bin
根据机器类型和服务器/客户端,文件名会改变:
对于 redhat 机器:
sensu 客户端
/etc/sysconfig/sensu-client
sensu 服务器
/etc/sysconfig/sensu-server
对于 Debian 机器:
sensu 客户端
/etc/default/sensu-client
sensu 服务器
/etc/default/sensu-server