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_reset
volba 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
,USER
aUSERNAME
kromě proměnných z procesu vyvolání
povolenýchenv_check
aenv_keep
mož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_group
možnostsecure_path
neovlivňuje . Tato možnost není
ve výchozím nastavení nastavena. -
sudo – vykoná příkaz jako jiný uživatel