Sudo означает SuperUser DO и используется для доступа к файлам и операциям с ограниченным доступом. По умолчанию Linux ограничивает доступ к определенным частям системы, предотвращая компрометацию конфиденциальных файлов.
Команда sudo
временно повышает привилегии, позволяя пользователям выполнять конфиденциальные задачи без входа в систему как пользователь root
. В этом руководстве вы узнаете, как использовать команду sudo
в Linux с примерами.
Как использовать команду sudo
Установка sudo
Пакет sudo
установлен в большинстве дистрибутивов Linux.
Чтобы проверить есть ли у вас эта комманда введите sudo
. Вы увидите справочное сообщение или сообщение о том что комнада не найдена.
Чтобы установить sudo
используйте для Ubuntu и Debian:
apt install sudo
или для CentOS и Fedora
yum install sudo
sudo
была разработана как способ временного предоставления пользователю административных прав. Чтобы заставить ее работать, используйте sudo
перед ограниченной командой, которую можно выполнить только из под рута. Тогда система запросит ваш пароль. После его ввода система запускает команду.
Синтаксис
sudo [команда]
Опции
sudo
можно использовать с дополнительными параметрами:
-h
- отображает синтаксис и параметры команды-V
- отображает текущую версию приложенияsudo
-v
- обновить лимит времени наsudo
без запуска команды-l
- перечисляет права пользователя или проверяет конкретную команду-к
- завершить текущие привилегииsudo
Дополнительные параметры можно найти с помощью ключа -h
.
Примечание. Оставаться в системе как администратор ставит под угрозу безопасность сервера. Раньше администраторы использовали su
(substitute user) для временного переключения на учетную запись администратора. Однако для команды su требуется вторая учетная запись пользователя и пароль, что не всегда возможно.
Когда используется команда sudo
, в системные журналы заносится метка времени. Пользователь может запускать команды с повышенными привилегиями в течение короткого времени (по умолчанию 15 минут). Если пользователь, не принадлежащий к sudo
группе, пытается использовать команду sudo
, это регистрируется как событие безопасности.
Предоставление привилегий sudo
Для большинства современных дистрибутивов Linux пользователь должен входить в группу sudo, sudoers или wheel, чтобы использовать команду sudo
. По умолчанию однопользовательская система предоставляет своему пользователю права sudo
. Система или сервер с несколькими учетными записями пользователей могут исключать некоторых пользователей из привилегий sudo
.
Рассмотрим как добавить пользователя в эту группу.
RedHat и CentOS
В Redhat и CentOS wheel группа контролирует пользователей sudo
. Добавьте пользователя в группу wheel с помощью следующей команды:
usermod –aG wheel [username]
Замените[username]
фактическим именем пользователя. Возможно, вам потребуется войти в систему как администратор или использовать командуsu
.
Debian и Ubuntu
В Debian и Ubuntu группа sudo (sudo group) контролирует пользователей sudo
. Добавьте пользователя в группу sudo с помощью следующей команды:
Использование visudo и группы sudoers
В некоторых современных версиях Linux пользователи добавляются в файл sudoers
для предоставления привилегий. Это делается с помощью команды visudo
.
Используйте команду visudo
для редактирования файла конфигурации:
sudo visudo
Это откроет /etc/sudoers
для редактирования. Чтобы добавить пользователя и предоставить полные права sudo
, добавьте следующую строку:
[username] ALL=(ALL:ALL) ALL
Сохраните и выйдите из файла.
Вот разбивка предоставленных привилегий sudo
:
[username] [any-hostname]=([run-as-username]:[run-as-groupname]) [commands-allowed]
Примечание. Проще добавить пользователя в группу sudo или wheel, чтобы предоставить праваsudo
. Если вам нужно отредактировать файл конфигурации, делайте это только с помощьюvisudo
. Приложениеvisudo
предотвращает сбои, ошибки и неправильные настройки, которые могут нарушить работу вашей операционной системы.
Тайм-аут пароля sudo
По умолчанию sudo просит вас ввести пароль после нескольких минут бездействия. Изменить это время ожидания по умолчанию, можно отредактировав файл sudoers
с помощью visudo
и измените время ожидания, добавив строку как в примере, где 10 - это время ожидания, указанное в минутах:
sudo visudo Defaults timestamp_timeout=10
Если вы хотите изменить время ожидания для определенного пользователя, то добавьте имя пользователя.
Defaults:user_name timestamp_timeout=10
Примеры sudo в Linux
Основное использование Sudo
1. Откройте окно терминала и попробуйте выполнить следующую команду:
apt-get update
2. Вы должны увидеть сообщение об ошибке. У вас нет необходимых разрешений для запуска команды.
3. Попробуйте ту же команду с sudo:
sudo apt-get update
4. При появлении запроса введите свой пароль. Система выполнит команду и обновит репозитории.
Выполнить команду от имени другого пользователя
1. Чтобы запустить команду от имени другого пользователя, введите в терминале следующую команду:
whoami
2. Система должна отображать ваше имя пользователя. Затем выполните следующую команду:
sudo –u [другое_имя_пользователя] whoami
3. Введите пароль для другого пользователя, и команда whoami
запустится и отобразит другого пользователя.
Переключиться на root пользователя
Эта команда переключает вашу командную строку на оболочку BASH от имени пользователя root
:
sudo bash
Ваша командная строка должна измениться на:
root@hostname:/home/[имя пользователя]
Значение имени хоста будет сетевым именем этой системы. Имя пользователя будет текущим именем пользователя, вошедшим в систему.
Выполнить предыдущие команды с помощью sudo
В командной строке Linux хранятся записи о ранее выполненных командах. Доступ к этим записям можно получить, нажав стрелку вверх. Чтобы повторить последнюю команду с повышенными привилегиями, используйте:
sudo !!
Это также работает со старыми командами. Укажите исторический номер следующим образом:
sudo !6
В этом примере повторяется 6-я запись в истории с командой sudo.
Запуск нескольких команд в одной строке
Соедините несколько команд вместе, разделенных точкой с запятой:
sudo ls; whoami; hostname
Добавить строку текста в существующий файл
Добавление строки текста в файл часто используется для добавления имени репозитория программного обеспечения к исходному файлу без открытия файла для редактирования. Используйте следующий синтаксис с командами echo
, sudo
и tee
:
echo ‘string-of-text’ | sudo tee –a [path_to_file]
Например:
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
Заключение
Теперь вы узнали про команду sudo и про то, как ее использовать.