sudoコマンドでもグローバル変数を表示するように設定する方法は?

sudoコマンドでもグローバル変数を表示するように設定する方法は?

次のようにUbuntu 16.04にMavenをインストールしました。指示する

/etc/environmentパスを編集して追加しました。専門家/空フォルダ$パス変える

通常のユーザーはすべてうまくいきますが、実行しようとするとsudo mvn test次のメッセージが表示されます。MVN不明なコマンドです。再起動しても役に立ちません。

間違い:

/bin/sh: 1: mvn: not found

私も少し混乱しています/bin/sh。私はbashを使っています。

それでは、sudoコマンドが表示できるようにMavenバイナリパスをどこに配置する必要がありますか?ありがとうございます。

答え1

使用すると、セキュリティ上の理由でsudoファイルの次の行で上書きされます。$PATH/etc/sudoers

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

はい

その項目が次に存在する場合でも/etc/environment:

$ cat /etc/environment
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

ピックアップされたようです:

$ sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

私たちはスクリプトを持っています/tmp

$ ls -l /tmp/blah.bash
-rwxrwxr-x 1 vagrant vagrant 20 Aug  8 20:57 /tmp/blah.bash

このスクリプトをwhoami実行すると、次のように印刷されます。

$ cat /tmp/blah.bash
#!/bin/bash

whoami

Sudoは私達がこれをすることを許可しません:

$ sudo blah.bash
sudo: blah.bash: command not found

sudoの安全なルート変更

しかし、私のファイルを編集すると/etc/sudoers

$ sudo visudo
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/tmp

今動作します:

$ sudo blah.bash
root

安全

sudo安全なパスにディレクトリを追加する理由を慎重に考えてください。このように設定したのにはそのような理由があります。追加のsudoコマンドパスを軽く追加しないでください。

追加のディレクトリを追加すると、あなたとあなたのユーザーが遅すぎるまで多くの人が認識しない追加のリスクにさらされます。

関連情報