ターミナルで作業し、su
またはSudo
を使用してrootユーザーのアクセス許可でコマンドを実行すると、「非rootユーザー」の構成を適用できますか(そこからこのユーザーのホームディレクトリに保存されているsu
またはSudo
)を呼び出していますか?
たとえば、(root以外のユーザーとしてログオンしている)vim
を使用して構成ファイル/etc/some_file
を編集し、vim構成ファイルが/home/myuser/.vimrc
にあるとします。 。コマンドラインを起動してSudo vim /etc/some_file
と入力すると、「私の」美しく、適切に構成されたvim
が表示されます。しかし、私が得たのは、デフォルト構成でプラグインなどがない醜いvim
です。
su
またはSudo
に、/ rootにあるrootユーザーのファイルの代わりに、ユーザーの構成ファイルを使用させることはできますか?
Sudo -E
を使用して、環境を保護します。
$ export FOO=1
$ Sudo -E env | grep FOO
FOO=1
これにより、$HOME
およびその他の環境変数が保持されるため、rootとして実行されているプログラムから、開始したものと同じ構成ファイルにアクセスできます。
sudoers
を更新して、 env_reset
設定を無効にすることができます。これにより、すべての環境変数がクリアされ、通常はデフォルトで有効になります。そこにもSudo -E
を使用できるようにする必要があるかもしれません。関連する可能性のある他のsudoers
設定がいくつかあります。デフォルトで保持する特定の変数を指定できるenv_keep
と、常に削除する変数を宣言するenv_remove
です。 Sudo sudo -V
を使用して、どの変数が保持されているか、または保持されていないかを確認できます。
sudoers
を変更できない場合の代替手段は、環境を明示的に提供することです。
Sudo env HOME=$HOME command here
シェルエイリアスを作成して自動的に行うことができるため、入力する必要はありません。
これを(どちらの方法でも)行うと、望ましくない副作用が発生する可能性があることに注意してください。たとえば、実行するプログラムがホームディレクトリにファイルを作成しようとすると、それらのファイルはrootとして作成され、通常のユーザーは書き込むことができなくなります。彼らへ。
vim
の特定のケースでは、このシステムの唯一のユーザーであれば、.vimrc
をシステム全体の/etc/vimrc
として配置することもできます。
HOME
環境変数を保持するようにSudoを設定します。
visudo
を実行して、Sudo構成を編集します。オプションalways_set_home
が設定されていないこと、およびHOME
がenv_keep
リストに存在することを確認してください。次の行を追加します。
Defaults !always_set_home
Defaults env_keep+="HOME"
Defaults always_set_home
のような行がある場合は削除します。