私の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
sudo
HOME
新規ユーザーに対して変数が必ずしも更新されるわけではありません。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
。