web-dev-qa-db-ja.com

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

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

42
Joseph Wright

更新:

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

その理由は、SudoEnvironmentのリセットおよびsecure pathの設定のポリシーを持っているためです。デフォルトで有効になっています。

/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を使用して、シェルにルート権限を提供しますが、正しい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は、ユーザーがシェルまたはデスクトップ環境に入るたびにこのファイルを実行するようにデフォルトで設定されています。

44
lgarzo

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

1
ℝaphink