Безопасность Linux: что такое sudo и почему это так важно?
Sudo означает «дела суперпользователя» и фактически предоставляет обычному пользователю доступ к полномочиям администратора. Вот как использовать этот мощный инструмент.
На заре Linux все было намного сложнее. Дистрибутивы были гораздо менее зрелыми, но они также требовали использования определенной системной учетной записи для выполнения определенных действий. Эта учетная запись была root, и с ее помощью вы имели неограниченную власть над своей операционной системой.
Чтобы продемонстрировать возможности учетной записи root, вы всегда могли сыграть с ничего не подозревающими пользователями трюк, заключавшийся в том, чтобы предложить им перейти на пользователя root с помощью команды su , а затем предложить им выполнить следующее:
rm -rf /
Команда rm используется для удаления файлов и папок. В сочетании с r (рекурсивный) и f (принудительный) вы удалите все из корневой папки (/), что сделает вашу систему непригодной для использования.
В то время любая команда, требующая административных привилегий, запускалась от имени пользователя root. Для этого вам нужно было либо перейти на пользователя root (с помощью команды su), либо войти в систему как пользователь root. Оба эти варианта в конечном итоге были сочтены проблемой безопасности. Почему? Если вы вошли в систему как пользователь root и вышли из своей системы, любой мог делать с ней все, что хотел. То же самое справедливо и при переходе на пользователя root и оставлении окна терминала открытым.
Конечно, все гораздо сложнее. Наличие доступа к пользователю root означало, что если хакер получил доступ к вашей системе, он мог затем перейти на пользователя root и нанести ущерб машине.
В конце концов было решено, что нужно что-то отдать. Из этой необходимости и родился sudo. Sudo означает «действие суперпользователя» и фактически предоставляет обычному пользователю (тому, кто принадлежит к группе администраторов) доступ к полномочиям, аналогичным полномочиям администратора. Это решило две проблемы:
- Пользователь root может быть деактивирован (поэтому его будет сложнее использовать).
- Только пользователи из группы администраторов (подробнее об этом чуть позже) могли выполнять административные задачи.
Это был значительный шаг вперед для Linux, который не только повысил безопасность системы, но и облегчил ее работу для пользователей.
Благодаря sudo пользователям больше не нужно было переходить на root-пользователя или входить в эту учетную запись для выполнения административных команд (например, установки программного обеспечения). Пользователи могли запускать эти действия администратора через sudo с тем же эффектом, как если бы они запускались из учетной записи пользователя root. Вдобавок ко всему, это предлагало лучший контроль над тем, кто и что может делать в той или иной системе. При попытке запустить команду, требующую прав администратора, пользователю нужно было только ввести свой пароль пользователя (также называемый паролем sudo), и команда выполнялась без проблем (при условии, что она выполнялась правильно).
Например, вместо того, чтобы сначала перейти на пользователя root с помощью su, а затем вводить команды обновления/обновления в дистрибутиве на основе Ubuntu, вы можете просто выполнить команды:
sudo apt-get update
sudo apt-get upgrade -y
Запустив apt-get через sudo, пользователю предоставляются временные права администратора, и он может успешно выполнять эти команды.
А как насчет пользователей, не входящих в группу администраторов?
Что касается основ использования sudo, любой пользователь, которому вы хотите предоставить доступ к этим конкретным полномочиям, должен быть членом группы администраторов этого дистрибутива. Например, в дистрибутивах на базе Ubuntu эта группа называется sudo, тогда как в дистрибутивах на базе Red Hat эта группа называется колесом.
Если у вас есть пользователь, который не является членом группы администраторов, когда он попытается запустить команду с помощью sudo, он увидит что-то вроде этого:
olivia is not in the sudoers file. This incident will be reported.
Как это исправить? Вы добавляете их в группу администраторов. Итак, для дистрибутива на базе Ubuntu команда добавления пользователя в группу администраторов будет такой:
sudo usermod -aG sudo USER
Где USER — это имя пользователя, о котором идет речь.
В дистрибутиве на базе Red Hat (например, Fedora) эта команда будет такой:
sudo usermod -aG wheel USER
Где USER — это имя пользователя, о котором идет речь.
После запуска команды пользователю придется либо выйти из системы и снова войти в систему, либо уведомить систему об изменениях с помощью команды:
newgrp
После добавления пользователя в группу администраторов он может использовать sudo для запуска команд, требующих прав администратора.
Sudo сделал Linux не только более безопасным, но и более удобным для пользователя. Отсутствие необходимости переходить на учетную запись пользователя root (или входить в нее) позволяет избежать ряда серьезных ошибок безопасности и позволяет управлять доступом пользователей к задачам администратора.