Ubuntu
即使對於 sudo 命令,如何設置全域變數可見?
我按照說明在 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
命令添加額外的路徑!添加額外的目錄會使您和您的使用者面臨額外的風險,許多人直到為時已晚才意識到這些風險。