Sudo в Linux: Полная власть над системой в одной команде

Sudo в Linux: Полная власть над системой в одной команде

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

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

Вы узнаете, как заставить sudo работать на вас по максимуму. Мы не будем ограничиваться простым «sudo apt update». Готовы открыть секреты, о которых не знают 90% пользователей?

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

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

Мы разберем, как передавать переменные окружения, запускать команды в фоне и даже как посмотреть, на что вы имеете право в системе.

Хватит бояться командной строки. Пора использовать её силу осознанно и эффективно. Переходите к полной статье и станьте настоящим повелителем своего Linux!


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

В Linux такой возможности нет, но зато есть команда sudo, которая позволяет вам запускать программы от имени других пользователей, а также от имени суперпользователя. На сайте уже есть несколько материалов про работу с ней, но нет подробной статьи про опции самой команды и её синтаксис. Эта тема и будет раскрыта сейчас. Дальше мы рассмотрим, что представляет из себя команда sudo Linux, но начнем с её синтаксиса.


Содержание статьи

Синтаксис sudo

Синтаксис команды очень прост:

$ sudo опции программа параметры

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

Опции sudo

  • -A или --askpass - по умолчанию sudo спрашивает пароль пользователя в терминале. Если задана эта опция, утилита попробует использовать графическую утилиту для запроса пароля.
  • -b или --background - запускает переданную программу в фоновом режиме;
  • -C или --close-from - опции нужно передать число больше трёх. Она позволяет закрыть для программы все файловые дескрипторы, кроме стандартного ввода и вывода;
  • -E или --preserve-env - позволяет передать переменные окружения текущего пользователя выполняемой программе. Также можно передать этой опции список переменных, которые нужно разрешить;
  • -e или --edit - позволяет редактировать файл вместо запуска команды. Файл копируется во временный каталог, редактируется с помощью редактора, установленного в системе по умолчанию, и если были изменения, записывается обратно с теми самыми правами;
  • -g - запустить команду с указанной группой вместо группы пользователя, от имени которого запускается программа;
  • -h - выполнить команду от имени другого хоста;
  • -H или --set-home - установить домашний каталог;
  • -i или --login - позволяет авторизоваться в консоли от имени другого пользователя. Будет выбран его домашний каталог, а также загружены все переменные окружения;
  • -k - по умолчанию, sudo сохраняет пароль и некоторое время после выполнения команды, вы можете выполнить ещё раз, без ввода пароля. Эта опция отключает такую возможность;
  • -l или --list - позволяет вывести список доступных команд для удалённых пользователей;
  • -n или --non-interactive - не интерактивный режим, если будет необходимо ввести пароль, программа выдаст ошибку;
  • -p или --prompt - использовать своё приглашение для ввода пароля;
  • -r или --role - выполнить программу с контекстом SELinux, у которого есть указанная роль;
  • -S - использовать стандартный поток ошибок для запроса пароля;
  • -s или --shell - позволяет запустить указанный командный интерпретатор;
  • -U или --User - вместе с опцией -l позволяет посмотреть привилегии для пользователя;
  • -T или --timeout - позволяет установить время выполнения команды, если время истечёт раньше, чем завершится команда, то она будет завершена принудительно;
  • -u - позволяет указать, от имени какого пользователя нужно выполнять программу;
  • -V - выводит версию утилиты;
  • -- - означает, что следующие опции обрабатывать не нужно.

Это основные опции, которые вы можете использовать. А теперь давайте перейдём к примерам использования команды.

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

1. Запуск программы

Самый частый пример использования sudo - выполнение программы от имени суперпользователя. Для этого достаточно написать sudo перед именем программы:

sudo whoami

Sudo в Linux: Полная власть над системой в одной команде

Если вы хотите выполнить программу не от имени root, а от имени другого пользователя, то можно использовать опцию -u, например:

sudo -u sergiy whoami

Sudo в Linux: Полная власть над системой в одной команде

2. Переменные окружения

По умолчанию, команда sudo не передаёт запускаемой утилите переменные окружения текущего пользователя. А когда вы запускаете графическое приложение, то ему нужна переменная DISPLAY для доступа к графическому серверу. В последних версиях Ubuntu всё немного по другому, но все же эта возможность sudo актуальна. Чтобы передать переменные просто используйте опцию -E:

sudo -E env

Sudo в Linux: Полная власть над системой в одной команде

Без опции -E программа получает только 18 стандартных переменных, а с опцией - все доступные.

Sudo в Linux: Полная власть над системой в одной команде

Также вы можете указать список переменных, которые нужно передать:

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

С помощью sudo вы также можете авторизоваться от имени другого пользователя. Для этого используйте опцию -i:

sudo -i

whoami

Sudo в Linux: Полная власть над системой в одной команде

По умолчанию вы будете авторизованы как суперпользователь. Ещё здесь можно указать пользователя, от имени которого вы хотите авторизоваться:

sudo -i -u sergiy

whoami

Sudo в Linux: Полная власть над системой в одной команде

4. Командный интерпретатор

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

sudo -s /bin/sh

Sudo в Linux: Полная власть над системой в одной команде

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

Когда вам необходимо отредактировать системный файл, вы пишите sudo vim или sudo nano. Вместо этого можно использовать опцию -e или команду sudoedit. Она открывает файл для редактирования, редактором, установленным в системе по умолчанию. Например, у меня это vim. Чтобы отредактировать /etc/group с правами суперпользователя достаточно выполнить:

sudo -e /etc/group

Или:

sudoedit /etc/group

Sudo в Linux: Полная власть над системой в одной команде

Утилита узнает, каким редактором нужно пользоваться из переменной окружения EDITOR.

6. Запуск в фоне

Чтобы запустить программу в фоне с помощью sudo можно использовать опцию -b. Например, запускаем OpenVPN в фоновом режиме:

sudo -b openvpn -с /путь/к/конфигурационному.файлу

Sudo в Linux: Полная власть над системой в одной команде

7. Просмотр полномочий

Вам необязательно редактировать конфигурационный файл, чтобы понять, какие настройки для sudo разрешены, а какие нет. Для этого можно выполнить команду с опцией -l. Утилита выведет список разрешённых команд или ALL в случае, если разрешено всё:

sudo -l

Sudo в Linux: Полная власть над системой в одной команде

 

Выводы

Теперь вы знаете, что из себя представляет команда sudo Linux. Здесь мы рассмотрели только общие примеры её использования. Если вы хотите прочитать более подробно про её настройку, смотрите статью настройка sudo в Linux.

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив