/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 は、.profilebash でユーザーがログインした後にソース化されます。私の理解では、ログイン シェルはまったくありませんが、設定の目標を達成するに$PATHはどうすればよいでしょうか。

ところで、実行することでsudo su - sensu -s /bin/bash.profile が正しくソース化されたことを確認しましたが、sensu クライアントは python チェック スクリプトを実行しますが、bash は実行されないため、これはあまり意味がありません。

を に/etc/passwd変更するように修正できますか。これにより問題が発生しますか?/bin/false/bin/bash

答え1

すでにお気づきのとおり、sensu ユーザーのシェルは なので/bin/false、シェルはまったくありません。/bin/bash のような実際のシェルを提供すると同時に、アカウントをブロック ( を使用passwd -l) して、そのアカウントでリモートからログインできないようにすることで、安全性を少し高めることができます。

答え2

$PATHを更新するには、次の行を追加する必要があります

エクスポート PATH=$PATH:/usr/local/bin

マシンの種類とサーバー/クライアントに応じてファイル名は変わります。

Redhat マシンの場合:

  • センスクライアント

     /etc/sysconfig/sensu-client
    
  • センスサーバー

     /etc/sysconfig/sensu-server
    

Debian マシンの場合:

  • センスクライアント

     /etc/default/sensu-client
    
  • センスサーバー

     /etc/default/sensu-server
    

関連情報