Найти тему
Tehnichka.pro

Команда sudo в Linux

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

Что такое sudo?

Пользователи Linux в курсе, что любая мало-мальски ответственная процедура в системе должна выполняться только от имени суперпользователя (администратора). Будь это банальная установка приложения или редактирование важного системного файла. В любом случае нужно авторизоваться и иметь достаточное количество полномочий. Иначе вы просто не сможете управлять своим компьютером и будете вынуждены пользоваться строго ограниченным количеством программ и функций.

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

Где встречается sudo? Если вы уже работали с Linux, то наверняка сталкивались с командой sudo в терминале, но она работает и в графической оболочке. Если при установке или обновлении пакетов появилось окошко с просьбой ввести пароль — это аналог sudo.

-Сделай мне сэндвич.  -Что? Сделай его сам!
-Sudo (=я приказываю), сделай мне сэндвич.
-ОК
-Сделай мне сэндвич. -Что? Сделай его сам! -Sudo (=я приказываю), сделай мне сэндвич. -ОК

Из чего строится команда sudo?

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

Вот практический пример: sudo apt-get install firefox. Здесь мы вписываем команду sudo, которая награждает нас полномочиями администратора для запуска менеджера пакетов apt-get. Как вы понимаете, вместо apt-get можно использовать другие приложения и команды.

Опции команды sudo

У большинства опций есть сокращенный и полный вариант.

  • -A (__ – askpass) — чтобы воспользоваться правами sudo, обязательно нужно ввести пароль, который эта команда запросит. Если поставить опцию -A__, то программа попробует задействовать графическую оболочку для ввода пароля.
  • -B (__ – background__) — эта опция нужна, чтобы программа, переданная после sudo, запустилась в фоновом режиме (то есть без наблюдения со стороны пользователя).
  • и номер (__ – close-from=и номер__) — с помощью этой опции можно ограничить доступ к файловым дескрипторам. Их можно указать в числовом значении.
  • -E (– preserve-env) — с помощью этой опции можно передать переменные окружения программе, которая будет запущена с правами sudo.
  • -e (– edit) — обычно sudo используется для выполнения других команды (запуска программ), но если использовать эту опцию вместо программы, можно прописать путь до файла. Тогда sudo откроет указанный файл в текстовом редакторе, выбранном в системе по умолчанию, и позволит отредактировать его с правами суперпользователя.
  • -g и группа — если добавить эту опцию и приписать название группы, то команда sudo будет запущена именно от лица этой группы, а не стандартной группы пользователя, в которой состоит сам пользователь.
  • -h (__ – help__) — вызов справки со списком доступных опций для команды sudo.
  • -h и хост — если добавить эту опцию и приписать имя какого-либо хоста, то команда (запуск приложения) будет выполнена от имени выбранного хоста. Работает она, только если система поддерживает дистанционное управление.
  • -i *и имя пользователя (– login и имя пользователя) — с помощью этой опции можно авторизоваться под именем любого пользователя и запустить программу от его лица. После этого будет загружен домашний каталог этого пользователя и его переменные окружения.
  • -k — sudo просит пароль один раз в определенный период времени. То есть, если вы выполнили одну команду с правами суперпользователя, то система потребует пароль, а если следом вы воспользовались ей еще раз, то пароль будет не нужен. Опция -k отключает это свойство sudo.
  • -l (– list) — если добавить эту опцию, то в консоль будет выведен список всех команды доступных для удаленных пользователей.
  • -n (– non-interactive) — эта опция отключает весь потенциальный интерактив с командной строкой. Если в какой-то момент потребуется ввести пароль, то в консоли всплывет ошибка.
  • -T и время (– timeout) — задает время на выполнение указанной команды. Если она не успеет отработать за этот период времени, то ее выполнение прекратится в принудительном режиме.
  • -u и имя пользователя — с помощью этой опции можно загружать программы от любого имени пользователя, существующего в системе.
  • -V — с помощью этой опции можно выяснить версию sudo, установленную в систему.

Примеры использования sudo

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

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

Вот так, например, выглядит установка пакета Firefox в систему Linux Mint. Без sudo эта команда просто не сработает.
Вот так, например, выглядит установка пакета Firefox в систему Linux Mint. Без sudo эта команда просто не сработает.

Запуск приложений

С помощью sudo можно запустить любую программу. Более того, описанный выше пример с apt-get, по сути, тоже является запуском программы. Apt — это менеджер пакетов. То есть приложение. Приложение, которое требует прав доступа уровня администратора для выполнения своих функций, так как программы устанавливаются в корень системы и связаны с компонентами Linux.

Авторизация от имени другого пользователя

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

Вот как это работает на практике:

  • Запустим команду whoami, чтобы узнать, от чьего имени мы зашли в систему. Без sudo она выдаст пользователя space. В моем случае это администратор. У вас, естественно, будет другой.
Как и для работы с любой другой программой от имени sudo, нужно ввести пароль администратора
Как и для работы с любой другой программой от имени sudo, нужно ввести пароль администратора

Но если ввести эту команду с sudo, то в результате получим root. То есть максимальные полномочия.

Результат работы команды whoami

Вот так выглядит максимальные полномочия в Linux
Вот так выглядит максимальные полномочия в Linux
  • Чтобы поменять пользователя, введем команду sudo -i -u space (вместо space, естественно, вводим имя пользователя, с полномочиями которого хотим авторизоваться в системе).
Авторизуемся под чужим именем
Авторизуемся под чужим именем
  • Если теперь проверить пользователя командой whoami, вновь отобразится space.
Вот результат проделанных манипуляций
Вот результат проделанных манипуляций

Выбор оболочки

Если вам о чем-то говорят сочетания букв bash или zsh, то вы наверняка знакомым с оболочками командной строки или интерпретаторами. При желании между ними можно переключаться, добавив в команду sudo опцию -s и указав путь до нужного интерпретатора.

Редактирование файлов

Также можно заручиться полномочиями суперпользователя для редактирования файлов. Вообще, тут можно пойти двумя путями. Либо ввести команду sudo, а затем воспользоваться программой для редактирования текста, либо использовать команду sudoedit, которая автоматически находит редактор, установленный по умолчанию, и открывает с помощью него выбранный файл.

Вот, например, так можно получить доступ к файлу с паролями
Вот, например, так можно получить доступ к файлу с паролями
В моем случае открывается редактор nano, так как это текстовый редактор по умолчанию в моей системе, прописанный в переменной EDITOR
В моем случае открывается редактор nano, так как это текстовый редактор по умолчанию в моей системе, прописанный в переменной EDITOR

Автор материала: Владимир Ковылов

Подписывайтесь на наш канал и ставьте лайки! А еще можете посетить наш официальный сайт.