Top.Mail.Ru

Работать через sudo или под пользователем root?

Работать через sudo или под пользователем root?

Один из моих студентов задал следующий вопрос "Зачем нам каждый раз вводить команду sudo, чтобы выполнить команду с повышенными правами? Не проще ли сразу работать под пользователем root?"

Вопрос интересный, так что давайте разбираться!

Запись видеоурока во ВКонтакте

Запись видеоурока на RuTuBe

Запись видеоурока на YouTuBe



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

fdisk -l

Permission denied - в доступе отказано

Однако, указав команду sudo

sudo fdisk -l

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

Вообще, sudo (substitute user and do) - подменить пользователя и сделать

Таким образом выполняется подмена пользователя под root-а, т.е. суперпользователя и выполняется команда.

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

sudo -i

fdisk -l

Однако, такой подход не рекомендуется, по следующим причинам.

  • Риск ошибок - при работе в режиме sudo -i вы фактически становитесь суперпользователем с полными правами, и одна случайная ошибка (например, удаление системных файлов) может привести к серьёзным последствиям для системы. При работе под обычным пользователем, система вас предупредит, что прав нет, что дополнительно заставит задуматься, а верно ли вы все делаете.
  • Безопасность - постоянная работа под root увеличивает поверхность атаки для злоумышленников. Если злоумышленник получит доступ к вашей сессии, то он получит полный контроль над системой

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

Кстати, аналогичный подход рекомендован и для Windows систем. Допустим, не стоит работать на обычной рабочей станцией под администратором домена, иначе, в случае получения доступа к этому компьютеру, злоумышленник получает доступ ко всей сети с правами администратора домена. Допустим вирус, который будет запущен на этом компьютере под этим пользователем, сможет получить доступ ко всей корпоративной сети.

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

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

Кстати, если вы хотите не просто познакомиться с Linux, а действительно освоить эту мощную и гибкую операционную систему то приглашаем вас на наше обучение, которое позволит получить базовые знания и углубиться в установку, настройку и администрирование Linux. Подробности по ссылке в описании!

А, для тех, кого напрягает постоянный ввод команду sudo перед введенной командой, используйте команду

su it-skills

fdisk -l

sudo !!

Данная команда выполняет прошлую команду с повышением прав, т.е. !! это подстановка прошлой команды. Очень удобная команда!

Вам так же не нужно будет каждый раз вводить пароль текущего пользователя, так как по умолчанию, он запоминается системой на 15 минут и лишь после этого времени, пароль будет запрошен повторно. Что опять же ограничивает ваши привилегии суперпользователя на определенное время.

Почему запрашивается пароль именно для текущего пользователя, а не для пользователя root?

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

Зачем вообще повторно вводить пароль текущего пользователя? Мы же уже под ним авторизовались в системе!

Это делается на случай, что возможно, вы могли отойти от компьютера и кто-то другой за него сел и если он введет команду для повышения прав, ему все равно нужно будет ввести ваш пароль, который он может не знать.