ユーザーを変更していくつかのRubyデーモンを起動する起動スクリプトに問題があります。
過去には、対応bash -c "do the business" -l someuser
するフラグを使用して-l
ログインをシミュレートしました。
これはこれまでうまく機能しており、Rubyプロセスで次のエラーが発生し続けます。require: no such file to load -- rubygems (LoadError)
調査した結果、このエラーはスクリプトをルートとして実行したときにのみ発生することがわかりました。つまり、スクリプトをsudo su
root として実行するか、ランタイムを開始して実行するときです。 )。
パスを手動で最初に設定すると問題が解決したので、これは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
。これ。
答え2
ログインコンテキストの場合は、次を使用します。
sudo -i -u USER COMMAND
su -l USER -c COMMAND