root / sudoを含むすべてのユーザーに適用されるようにPATHを設定する


41

サーバー上のすべてのユーザーにPATH変数を設定する方法の手順 すべての「通常の」ユーザーのPATHを設定するように働きます。しかし、私がしなければsudo -s、その後printenv PATHの更新パスが示されていません。たとえば、rootにTeX Liveパスを設定する例を見てきましたが、Windowsのバックグラウンドから来ているので、これは意味をなさないようです。エントリがシステムで実行されているすべてのプロセスに完全に継承されるように、真にシステム全体のパスを設定する方法はありますか?

回答:


43

更新:

グローバル環境変数の設定はで引き続き実行する必要があり/etc/environmentますが、指摘したように、usingを使用すると、sudo -sこれらの変数の効果は「なくなります」。

その理由には、環境sudoリセットし安全なパスを設定するというポリシーがあります。デフォルトで有効になっています。

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

したがって/etc/environment、パスに設定されているものはすべてによってオーバーライドされsudoます。

sudoers状態のマニュアルページ:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

回避策として、これを使用しsudo suて、シェルにroot権限を提供しますが、正しいPATHが含まれます。


元の回答

で設定する必要があり/etc/environmentます。

試してくださいsudo YOUR_TEXT_EDITOR /etc/environment(最初にバックアップを作成してください)。

詳細情報:EnvironmentVariables

システム全体の環境変数

システム全体(特定のユーザーではなく)に影響する環境変数設定は、システムまたはデスクトップセッションの読み込み時に実行される多くのシステムレベルスクリプトのいずれにも配置しないでください。ただし、

/etc/environment-このファイルは、システム全体の環境変数設定専用です。スクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。具体的には、このファイルにはシステム全体のロケールとパス設定が保存されます。

非推奨:

/etc/profile-このファイルは、bashログインシェルに入るたびに(たとえば、コンソールまたはssh経由でログインするとき)、デスクトップセッションがロードされるときにDisplayManagerによって実行されます。これはおそらく、ベテランのUNIXシステム管理者に環境変数について尋ねるときに参照されるファイルです。ただし、Ubuntuでは、このファイルは/etc/bash.bashrcファイルを呼び出すだけで済みます。

/etc/bash.bashrc-これは、システム全体のバージョンの〜/ .bashrcファイルです。Ubuntuは、ユーザーがシェルまたはデスクトップ環境に入るたびにこのファイルを実行するようにデフォルトで設定されています。


ああ、私にとってこれはすべて間違った方法です(誰もが同じパス、期間を継承する必要があります)が、私はそれがまさにそうであると思います。
ジョセフライト

あなたは使用することができvisudo、セキュアパスの設定を編集する(root権限を必要とします)。これは推奨される方法ではありません。教育のためだけにあります。
エリオットラボLLC

2

sudo -iログインをシミュレートし(と同様の方法でsudo su -)、これらの環境変数を提供します。


1
そのようには動作しません。Ubuntu Trusty test-vmで少なくともPATHがリセットされます。
マーティンヒーメルズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.