新しく作成されたユーザーの$ HOME環境変数が正しくありません。

新しく作成されたユーザーの$ HOME環境変数が正しくありません。

私のUbuntuコンピュータで「olduser」としてログインし、次のように「newuser」を作成しました。

adduser --system --home /usr/share/newuser --no-create-home --ingroup newgroup --disabled-password --shell /bin/false newuser

これにより、新しい行が追加されます。

newuser:x:104:1001::/usr/share/newuser:/bin/false

私の/etc/passwdファイルに。しかし、 "newuser"(マシンにsshingまたはshellでnewuser実行sudo -u newuser bash)としてシステムにログインすると、私のホームディレクトリが/home/olduser

echo $HOME

与えられた

/home/olduser

上記と同じコマンドはDebianシステムでは期待どおりに機能しますが、Ubuntuシステムでは機能しません。

なぜこれが起こるのですか?

コマンドを使用してホームディレクトリを変更してみました。

usermod -m -d /usr/share/newuser newuser

これも役に立ちません。

答え1

sudoHOME新規ユーザーに対して変数が必ずしも更新されるわけではありません。HOME更新するには、-Hまたは-iオプションを使用してください。たとえば、

sudo -Hu newuser bash

または、/etc/sudoersファイルに次の行を追加して他の関連変数をsudo自動的に更新することもできます。HOME

Defaults        env_reset

多くのディストリビューションでは、既にこの設定がデフォルト設定env_resetになっています。

文書

man sudo環境変数を説明するセクションで:


-i または -H を指定するか、sudoers に env_reset または Always_set_home を設定するか、sudoers に -s オプションを指定して set_home を設定すると、HOME がターゲット・ユーザーのホーム・ディレクトリーに設定されます。

また、見ることができますman sudoers

関連情報