web-dev-qa-db-ja.com

rootアカウントにroot以外のユーザー構成を使用する

ターミナルで作業し、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ユーザーのファイルの代わりに、ユーザーの構成ファイルを使用させることはできますか?

4
zepp.lee

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として配置することもできます。

3
Michael Homer

HOME環境変数を保持するようにSudoを設定します。

visudoを実行して、Sudo構成を編集します。オプションalways_set_homeが設定されていないこと、およびHOMEenv_keepリストに存在することを確認してください。次の行を追加します。

Defaults !always_set_home
Defaults env_keep+="HOME"

Defaults always_set_homeのような行がある場合は削除します。