Яка різниця між командами "su -s" і "sudo -s"?


23

Яка різниця між двома суперкористувацькими командами su -sта sudo -s?

Вони обидва надають оболонку з доступом до облікового запису суперпользователя.

Відповіді:


30

На практиці вони обоє зроблять вас суперперу. Однак вони роблять трохи різні речі, дещо по-різному.

По-перше, 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


5
Також варто сказати, що для багатьох дистрибутивів sudoне надається пільг за замовчуванням звичайним користувачам. Для цих систем suце єдиний варіант.
Телемах

12
su -s

Переключиться на користувача (у цьому випадку root) та запустить вказану вами оболонку або один із небагатьох інших методів визначення оболонки. Це корисно, якщо ви хочете використовувати zsh або іншу оболонку як root дуже швидко ... і чомусь ви не використовуєте sudo.

sudo -s

Просто виконує оболонку, використовуючи sudo, що дасть вам кореневу оболонку. Ви можете також передати оболонку.

su -s старший, набагато старший за команду sudo -s. Я здогадуюсь, що розробник намагається максимально просто перейти на використання sudo.


9

su - команда змінити іншого користувача, або запустити оболонку, або виконати певну команду. Ви повинні аутентифікуватись як інший користувач. Якщо ви хочете подати корінь на su, вам потрібен пароль.

sudo - це команда для виконання іншої команди (необов'язково оболонки) як іншого користувача. Ви повинні зареєструватися як власний користувач . Дозвіл на використання sudo (і конкретні речі, які ви можете зробити з ним) визначає адміністратор у файлі sudoers.

Якщо ви надаєте комусь доступ до su (наприклад, надавши їм кореневий пароль), він може зробити з ним все що завгодно - запускати інші команди, відкривати оболонку, змінювати пароль, віддалено входити через ssh тощо. Ви по суті надаєте їм доступ до іншого облікового запису, "су" - це лише одне, що вони можуть зробити з цим.

Судо набагато більш дрібнозернистий. Ви можете надати привілеї користувачеві або групі. Ви можете дозволити користувачеві або групі судо в певні часові рамки (наприклад, з понеділка по п’ятницю, 9:00 до 17:00). Ви можете вказати певний список команд, які вони можуть виконувати (наприклад, тільки / usr / local / bin / run_backup) або ви можете вказати конкретного користувача, якому вони можуть виконувати команди (наприклад, www, резервне копіювання, персонал тощо) ).

Окрім своєї гнучкості, sudo є кращим рішенням у всіх випадках, оскільки не потребує доступу до того, що у користувача ще немає. Якщо ви надаєте комусь доступ до судо, ви можете його відкликати, видаливши його рядок у файлі судорів або видаливши їх із групи судорів. Якщо ви видалите їхній обліковий запис, їх доступу не буде.

Якщо ви дасте їм корінний пароль, навіть припускаючи, що вони не роблять з цим нічого неприємного, вони знають це назавжди. Якщо у вас є кілька людей, яким потрібен кореневий доступ для адміністративних завдань, це означає або змінювати всі паролі root, коли хтось залишає, або припускати, що їм нормально мати повний доступ до ваших систем після відходу.


гарне пояснення відмінностей між двома командами su і sudo.
Джон ака hot2use

5
  • su попросить вас пароль користувача root .
  • sudo запитає ваш пароль (і для цього вам потрібно буде очистити доступ до sudo).

2
Як правило, це поведінка для sudo за замовчуванням, але вона також може бути налаштована так, щоб запитати у вас root або інший пароль.
theoterreceive

2

З Вікіпедії :

su (скорочено для користувача-замінника або користувача комутатора) - це команда Unix, яка використовується для запуску оболонки іншого користувача без виходу з системи.

Пов'язана команда під назвою sudo виконує команду як інший користувач, але дотримується набір обмежень, щодо яких користувачі можуть виконувати, які команди, як і інші користувачі (як правило, у конфігураційному файлі з назвою / etc / sudoers, найкраще редагований командою visudo). На відміну від su, sudo автентифікує користувачів проти власного пароля, а не пароля цільового користувача (щоб дозволити делегувати конкретні команди конкретним користувачам на конкретних хостах, не обмінюючись паролями між ними та зменшивши при цьому ризик будь-яких без нагляду терміналів).


2

Одне, про що не можна сказати повною мірою, це таке: який ви можете використовувати часто, залежить від того, який дистрибутив ви використовуєте та хто ним керує. Одне або інше ( suабо sudo), ймовірно, не встановлено для повного використання за замовчуванням. Так, наприклад, як згадували деякі люди, OS X і Ubuntu вимикають кореневий рахунок ( su) за замовчуванням. Так само Debian не дає постійним користувачам привілеїв за замовчуванням sudo. (У всіх цих системах ви можете змінити ці налаштування за замовчуванням, але тільки якщо у вас є якісь адміністративні привілеї, для початку. Я думаю, ми говоримо про ситуацію, яка не є сервером, і ви керуєте машиною, оскільки ми перебуваємо на SU ніж SF, але про всяк випадок.)

Нарешті, якщо ви хочете скористатися sudoбільш дрібнозернистим способом, вам слід переглянути, man sudoersяк редагувати файл / etc / sudoers . Однак ніколи не слід редагувати це вручну. Використовуйте програму visudo - це не дозволить вам зберегти свої зміни, якщо вони принаймні не є мінімальними. Це чудовий захист від простих помилок, які можуть відключити вас від адміністраторських прав вашої власної системи.


1

У системах, де обліковий запис суперпользователя вимкнено, наприклад, Mac OS X, suне працюватиме; sudo -sбуде.

Крім того, виявляється, що немає su -s, принаймні, на моїй машині.


Зворотне часто відповідає дійсності. Тобто, у багатьох старих дистрибутивах унікса, звичайні користувачі не мають за замовчуванням пільг sudo(що навіть не завжди встановлено).
Телемах

1

Цей вступ може вам допомогти. suце скорочення su root, і ви зберігаєте свої права як інший користувач безстроково. Більш небезпечно, але і зручніше, якщо ви робите багато команд доступу для кореневого доступу протягом певного періоду часу.


1

su в основному створить нову оболонку входу з іншими привілеями користувача (логін). sudo просто тимчасово дозволить вам виконати команду за допомогою вказаного вами користувача. У деяких UNIX, таких як FreeBDS, немає опцій '-s'.

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