Sudo не нужен при работе в консоли сервера. Так ли это?

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Введение

Зачем использовать sudoЯ постоянно читаю кучу статей на тему настройки linux серверов как в русскоязычном интернете, так и англоязычном. В статьях обычно в равной мере встречаются команды с sudo и без. Для тех, кто не знает, что это такое и о чем идет речь, кратко поясню.

С помощью sudo можно авторизовываться на сервере под обычным пользователем и выполнять команды с правами root, просто введя его пароль. То есть вы запускаете одну конкретную команду с правами root. Например, вот так в debian или ubuntu:

# sudo apt-get update

Или так в centos:

# sudo yum update

Дальше вводите пароль root и команда начинает исполняться.

Зачем нужен sudo?

Основной аргумент за использование sudo при работе в консоли, который я слышал - так безопаснее. В чем именно безопасность, лично я не понимаю. Возможно в том, что вы страхуете себя от ошибки ввода и лишний раз смотрите на исполняемую команду перед вводом пароля root. Какая еще может быть безопасность, мне не ясно.

Лично я захожу на сервера по ssh для выполнения административных действий. И только для этого. Мне всегда там нужны полные права. Я не очень понимаю, зачем мне каждый раз использовать sudo. Поэтому я всегда авторизуюсь под root и начинаю делать то, зачем подключился к консоли. Если права доступа там не разграничены через sudo, то сразу делаю:

# sudo su -

и начинаю выполнять поставленные задачи.

Могу понять, зачем нужно sudo, если linux ваша рабочая станция и вы за ней ежедневно работаете. Тогда удобно работать под обычным пользователем, а sudo использовать, чтобы повысить свои права для конкретной команды. На сервере я не вижу в этом смысла, если к нему подключаюсь только я.

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

В разных дистрибутивах разное отношение к sudo. Например, если в минимальной конфигурации Centos вы введете в консоли команду sudo, то увидите следующее.

# -bash: sudo: command not found

Команды sudo нет в минимальной установке, ее нужно установить:

# yum install sudo
Дополнение по centos 7. Сейчас специально поставил чистую систему, в ней sudo было. А если взять стандартный образ контейнера lxc с centos 7, то там sudo нет, хотя в контейнере ubuntu есть. Мне почему-то казалось, что в centos раньше тоже не было, но могу ошибаться.

А в debian или ubuntu у вас по-умолчанию после установки сервера разрешено подключение по ssh только для обычного пользователя. С помощью sudo можно начинать последующую настройку сервера после подключения.

Когда использовать sudo

Подозреваю, что сюда могут заглянуть какие-то продвинутые товарищи, чтобы сказать о том, что работа в консоли признак непрофессионализма. Все должно настраиваться с помощью ansible, chef, puppet и т.д. Прошу это не писать, статья не об этом, а такое мнение в определенных ситуациях может быть оправдано. Но я не претендую ни на какие лавры. Пишу о том, чем занимаюсь и что меня интересует.

Если подытожить сказанное, то sudo нужно в следующих случаях:

  1. К серверу подключаются разные администраторы. Нужно логировать их действия и разграничивать права доступа.
  2. Linux ваша рабочая системы, с помощью sudo вы запускаете редкие команды с полными правами.
  3. Sudo используется в скриптах для ограничения доступа. Абсолютно оправданное использование, сам так поступаю.

Если я единолично управляю сервером, подключаюсь для совершения административных действий, sudo считаю лишней сущностью и не использую его. Возможно я ошибаюсь и чего-то не понимаю. Жду ваших комментариев на эту тему. Как и когда вы используете sudo?

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

9 комментариев

  1. Аноним

    НИЧЕГО не исполняется! Абсолютно ничего не даёт сделать консоль под обычным пользователем! Все что нашел в интернете - не рабатает! Он принимает пароль пользователя и на ВСЕ команды отвечает неизменно: nick is not in the sudoers file. This incident will be reported.

  2. Аноним

    "Дальше вводите пароль root и команда начинает исполняться".

    Пароль пользователя же.

  3. На серверах работаю так
    1) захожу обычным юзером (в sshd делаю permit руту)
    2) sudo -i и работаю по "посинения"

    Согласен с вами - когда админ один - можно спокойно работать от root.

    Кстати, не совсем понял про "К серверу подключаются разные администраторы. Нужно логировать их действия".
    Вроде наоборот получается - любой админ делает sudo -i и никакого хистори нет.

    • sudo -i запрещаем или бьем по рукам за него. Логи храним не только локально. В общем, это как идея, не готовая реализация.

  4. Аноним

    ну, да))
    :~$ history
    1 uptime
    2 sudo -i

  5. Для меня ещё sudo удобно тем, что можно сохранить настройки окружения при работе с повышенными привелегиями, не перекрывая конфиги других админов. Хотя это с точки зрения многих не секьюрно, но лично мне удобней дать sudo -s, и получить настроенный под меня zsh с рутовыми правами, и не выслушивать нытье "опять ты руту zsh поставил, мне удобней в bash"

    ну а пароль рута традиционно в запечатанном конверте в сейфе лежит, на случай "совсем бл*, но сервер перегружать для сингл юзера нельзя"

  6. Даже, когда я один на сервере админ, захожу под учеткой юсера и далее повышаю привелегии с помощью sudo без ввода пароля. Разрешать ssh под root несекьюрно. Каждый раз вводить пароль root через su неудобно.

    • Это понятная тема, забыл об этом упомянуть. Запрет подключения root по ssh понятен и оправдан. Но я так понял, после подключения вы постоянно под root работаете.

      • Да, конечно, грешен )), просто каждый раз вводить sudo неудобно. Но повышаю привелегии именно через sudo без пароля. Как правило пароль root ставлю рандомный, знаков на 10 и забываю его. Опять же при разворачивании сервера в производственной среде подразумевает что там будут еще пользователи/админы, что уже обосновывает применение sudo. А если для себя - это уже наработанная привычка. Я не программист - я админ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar