Nainstaloval jsem eclipse do svého domovského adresáře a vložil jeho cestu do PATH v ~/.profile .
Takže to funguje podle
$ eclipse
Ale když to zavoláte pomocí sudo , eclipse nebyl nalezen:
$ sudo eclipse
sudo: eclipse: command not found
Která PATH dělá sudo eclipse použijte k vyhledání eclipse ? Je to uživatel root PATH ?
Děkuji.
Přijatá odpověď:
sudo ve výchozím nastavení používá minimální PATH , aby byl bezpečný pro použití rootem uživatel. To nemusí být nutně stejné jako PATH získáte přihlášením jako root uživatelem nebo provedením
sudo su -
Například v novějších verzích Red Hat jsem si všiml, že cesta vynechává /usr/local/bin .
Stránka manuálu to shrnuje v části nazvané Poznámky k zabezpečení :
sudo se snaží být v bezpečí při provádění externích příkazů.
Existují dva různé způsoby, jak se vypořádat s proměnnými prostředí. Ve výchozím nastavení
env_resetvolba sudoers
je povolena. To způsobí, že příkazy budou spouštěny s minimálním prostředím obsahujícímTERM,PATH,HOME,SHELL,LOGNAME,USERaUSERNAMEkromě proměnných z procesu vyvolání
povolenýchenv_checkaenv_keepmožnosti sudoers. Efektivně existuje whitelist pro
proměnné prostředí.
Další čtení:
-
sudoers – seznam uživatelů, kteří mohou co spouštět
secure_path
Cesta použitá pro každý příkaz spuštěný ze sudo. Pokud nevěříte, že lidé používající sudo
mají rozumnou proměnnou prostředí PATH, možná budete chtít použít tuto. Další použití je, pokud
chcete, aby byla „kořenová cesta“ oddělena od „cesty uživatele“. Uživatelé ve skupině
určenéexempt_groupmožnostsecure_pathneovlivňuje . Tato možnost není
ve výchozím nastavení nastavena. -
sudo – vykoná příkaz jako jiný uživatel