Що насправді роблять “судо -си”?


26

Я використовую ubuntu 10.04.

Я помічаю, що після запуску " sudo -s " в терміналі, рядок змінився з

" XXX @ XXX "

до

" root @ XXX ",

схоже, це змінилося на root привілей.

Але коли я перевіряю документацію команди "sudo" тут , це пояснює іншу історію "sudo -s", чи може хто-небудь пояснити мені, що саме " sudo -s " робить?


6
Ви повинні запитати це знову в askubuntu.com

7
Чому askubuntu.com? sudoнавряд чи є специфічним для Ubuntu ...
Дейв Шерохман

Відповіді:


9

Два насправді непослідовні - sudoкоманда завжди змінює користувача, або на root, або на користувача, якого ви вказали за допомогою -uперемикача. Все, що потрібно -s, - це надання ярлика для запуску оболонки як цього користувача. Це дійсно рівнозначно:

sudo $SHELL

за винятком того, що це, ймовірно, резервне копіювання до /bin/shабо чогось, якщо SHELLйого не встановлено.


6

sudo -sзапускає оболонку, вказану у $SHELLзмінній вашого середовища, як суперпользователь / root. Ви можете вказати іншого користувача, використовуючи -u.

$SHELLЗмінна середовища містить шлях до по замовчуванням користувача оболонки входу в систему . Фактична установка для програми оболонки за замовчуванням зазвичай в etc/passwd. Залежно від того, що ви робили в поточному сеансі, змінна $ SHELL може не містити програми оболонки, яку ви зараз використовуєте. Якщо, наприклад, ви автоматично входите з zsh, але потім викликаєте bash, $ SHELL не зміниться /bin/zsh.

Показати поточного користувача та програму оболонки: echo $(whoami) is logged in and shell is $0

  • whoami виводить ім'я користувача, під яким працює користувач.
  • $0 містить ім'я / шлях поточно запущеної програми (програма оболонки в цьому випадку).

3

З посібника:

sudo дозволяє дозволеному користувачеві виконувати команду як суперпользователь або інший користувач, як зазначено у файлі sudoers.

-s Shell, запускає оболонку, задану змінною середовища SHELL, якщо вона встановлена ​​або оболонка, як зазначено в passwd (5).

Більш серйозно, sudo -s управляють змінною середовища оболонки. Оскільки ви не додали будь-яку змінну, вона запускається, як зазначено в passwd, і тому підключаєте вас як root.


1
З посібника не очевидно, що якщо ви не надаєте користувача, він за замовчуванням виконує корінь. Вам слід прочитати опис для -uваріанту, щоб дізнатися про це. Але для того, хто не знайомий sudo, вони не знають, на що подивитися -u.
Вісбукі


0

Здається, це створює ще один екземпляр оболонки поверх поточної оболонки, але з привілеями root. Б'юсь об заклад, що після того, sudo -sяк ви введете exit, ви повернетесь до початкової оболонки.


-1

sudo -s дозволяє вам запустити команду, для якої ви попередньо авторизовані [див. / etc / sudoers], можливо, попросивши підтвердити свій поточний ідентифікатор.

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