シェルスクリプトからユーザーを変更して環境全体をロードする

シェルスクリプトからユーザーを変更して環境全体をロードする

ユーザーを変更していくつかのRubyデーモンを起動する起動スクリプトに問題があります。

過去には、対応bash -c "do the business" -l someuserするフラグを使用して-lログインをシミュレートしました。

これはこれまでうまく機能しており、Rubyプロセスで次のエラーが発生し続けます。require: no such file to load -- rubygems (LoadError)調査した結果、このエラーはスクリプトをルートとして実行したときにのみ発生することがわかりました。つまり、スクリプトをsudo suroot として実行するか、ランタイムを開始して実行するときです。 )。

パスを手動で最初に設定すると問題が解決したので、これはPATHの問題だと思います。

ユーザーを変更してロードする方法はありますか?みんな環境?

私も試してみsu user -cましたsudo


テストを簡単にするために「ルートアップ」(sudo su)して実行しますwhich bundle(バンドルはルビーです)。

これが私が得るものです:

  • sudo -i -u webuser which bundle# => 出力なし
  • su -l webuser -c which bundle# => 出力なし
  • sudo su - webuser -c which bundle# => 出力なし

ただし、SSH経由でネットワークユーザーとしてログインします。

  • which bundle# => /opt/ruby/bin/bundle

ベストアンサー1

を使用すると、sudo su - user -cパスを受け取ったユーザーとしてログインします。だからsu user違うのですsu - user

ただし、ファイルにパスを設定すると、.bashrc対話型セッション(たとえば、そのユーザーとしてSSHログイン)にのみ適用されます。

.bash_profile代わりにorを使用する必要があります/etc/profileこれ

おすすめ記事