ホーム フォルダーも個人の .bashrc ファイルもないシステム ユーザーのログイン時にコマンドを実行するにはどうすればよいですか?

ホーム フォルダーも個人の .bashrc ファイルもないシステム ユーザーのログイン時にコマンドを実行するにはどうすればよいですか?

これらのユーザーのホーム フォルダーは /etc/passwd ファイルで設定しましたが、ログイン時に Python 仮想環境をアクティブ化したいと思います。個人.bashrcファイルがある場合は、そこにコマンドを含めるだけactivateで、仮想環境を使用したアクティブ化後のフックとしてディレクトリが変更されます。

ただし、これらのユーザーにはホーム フォルダーがなく、個人.bashrcファイルもありません。

これらのユーザーごとにログイン時に異なるコマンドを実行するにはどうすればよいですか? (実行する必要があるコマンドは 1 つだけです。)

これらのユーザーは のみを使用してログインしsu、SSH は使用しません。マシンは、Ubuntu 12.04.3 LTS を実行している VPS です。

答え1

実行する各ユーザーのステートメント/etc/profiile.dを含むファイルをシステムのディレクトリに追加できます。if/thenvirtualenv

次のようなファイルを作成したとします/etc/profile.d/me.sh

if [ "$USER" == "saml" ]; then
  touch /tmp/samsfile
fi

実行可能にする:

$ chmod +x /etc/profile.d/me.sh

次にsaml、としてログインしますsu:

$ su saml

一時ファイルが作成されたかどうかを確認すると、次のようになります。

$ ls -l /tmp/samsfile 
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile

答え2

環境変数を定義するだけであれば、~/.environmentユーザーのホームディレクトリに、より複雑なシェル スニペットを配置できます~/.profile

すべてのユーザー アカウントには、たとえそれが自分のものでなくても、ホーム ディレクトリがあります。ホーム ディレクトリが存在しないアカウントも作成できますが、そのようにしてもあまり意味がありません。必要に応じて、これらのユーザーのホーム ディレクトリとして、root が所有する単一のディレクトリを使用できます。

ログイン時にコマンドを実行する別の方法としては、pam_execPAMスタックに追加します。ただし、これを正しく使用するのは非常に難しいことに注意してください。なぜなら、プログラムはオリジナルターゲット ユーザーではなく、ユーザーまたは root として実行され、元のユーザーが選択した環境で実行されるため、root として実行している場合は安全を確保することが困難です。

関連情報