Відповіді:
На практиці вони обоє зроблять вас суперперу. Однак вони роблять трохи різні речі, дещо по-різному.
По-перше, su -
переключає вас на оболонку входу, тоді як sudo -s
ні. На практиці це часто означає, що ваші змінні середовища не будуть перемикатися на root
's для sudo -s
. Зауважте, що ви можете запустити лише те, su
щоб не отримати оболонку входу або sudo -i
отримати оболонку для входу [не у всіх версіях].
По-друге, su
і su -
перейдіть до нового користувача, попросивши вас підтвердити автентифікацію як нового користувача. sudo -s
і sudo -i
(і просто регулярно sudo foo
) дозволяють запустити команду, на яку ви попередньо авторизовані [див. /etc/sudoers
], можливо, попросивши підтвердити свій поточний ідентифікатор.
Якщо ви хочете бути по-справжньому милі, ви також можете запустити sudo su -
, який попросить увійти як root ( su -
), керований користувачем root ( sudo
частиною).
Якщо користувач root заблокований (наприклад, на Ubuntu), ви не зможете увійти в систему як користувач root su
. У цьому випадку вам потрібно буде використовувати sudo -s
абоsudo -i
su -s
Переключиться на користувача (у цьому випадку root) та запустить вказану вами оболонку або один із небагатьох інших методів визначення оболонки. Це корисно, якщо ви хочете використовувати zsh або іншу оболонку як root дуже швидко ... і чомусь ви не використовуєте sudo.
sudo -s
Просто виконує оболонку, використовуючи sudo, що дасть вам кореневу оболонку. Ви можете також передати оболонку.
su -s старший, набагато старший за команду sudo -s. Я здогадуюсь, що розробник намагається максимально просто перейти на використання sudo.
su - команда змінити іншого користувача, або запустити оболонку, або виконати певну команду. Ви повинні аутентифікуватись як інший користувач. Якщо ви хочете подати корінь на su, вам потрібен пароль.
sudo - це команда для виконання іншої команди (необов'язково оболонки) як іншого користувача. Ви повинні зареєструватися як власний користувач . Дозвіл на використання sudo (і конкретні речі, які ви можете зробити з ним) визначає адміністратор у файлі sudoers.
Якщо ви надаєте комусь доступ до su (наприклад, надавши їм кореневий пароль), він може зробити з ним все що завгодно - запускати інші команди, відкривати оболонку, змінювати пароль, віддалено входити через ssh тощо. Ви по суті надаєте їм доступ до іншого облікового запису, "су" - це лише одне, що вони можуть зробити з цим.
Судо набагато більш дрібнозернистий. Ви можете надати привілеї користувачеві або групі. Ви можете дозволити користувачеві або групі судо в певні часові рамки (наприклад, з понеділка по п’ятницю, 9:00 до 17:00). Ви можете вказати певний список команд, які вони можуть виконувати (наприклад, тільки / usr / local / bin / run_backup) або ви можете вказати конкретного користувача, якому вони можуть виконувати команди (наприклад, www, резервне копіювання, персонал тощо) ).
Окрім своєї гнучкості, sudo є кращим рішенням у всіх випадках, оскільки не потребує доступу до того, що у користувача ще немає. Якщо ви надаєте комусь доступ до судо, ви можете його відкликати, видаливши його рядок у файлі судорів або видаливши їх із групи судорів. Якщо ви видалите їхній обліковий запис, їх доступу не буде.
Якщо ви дасте їм корінний пароль, навіть припускаючи, що вони не роблять з цим нічого неприємного, вони знають це назавжди. Якщо у вас є кілька людей, яким потрібен кореневий доступ для адміністративних завдань, це означає або змінювати всі паролі root, коли хтось залишає, або припускати, що їм нормально мати повний доступ до ваших систем після відходу.
З Вікіпедії :
su (скорочено для користувача-замінника або користувача комутатора) - це команда Unix, яка використовується для запуску оболонки іншого користувача без виходу з системи.
Пов'язана команда під назвою sudo виконує команду як інший користувач, але дотримується набір обмежень, щодо яких користувачі можуть виконувати, які команди, як і інші користувачі (як правило, у конфігураційному файлі з назвою / etc / sudoers, найкраще редагований командою visudo). На відміну від su, sudo автентифікує користувачів проти власного пароля, а не пароля цільового користувача (щоб дозволити делегувати конкретні команди конкретним користувачам на конкретних хостах, не обмінюючись паролями між ними та зменшивши при цьому ризик будь-яких без нагляду терміналів).
Одне, про що не можна сказати повною мірою, це таке: який ви можете використовувати часто, залежить від того, який дистрибутив ви використовуєте та хто ним керує. Одне або інше ( su
або sudo
), ймовірно, не встановлено для повного використання за замовчуванням. Так, наприклад, як згадували деякі люди, OS X і Ubuntu вимикають кореневий рахунок ( su
) за замовчуванням. Так само Debian не дає постійним користувачам привілеїв за замовчуванням sudo
. (У всіх цих системах ви можете змінити ці налаштування за замовчуванням, але тільки якщо у вас є якісь адміністративні привілеї, для початку. Я думаю, ми говоримо про ситуацію, яка не є сервером, і ви керуєте машиною, оскільки ми перебуваємо на SU ніж SF, але про всяк випадок.)
Нарешті, якщо ви хочете скористатися sudo
більш дрібнозернистим способом, вам слід переглянути, man sudoers
як редагувати файл / etc / sudoers . Однак ніколи не слід редагувати це вручну. Використовуйте програму visudo - це не дозволить вам зберегти свої зміни, якщо вони принаймні не є мінімальними. Це чудовий захист від простих помилок, які можуть відключити вас від адміністраторських прав вашої власної системи.
У системах, де обліковий запис суперпользователя вимкнено, наприклад, Mac OS X, su
не працюватиме; sudo -s
буде.
Крім того, виявляється, що немає su -s
, принаймні, на моїй машині.
sudo
(що навіть не завжди встановлено).
Цей вступ може вам допомогти. su
це скорочення su root
, і ви зберігаєте свої права як інший користувач безстроково. Більш небезпечно, але і зручніше, якщо ви робите багато команд доступу для кореневого доступу протягом певного періоду часу.
su в основному створить нову оболонку входу з іншими привілеями користувача (логін). sudo просто тимчасово дозволить вам виконати команду за допомогою вказаного вами користувача. У деяких UNIX, таких як FreeBDS, немає опцій '-s'.
sudo
не надається пільг за замовчуванням звичайним користувачам. Для цих системsu
це єдиний варіант.