私のホームディレクトリにEclipseをインストールし、PATH
そのパスを~/.profile
。
だからそれがどのように機能するか
$ eclipse
しかし として呼び出すとsudo
何もeclipse
見つかりません。
$ sudo eclipse
sudo: eclipse: command not found
どちらを検索PATH
しますか?それはユーザーのものですか?sudo eclipse
eclipse
root
PATH
ありがとうございます。
答え1
sudo
デフォルトで使用最小 PATH
、安全に使えるように根ユーザー。これは必ずしもPATH
ログインして得られるのと同じ結果ではありません。根ユーザーまたは以下を実行して
sudo su -
たとえば、最新のRed Hatバージョンではパスが省略されていることがわかりました/usr/local/bin
。
「というタイトルの章のマニュアルページ安全マニュアル:
sudo は外部コマンドの実行時にセキュリティを確保しようとします。
環境変数を処理する方法は2つあります。基本的に、
env_reset
sudoersオプションが有効になっています。これにより、以下を含む最小環境でコマンドが実行されます。TERM
、PATH
、HOME
、SHELL
、LOGNAME
、USER
そしてUSERNAME
env_check
sudoersオプションで許可されている呼び出し手続きの変数に加えてenv_keep
。実際、環境変数のホワイトリストがあります。
追加資料:
-
secure_path
sudo で実行される各コマンドに使用されるパス。 sudoを実行している人が通常のPATH環境変数を持っていることを信頼していない場合は、この方法を使用できます。別の用途は、「ユーザーパス」から「ルートパス」を分離したい場合です。指定されたグループのユーザーexempt_group
オプションは影響を受けません。secure_path
。このオプションはデフォルトでは設定されていません。