これらのユーザーのホーム フォルダーは /etc/passwd ファイルで設定しましたが、ログイン時に Python 仮想環境をアクティブ化したいと思います。個人.bashrc
ファイルがある場合は、そこにコマンドを含めるだけactivate
で、仮想環境を使用したアクティブ化後のフックとしてディレクトリが変更されます。
ただし、これらのユーザーにはホーム フォルダーがなく、個人.bashrc
ファイルもありません。
これらのユーザーごとにログイン時に異なるコマンドを実行するにはどうすればよいですか? (実行する必要があるコマンドは 1 つだけです。)
これらのユーザーは のみを使用してログインしsu
、SSH は使用しません。マシンは、Ubuntu 12.04.3 LTS を実行している VPS です。
答え1
実行する各ユーザーのステートメント/etc/profiile.d
を含むファイルをシステムのディレクトリに追加できます。if/then
virtualenv
例
次のようなファイルを作成したとします/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_exec
PAMスタックに追加します。ただし、これを正しく使用するのは非常に難しいことに注意してください。なぜなら、プログラムはオリジナルターゲット ユーザーではなく、ユーザーまたは root として実行され、元のユーザーが選択した環境で実行されるため、root として実行している場合は安全を確保することが困難です。