rootユーザーでいるときに、一般ユーザーにスイッチしてコマンドを実行する方法 / Mojolicious
rootユーザーでいるときに、一般ユーザーにスイッチしてコマンドを実行するには、以下のようにsuの-cオプションを使用します。
su - ユーザー名 -c コマンド
最近はWebアプリケーションを作成しているのですけれど、rootユーザーから一般ユーザーにスイッチして、アプリケーションを実行する一番よい方法はなにかなぁと最近考えています。これは、サーバーが起動したときに、自動的にWebアプリケーションを実行したいし、rootユーザーからWebアプリを管理したいからです。
suとsudoはどちらがいいかなぁと考えているのですがsudoは端末(tty)からではないと実行できないというデフォルトの設定が入っていることがあるため、suのほうがいい気がします。コマンドをダブルクォートで囲まないといけないのが、すこし面倒ですけども。
サンプルとしては次のようなシェルを記述します。
#!/bin/sh PERL_BIN=/home/gitprep/perl5/perlbrew/perls/perl-5.16.3/bin su - gitprep -c "PATH=$PERL_BIN:$PATH /home/gitprep/webapp/gitprep/gitprep $*"
PATHをきちんと設定してあげる必要あるところもポイントです。なぜなら端末にログインしているわけではないのでPATHの編集を行っている.bashrcが読み込まれないからです。どのPerlを使うのかは、デフォルトのPerlをつかない場合は指定する必要があります。