$ HOMEを変更しないようにUbuntuでsudoを設定し、この動作を無効にするにはどうすればよいですか?

$ HOMEを変更しないようにUbuntuでsudoを設定し、この動作を無効にするにはどうすればよいですか?

Ubuntu 12.04でsudo -s$ HOME変数が変更されていないため、一般ユーザーの場合は次のようなregularuser状況になります。

$ cd
$ pwd
/home/regularuser
$ sudo -s
# cd
# pwd
/home/regularuser

ずっと前にUbuntuをあきらめたので確信はありませんが、これがデフォルトの動作だとします。だから私の質問は次のとおりです。

  1. あなたはそうしなかった方法?構成はどこにありますか?
  2. どうやって無効にしますか?

編集する: 答えてくれてありがとう。状況はもう少し明確になりましたが、私が望む答えを得るためにいくつかの質問を追加する必要があるようです。

  1. Debianはsudo -s$ HOME変数をに変更します/rootman sudo回答から得た内容と実行したシェルはsudo -sに記載されています/etc/passwd
  2. /etc/passwdただし、UbuntuとDebianの両方でルートシェルは同じです。どちらのシステムも$ HOMEに関する限り、違いやファイルが/bin/bash見つからないため、動作は異なります。.profileこれに役立ちますか?.bashrcsudo -s

ベストアンサー1

Sudoには多くのコンパイル時設定オプションがあります。お使いのバージョンに記載されている設定を使用できますsudo -V。 Debian wheezy と Ubuntu 12.04 の設定の違いの 1 つは、HOME環境変数が Ubuntu では維持されますが Debian では維持されないことです。両方のディストリビューションは、安全に保管するために明示的に示されているいくつかの環境変数を除いて、すべての環境変数を削除します。そのため、Ubuntuには残りますが、sudo -sDebianでは削除され、ターゲットユーザーのホームディレクトリに設定されます。HOMEHOMEsudo

することができますsudoers文書。ファイルをvisudo編集するには実行してください。sudoersいくつかの関連オプションがあります:

  • env_keepどの環境変数が保持されるかを決定します。Defaults env_keep += "HOME"呼び出し側のHOME環境変数を保存または削除するために使用されますDefaults env_keep -= "HOME"(そして、ターゲットユーザーのホームディレクトリに置き換えます)。
  • env_reset環境変数をリセットするかどうかを決定します。特定のコマンドの実行を許可するルールには環境変数のリセットが必要な場合がよくありますが、ランダムなコマンドの実行を許可するルールの環境変数のリセットには直接的なセキュリティ上の利点はありません。
  • always_set_home有効にすると、無効にHOMEなっているか、リストに含まれていても上書きされます。このオプションを維持しないと効果はありません。env_resetHOMEenv_keepHOME
  • set_homeに似ていますalways_set_homeが、これにのみ適用され、明示的なコマンドで呼び出すときは適用されsudo -sません。sudo

これらのオプションは、特定のソースユーザー、特定のターゲットユーザー、または特定のコマンドに対して設定できます。sudoers詳しくはマニュアルをご覧ください。

HOMEオプションを渡すことで、特定の呼び出しを無視するようにいつでも選択できます。sudo-H

シェルが絶対上書きされない値ですHOME。 (HOME設定されていない場合は設定されますが、sudo常にHOME何らかの方法で設定されます。)

を実行すると、sudo -i初期sudoログインがシミュレートされます。これには、HOMEターゲットユーザーのホームディレクトリを設定して呼び出すことが含まれます。ログインシェル

おすすめ記事