Ubuntu

即使對於 sudo 命令,如何設置全域變數可見?

  • August 9, 2018

我按照說明在 Ubuntu 16.04 上安裝了 Maven 。

我編輯/etc/environment並將maven/bin文件夾的路徑添加到**$PATH**變數。

在我的普通使用者下,一切正常,但是當我嘗試執行時,sudo mvn test它告訴我mvn是未知命令。重新啟動沒有幫助。

錯誤:

/bin/sh: 1: mvn: not found

我也有點困惑/bin/sh——我正在使用 bash。

那麼我應該在哪裡放置 maven 二進製文件的路徑才能讓 sudo 命令也能看到它呢?謝謝你。

出於安全原因,使用您的文件時,您的文件中會出現這樣的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命令添加額外的路徑!

添加額外的目錄會使您和您的使用者面臨額外的風險,許多人直到為時已晚才意識到這些風險。

引用自:https://unix.stackexchange.com/questions/461404