Найти тему
Кручинин.Linux

su или sudo?

Вообще, а зачем su или sudo? Можно ведь просто работать от root?

Работать-то можно, только запустив браузер Chromium и зайдя на сайт злоумышленника вы можете позволить зловредному ПО выполнить команду от имени суперпользователя.

Конечно, иногда достаточно и получить доступ к обычному пользователю, о чем я писал статью https://dzen.ru/a/ZcycnWyUpEhzZxOC

Но если злоумышленник получил доступ еще и к учетной записи с UID=0, то он уже вертел ваш компьютер, как хотел.

Но, работая под вашим обычным пользвателем, иногда надо устанавливать ПО, производить настройки.

И в этом помогает одна из двух команд, su или sudo.

Что они делают?

  • Они проверяют возможность выполнить команду от имени суперпользователя.
  • Далее запускают эту команду (например bash) от имени суперпользователя.

После завершения команды или выхода из оболочки (bash) или другой, вы снова, можно сказать, становитесь собой.

В чем разница?

su временно (для команды или вложенного сеанса bash) меняет пользователя на другого, запрашивая пароль этого пользователя.

sudo временно (для команды или вложенного сеанса bash) меняет пользователя на другого, запрашивая (или даже не запрашивая, это настраивается) ВАШ пароль.

Но чтобы выполнить sudo, пользователю нужно дать права. Например, для большинства систем, root должен добавить его в группу sudo.

Если вы выполнили su или sudo -i

то приглашение командной строки изменится с $ на # точно также, как если бы вы зашли под root.

После exit вернется как было.

Какая команда лучше?

Давайте подумаем.

У вас пять админов. Для использования su каждому даете пароль root.

После увольнения даже одного из них надо менять пароль.

В случае sudo после удаления просто удаляете пользователя из группы sudo или вообще удаляете. Пароль от рута (по хорошему он не должен быть установлен) он не знает. Пользователь sudo использует только свой пароль.

Чтобы запустить с помощью sudo испольузется команда sudo -i

И только не sudo su

Ведь sudo -i сначала запустит sudo, sudo запустит bash.

Для sudo su

сначала запустится sudo, потом su, потом bash.

Ну и если приглашение ваше # и вы уже пользователь с UID=0 (не важно, с помощью su, sudo или входа под root-ом с паролем), sudo больше не нужно для выполнения команд, требующих привелегий суперпользователя.

Подписывайтесь на мой канал в дзен https://dzen.ru/olinux и будете в курсе новых моих статей по компьютерным сетям и ОС GNU/Linux.
https://dzen.ru/olinux

Всегда с вами, Сергей Кручинин преподаватель GNU/Linux и компьютерных сетей

-2