Яке середовище я отримую із судо?


15

Коли я запускаю судо, що саме відбувається з моїм оточенням?

Коли я бігаю sudo command, воно, схоже, не бачить оточення мого чи кореня. Наприклад, мій шлях для обох включає /usr/local/bin, але якщо я спробую запустити одну з програм без повного шляху, вона не вдається.

Я думав, що судо працює як корінь, а отже, і отримав середовище кореня. Чи є інший спосіб, який bash виконує під sudo, ніж під root або мій звичайний користувач?

Редагувати:

Я використовую sudo -iостаннім часом, але останнім часом це спричиняє проблеми, оскільки в моєму поточному робочому каталозі налаштовано /root. Це як очікувалося (сорта), але я все ще не розумію, чому sudo не розпізнає мої виконувані файли в /usr/local/bin.

Редагувати:

Я запускаю Fedora 15.


Яку ОС ви використовуєте (якщо Linux, який дистрибутив)? Існує (занадто) багато способів налаштування PATH, і іноді не просто знайти того, хто останнім його переосмислить. Це може бути деякий системний параметр (наприклад, в PAM), сам sudo або наступний сценарій профілю.
Жил "ТАК - перестань бути злим"

@ Gilles- Добре. Я додав свою ОС. Я лише реально помітив це у Fedora (я використовував Ubuntu), але я подумав, що це тому, що вони не додали багато зручності налаштування.
beatgammit

Відповіді:


6

Я не знаю про за замовчуванням у Fedora, але про Debian sudoза замовчуванням використовувати secure_pathопцію зі значенням за замовчуванням /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin.

Це означає, що шлях змінюється на це значення щоразу, коли ви використовуєте sudo; але коли ви використовуєте sudo -i, шлях змінюється після цього RC-файлами кореневого користувача.


Я не знав про secure_pathваріант. За замовчуванням не /usr/local/binвстановлено мою установку. Дякую, це дійсно допомогло очистити речі!
beatgammit

4

Ви можете перевірити це досить легко за допомогою таких речей

Порівняйте вихід з

sudo env 
env

І такі речі

sudo whoami 
whoami

Таким чином ви можете спробувати дізнатись, чого не вистачає в налаштуваннях.


Класно, не знав про це. У будь-якому випадку, /usr/local/binце не в моїй sudo env, але це в моїй root env та env користувача. Чому це?
beatgammit

sudo whoami повертається root, як і очікувалося. Що може призвести до того, що моя sudo env відрізняється від моєї кореневої env?
beatgammit

Не знаєте, але десь повинна бути якась програма, яка відсутня, / usr / local / bin зазвичай включена. Може бути, ви очистили $ PATH env помилково в якомусь конфігураційному файлі?
Йоган

Чи джерело судо /root/.bashrc? Ось де я додаю /usr/local/binшлях до root ''s ( на жаль, мені довелося це зробити вручну)?
beatgammit

Я думаю, вам слід змінити глобальний конфігурацію оболонок і подивитися, що відбувається. Якщо ви запускаєте bash, це було б щось на кшталт /etc/bash.bashrc
Йоган

2

В sudo -iкомандування SIMULATE початковий Ввійти. У моїй системі Debian також зазначено, що:

Це означає, що оболонки зчитуються специфічними для входу файлами ресурсів, такими як .profile або .login. Якщо вказана команда, вона передається оболонці для виконання. В іншому випадку виконується інтерактивна оболонка. sudo намагається змінити домашній каталог цього користувача перед запуском оболонки. Він також ініціалізує середовище, залишаючи DISPLAY та TERM незмінними, встановлюючи HOME, MAIL, SHELL, USER, LOGNAME та PATH, а також вміст / etc / environment в системах Linux та AIX. Усі інші змінні середовища видаляються.


0

Ви можете налаштувати sudo«s env_keepпараметр , щоб включити PATH, хоча ви повинні мати на увазі наслідки для безпеки зробити це.

visudo

... запустить ваш $EDITOR, тоді ви зможете внести зміни до Defaults env_keep =... у відповідних випадках.

Крім того, ви можете додати / usr / local / bin до шляху до системи, додавши файли до /etc/profile.d.

наприклад:

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF

sudoмає спеціальне поводження, PATHтому не варто цього робити.
Arrowmaster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.