Команда sudo в linux

Обновлено: 04.07.2024

Рассказываем, что из себя представляет команда 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 в системе и ее основные возможности.

sudo (англ. substitute user do, дословно «подменить пользователя и выполнить») позволяет системному администратору делегировать полномочия, чтобы дать некоторым пользователям (или группе пользователей) возможность запускать некоторые (или все) команды c правами суперпользователя или любого другого пользователя, обеспечивая контроль над командами и их аргументами.

Contents

Обоснование

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

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

Установка

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

Использование

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

Например, для использования pacman:

Смотрите руководство по sudo для получения дополнительной информации.

Настройка

Просмотр текущих настроек

Выполните sudo -ll для вывода текущей конфигурации sudo.

Использование visudo

Файл настроек /etc/sudoers всегда следует редактировать с помощью команды visudo . visudo блокирует файл sudoers , сохраняет изменения во временный файл и проверяет, что файл грамматически корректен, перед тем как скопировать его в /etc/sudoers .

  • Крайне важно, чтобы файл sudoers был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным. Всегда редактируйте его только с помощью visudo для предотвращения ошибок.
  • Из visudo(8) : Обратите внимание, что это дыра в безопасности, поскольку позволяет пользователю запускать любую программу, какую он захочет, просто прописав её в VISUAL или EDITOR.

visudo использует vi в качестве текстового редактора по умолчанию. В core репозитории sudo скомпилирована с --with-env-editor по умолчанию и использует переменные VISUAL и EDITOR . EDITOR не используется, если задана переменная VISUAL .

Чтобы сделать nano редактором visudo в течение текущего shell сеанса, задайте и экспортируйте переменную EDITOR перед тем, как выполнять visudo.

Он будет использован, если вы не определили другой редактор, установив переменные окружения VISUAL или EDITOR (используемые в таком порядке) в качестве желаемого редактора, например nano . Выполните команду с правами суперпользователя:

Для изменения редактора на постоянной основе для текущего пользователя, прочтите установка переменных окружения для пользователя. Для того, чтобы установить выбранный редактор на постоянной основе для всей системы, но только для visudo , добавьте следующее в /etc/sudoers (предположим, что вы предпочитаете nano в качестве редактора):

Примеры настроек

Настройка sudo осуществляется добавлением записей в файл /etc/sudoers . Чтобы дать пользователю привилегии суперпользователя, когда он вводит sudo перед командой, добавьте следующую строку:

Разрешить пользователю выполнять все команды от любого пользователя, но только на машине с определенным названием хоста:

Предоставить членам группы wheel доступ sudo:

Чтобы не спрашивать пароль у пользователя:

Разрешить выполнять только конкретные команды и только пользователю на определенном хосте:

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

Разрешить выполнять конкретно определённые команды только для пользователя на определенном хосте и без пароля:

Подробный пример для sudoers доступен в /usr/share/doc/sudo/examples/sudoers . Также смотрите руководство по sudoers для получения более подробной информации.

Права доступа к файлам sudoers по умолчанию

Файл sudoers должен иметь владельца root и группу root (0). Права доступа всегда должны быть установлены как r--r----- (0440). Эти права установлены по умолчанию, однако если вы случайно измените их, они должны быть немедленно изменены обратно, иначе sudo не будет работать.

Время действия введённого пароля

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

Например, чтобы установить тайм-аут на 20 минут:

Совет: Если вы хотите чтобы sudo всегда требовал ввод пароля, установите timestamp_timeout равным 0. Чтобы срок действия пароля никогда не истекал, установите любое отрицательное значение.

Советы и рекомендации

Автодополнение по нажатию Tab в bash

Один тайм-аут на все сеансы терминала

Важно: Это позволит любому процессу воспользоваться вашим открытым сеансом sudo.

Если вы не хотите вводить пароль снова каждый раз, когда открываете новый терминал, отключите tty_tickets:

Всегда показывать замечание о безопасности

По умолчанию, /etc/sudoers настроен так, что sudo выводит замечание о безопасности только при первом открытии сеанса:

или просто добавьте эту строку, если её нет.

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

Если у вас много переменных окружения или вы экспортировали ваши настройки прокси через export http_proxy=". " , когда вы используете sudo, эти переменные не будут переданы в открытый сеанс, если вы не запустите sudo в опцией -E .

Рекомендованный способ сохранения переменных окружения - это прописать их в env_keep :

Перенос псевдонимов

/.bashrc или /etc/bash.bashrc строку:

Шутливые оскорбления

Для проверки, введите sudo -K , чтобы завершить текущий сеанс и позволить sudo заново запросить пароль.

Пароль суперпользователя

Вы можете сконфигурировать sudo так, чтобы он спрашивал пароль суперпользователя вместо пароля текущего пользователя, добавив targetpw или rootpw в список опций Defaults в /etc/sudoers :

Чтобы не разглашать пароль root пользователям, вы можете запретить это определённым группам:

Отключение учетной записи root

Важно: Будьте осторожны. Вы можете попасть в свою ловушку, если отключите вход систему пользователя root. Sudo по умолчанию не установлен, и его стандартная конфигурация не позволяет ни получить доступ к правам root без пароля, ни дать такой доступ вам по вашему собственному паролю. Убедитесь, что пользователь правильно сконфигурирован как sudoer перед отключением аккаунта суперпользователя! Примечание: Если вы уже попали в ловушку, смотрите Password Recovery (Русский) для получения помощи.

Пароль пользователя root можно заблокировать с помощью passwd :

Аналогичная команда разблокирует пароль пользователя root:

Также вы можете отредактировать /etc/shadow и заменить зашифрованный пароль root на "!":

Тогда, чтобы задать новый пароль и тем самым разблокировать пользователя root:

Чтобы gksu использовал sudo по умолчанию, выполните:

kdesu

kdesu можно использовать в KDE для запуска графических программ с привилегиями суперпользователя. Вероятно, что kdesu по умолчанию будет пытаться использовать su, даже если аккаунт root отключен. К счастью, можно сказать kdesu использовать sudo вместо su. Создайте/отредактируйте файл

/.config/kdesurc для kf5 версии kdesu):

или используйте следующую команду (используйте kwriteconfig5 для kf5 версии kdesu):

Также вы можете установить kdesudo AUR из AUR, который поддерживает улучшенное автодополнение по Tab при вводе команды.

Еще один пример настройки

Допустим, вы создали 3 пользователей: admin, devel и joe. Пользователь "admin" используется для journalctl, systemctl, mount, kill и iptables; "devel" используется для установки пакетов и редактирования настроек; "joe" - пользователь, под которым вы вошли в систему. Чтобы разрешить "joe" перезагружаться, выключать систему и использовать netctl, мы должны сделать следующее:

Отредактировать /etc/pam.d/su и /etc/pam.d/su-1 Потребовать, чтобы пользователь был в группе wheel, но никого в неё не добавлять.

Ограничить вход по SSH для группы 'ssh'. В эту группу будет входить только "joe".

Добавить пользователей в другие группы.

Установить права на настройки так, чтобы devel мог редактировать их.

С такими настройками вам практически никогда не понадобится входить как суперпользователь.

"Joe" может подсоединиться к своему домашнему WiFi.

"Joe" не может использовать netctl от имени другого пользователя.

Когда "joe" хочет воспользоваться journalctl или убить зависший процесс, он может переключиться на нужного пользователя:

Но "joe" не может переключиться на суперпользователя.

Если "joe" хочет начать gnu-screen сессию как admin, он может сделать это следующим образом:

Настройка sudo с помощью вкладываемых в /etc/sudoers.d файлов

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

  • Вам не понадобится редактировать файл sudoers.pacnew ;
  • Если с новой записью будет проблема, вы можете просто уничтожить соответствующий файл, вместо необходимости редактировать /etc/sudoers .

Формат записей в этих вкладываемых файлах такой же, как и в самом файле /etc/sudoers . Чтобы редактировать их напрямую, используйте visudo -f /path/to/file . Смотрите раздел Including other files from within sudoers в sudoers(5) для дополнительной информации.

Решение проблем

Проблемы с TTY через SSH

По умолчанию SSH не выделяет tty при выполнении удалённой команды. Без tty sudo не может отключить отображение пароля при его вводе. Вы можете воспользоваться ssh опцией -tt , чтобы заставить его выделять tty (или -t дважды).

Defaults опция requiretty всего лишь позволяет запускать sudo пользователям, если они имеют tty.

Показать привилегии пользователя

Вы можете узнать какими привилегиями обладает конкретный пользователь следующей командой:

Или узнать ваши собственные привилегии командой:

Наложение umask

Это установит sudo umask в umask суперпользователя по умолчанию (0022) и переопределит поведение по умолчанию, всегда используя указанную umask и независимо от umask пользователя.

Опции по умолчанию

На сайте авторов есть список всех опций, которые можно использовать с командой Defaults в файле /etc/sudoers .

Смотрите [1] список опций (извлечён из исходного кода версии 1.8.7) представленный в формате, оптимизированном для sudoers .

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

В этом руководстве мы объясним, как использовать команду sudo .

Установка Sudo (команда sudo не найдена)

Пакет sudo предустановлен в большинстве дистрибутивов Linux.

Если sudo не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Sudo в Ubuntu и Debian

Установите Sudo на CentOS и Fedora

Добавление пользователя в Sudoers

По умолчанию в большинстве дистрибутивов Linux предоставить доступ sudo так же просто, как добавить пользователя в группу sudo, определенную в файле sudoers . Члены этой группы смогут выполнять любую команду от имени пользователя root. Название группы может отличаться от рассылки к рассылке.

В дистрибутивах на основе RedHat, таких как CentOS и Fedora, группа sudo называется wheel . Чтобы добавить пользователя в группу , запустите:

В Debian, Ubuntu и их производных членам группы sudo предоставляется доступ sudo:

Учетная запись пользователя root в Ubuntu по умолчанию отключена из соображений безопасности, и пользователям рекомендуется выполнять системные административные задачи с помощью sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому, если вы используете Ubuntu, есть вероятность, что пользователь, с которым вы вошли в систему, уже получил права sudo.

Чтобы разрешить конкретному пользователю запускать только определенные программы как sudo, вместо добавления пользователя в группу sudo добавьте пользователей в файл sudoers .

Например, чтобы позволить пользователю linuxize запускать только команду mkdir как sudo, введите:

и добавьте следующую строку:

В большинстве систем команда visudo открывает файл /etc/sudoers с помощью текстового редактора vim. Если у вас нет опыта работы с vim, ознакомьтесь с нашей статьей о том, как сохранить файл и выйти из редактора vim .

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

Как использовать судо

Синтаксис команды sudo следующий:

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

Чтобы использовать sudo, просто добавьте к команде префикс sudo :

Sudo прочитает файл /etc/sudoers и проверит, есть ли у вызывающего пользователя sudo Assessment. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.

Например, чтобы перечислить все файлы в /root каталоге /, вы должны использовать:

Тайм-аут пароля

По умолчанию sudo попросит вас снова ввести пароль после пяти минут бездействия sudo. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers . Откройте файл с помощью visudo :

Выполнить команду от имени пользователя, отличного от root

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

Параметр -u позволяет запускать команду от имени указанного пользователя.

В следующем примере мы используем sudo для запуска команды whoami от имени пользователя «richard»:

Команда whoami напечатает имя пользователя, запустившего команду:

Это происходит потому, что перенаправление вывода « > » выполняется под пользователем, в который вы вошли, а не под пользователем, указанным с помощью sudo. Перенаправление происходит до вызова команды sudo .

Выводы

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

Этичный хакинг и тестирование на проникновение, информационная безопасность

Что означает sudo. Как запустить команду с sudo

Пожалуй самой часто используемой программой при системном администрировании (если вы работаете под обычным пользователем, а не под root), является sudo. Главное назначение sudo — это выполнить команду от имени другого пользователя, обычно от root. Смысл выполнения команды от root в том, что у него повышенные права доступа и, применяя sudo, обычный пользователь может выполнить те действия, на которые у него недостаточно прав.

Простейший и самый распространённый вариант запуска команд с sudo:

Если у КОМАНДЫ есть опции, аргументы, то для sudo не нужно делать какие-то дополнительные действия, например, помещать КОМАНДУ с опциями в кавычки или что-то ещё. Поставьте sudo и запускайте КОМАНДУ как обычно.

К примеру, я хочу выполнить:

Поскольку я работаю под обычным пользователем, то у меня нет прав доступа в директорию /root и я получаю ошибку:

Чтобы эта команда сработала, достаточно её записать после sudo:


Что использовать sudo или su?

У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.

Различия sudo и su в следующем:

1. При использовании su необходимо сообщать пароль root обычному пользователю (но это можно обойти — подробности в этом разделе чуть ниже). При использовании sudo пользователь вводит свой собственный пароль.

2. У обеих команд есть интерактивный режим, то есть можно как бы выполнить вход от имени другого пользователя. Также обе программы, sudo и su, позволяют выполнять команды без интерактивного режима. В su интерактивный режим запускается по умолчанию (если не указана команда для выполнения):

В sudo для входа в интерактивный шелл нужно использовать опцию -i:

Точнее говоря, всё немного сложнее, опция -i в sudo означает запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду. Сравните:

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

3. Использование sudo требует настройки, а именно: 1) добавление пользователя в группу, имеющую право использовать эту программу; 2) установка разрешений (перечисление команд, которые может запускать пользователь с sudo и т. д. При некоторых настройках, если пользователь не упомянут в конфигурационных файлах sudo, то он не может ей пользоваться. Программа su не требует настройки для каждого пользователя.

4. Разное отношение с окружением выполнения: смена текущей рабочей директории при входе в интерактивный режим su, сохранение текущей рабочей директории при выполнении отдельных команд с sudo и su. Сравните переменную окружения $HOME в команде

со значением $HOME в команде:

5. Некоторые конструкции оболочки работают с sudo не так, как вы ожидаете. Смотрите в качестве примера статью «Как использовать echo вместе с sudo». С su такой проблемы нет.

Но если нужно выполнить несколько команд с повышенными привилегиями, то достаточно войти в интерактивную консоль su:

И затем перед командами уже ненужно ставить sudo.

Или использовать интерактивный режим самой sudo:

Как выполнить команду от имени другого пользователя

Запуск sudo:

означает выполнить КОМАНДУ от имени пользователя по умолчанию. Таким пользователем обычно является root, но, на самом деле, может быть настроен другой пользователь по умолчанию.

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

Как создать пользователя с sudo

Рассмотрим как создать пользователя, имеющего права запускать команды с sudo.

Чтобы создать пользователя с sudo в Debian, Linux Mint, Ubuntu, Kali Linux и их производных выполните команду вида:

  • -m означает создать домашнюю директорию пользователя, если она не существует
  • -G sudo означает добавить пользователя в группу sudo
  • -s /bin/bash указывает оболочку входа пользователя
  • -c "КОММЕНТАРИЙ" указывает комментарий, который будет хранится в файле аккаунта — можно пропустить эту опцию
  • ПОЛЬЗОВАТЕЛЬ — это имя пользователя


В Arch Linux, BlackArch и их производных для создания пользователя с sudo выполните команду вида:

Обратите внимание, что в Arch Linux группа, дающее право на выполнение команд sudo, называется wheel, а не, собственно, sudo. Также мы добавили пользователя сразу в две группы, а не в одну, имя второй группы video. Если вы создаёте пользователя на системе без графического окружения, например, на безголовом сервере, то добавлять в группу video не нужно.

В CentOS для создания пользователя с sudo выполните команду вида:

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

Конфигурационный файл sudo

Программа sudo считывает конфигурацию из файла /etc/sudoers. Если в файле /etc/sudoers раскомментировать директиву

то дополнительно настройки будут считываться из всех файлов в директории /etc/sudoers.d.

которая откроет файл для редактирования. Кроме прочих функций, данная программа проверит синтаксис, и если в нём присутствует ошибка, то файл не будет сохранён.

При запуске visudo по умолчанию будет открыт файл /etc/sudoers. С помощью опции -f можно указать расположение файла в другом месте, например в /etc/sudoers.d.

Как разрешить пользователи выполнять только определённые команды с sudo

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

В файл /etc/sudoers нужно добавить строку вида:

В этой строке значения следующие:

  • Имя_пользователя: Это тот пользователь, кто инициировал выполнение команды с sudo
  • Имя_машины: Это имя хоста, где будет действительна команда sudo. Полезно если у вас много хостовых машин.
  • (Реальный_пользователь): Тот пользователь, от чьего имени будет выполнена команда.
  • Группа: группа, к которой принадлежит пользователь.
  • команда: команда или набор команд, разрешённых для запуска с sudo этому Пользователю.

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

Другой вариант, я хочу разрешить пользователю admin выполнять только команды /home/admin/backup.sh и /usr/bin/apt, и выполнять их он может только от root, тогда мне нужно добавить строку:

Обратите внимание, что если команд несколько, то они перечисляются через запятую без пробела.

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

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

Как узнать, какие sudo полномочия имеются у пользователя

Мы только что узнали, что у определённого пользователя могут быть ограниченные полномочия на выполнение команд с sudo. Как узнать, какие именно команды может выполнить пользователь или как проверить, сработали ли наши настройки в файле /etc/sudoers?

Для вывода всех разрешённых команд или для проверки определённой команды, используется опция -l. Но если не указать опцию -U с именем интересующего пользователя, то будут выведены данные для пользователя по умолчанию (root).

Пример проверки прав sudo для пользователя admin:


Строка «User admin may run the following commands on HackWare» означает «пользователь admin может запускать следующие команды на HackWare».

Также можно узнать, является ли та или иная команда заблокированной или разрешённой для выполнения пользователем с sudo следующим образом:

Если команда запрещена, то ничего не будет выведено:

Если команда разрешена, то будет выведен полный путь до файла:

Как настроить использование sudo без пароля

Данная настройка только для тех пользователей, кто действительно понимает зачем он это делает и какие риски безопасности это влечёт.

Чтобы отключить запрос пароля ПОЛЬЗОВАТЕЛЮ при вводе одной или нескольких КОМАНД с sudo:

Чтобы отключить запрос пароля ПОЛЬЗОВАТЕЛЮ при вводе любой команды с sudo:

Чтобы отключить запрос пароля всем пользователям при вводе одной или нескольких КОМАНД с sudo:

Чтобы отключить запрос пароля всем пользователям при вводе любой команды с sudo:

К примеру, чтобы разрешить пользователю admin выполнять команды /home/admin/backup.sh и /usr/bin/apt с sudo без необходимости ввода пароля, нужно добавить строку:

Это конец первой части. Во второй части мы рассмотрим другие интересные настройки и опции команды sudo.

Читайте также: