ホームフォルダと個人の.bashrcファイルなしでシステムユーザーとしてログインした場合は、どのようにコマンドを実行できますか?

ホームフォルダと個人の.bashrcファイルなしでシステムユーザーとしてログインした場合は、どのようにコマンドを実行できますか?

/etc/passwdファイルでこのユーザーのホームフォルダを設定しましたが、ログイン時にPython virtualenvを有効にしたいと思います。プライベート.bashrcファイルがある場合は、activateそのファイルにコマンドを含め、ディレクトリをvirtualenvを有効にした後にフックに変更します。

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

ログイン時に各ユーザーに対して異なるコマンドを実行する方法は? (1つのコマンドを実行するだけです。)

これらのユーザーはSSHのみを使用してログインし、suSSHを使用しません。マシンは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.

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

ログイン時にコマンドを実行する別の方法は次のとおりです。pam_execPAMスタックに。ただし、これを正しく使用することは、プログラムの実行時に非常に面倒であることに注意してください。オリジナルこれは、ターゲットユーザーではなくユーザーまたはrootユーザーであり、元のユーザーが選択した環境で実行されるため、rootとして実行するとセキュリティが困難になります。

関連情報