为 /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。您可以为其提供一个真正的 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
    

相关内容