Linux

使用 sudo 時找到但未找到 linux 命令

  • January 3, 2018

我正在嘗試像這樣執行 python3 安裝:

pip3 install django

我得到錯誤:

權限錯誤:

$$ Errno 13 $$權限被拒絕:’/usr/local/lib/python3.6/site-packages/pytz'

然後我嘗試:

sudo pip3 install django

我得到錯誤:

sudo:pip3:找不到命令

這是我的 $PATH 的樣子:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

如何獲得對 pip3 的 sudo 訪問權限?

PATH出於安全原因,Sudo 沒有使用與您目前使用者相同的使用者。其中/etc/sudoers有一個選項**secure_path**指定使用 sudo 執行命令時使用的路徑。我的看起來像這樣:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

從 sudo 手冊頁:

 secure_path   Path used for every command run from sudo.  If you don't trust the people running sudo to have a sane PATH environment
               variable you may want to use this.  Another use is if you want to have the “root path” be separate from the “user path”.
               Users in the group specified by the exempt_group option are not affected by secure_path.  This option is not set by
               default.

pip3命令可能不在sudoers文件定義的路徑中。您可以添加路徑**secure_path**或提供pip3命令的完整路徑,如下所示:

sudo /path/to/pip3 install django

sudo 在使用時可能沒有保留您的 $PATH 變數。嘗試在命令中使用 pip3 二進製文件的完整路徑,例如:sudo /path/to/pip3 install django. 如果您不確定完整路徑,請執行which pip3.

引用自:https://serverfault.com/questions/890403