Как сделать чтобы sudo не требовал пароль для выполнения команд

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

sudo это сокращение от английского

substitute user and do

Что по-русски звучит как

подменить пользователя и выполнить

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

Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач.

Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.

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

Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers (для редактирования файла можно использовать специальный редактор visudo, запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в man sudoers(5).

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

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

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

Как сделать sudo

Чтобы пользователь мог выполнить команду sudo успешно, он должен быть добавлен в группу sudo (Debian, Ubuntu…) или wheel (Rocky, CentOS, RedHat …)

Проверить состоит ли пользователь andrei в sudo можно командой

Если результат примерно такой

andrei cdrom floppy audio dip video plugdev netdev bluetooth lpadmin scanner

То есть sudo в списке нет. Нужно добавить его командой

adduser andrei sudo

usermod -aG wheel $(whoami)

Если всё прошло успешно, Вы можете проверить, что sudo теперь в списке групп

andrei cdrom floppy sudo audio dip video plugdev netdev bluetooth lpadmin scanner

Если что-то пошло не так - прочитайте примечания.

Примечание 1

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

Начиная с 10-й версии это не так тривиально, советую прочитать предыдущий параграф bash: adduser: command not found

Примечание 2

Если в одном терминале Вы видите, что пользователь уже в группе sudo а в другом терминале он не может выполнить sudo - выполните команду

И залогиньтесь снова.

Примечание 3

Описание того, кто и как может использовать sudo находится в файле /etc/sudoers

Редактировать его напрямую не нужно, можно зайти в /etc/sudoers.d либо вызвать из-под root утилиту

Разрешить пользователю не вводить пароль при выполнении sudo

Убедитесь, что пользователь добавлен в группу sudo (wheel для .rpm)

Добавьте в конец файла

username ALL=(ALL) NOPASSWD:ALL

Теперь пользователь username сможет выполнять все команды sudo без ввода пароля. Это очень удобно для работы с локальными виртуальными машинами

Например, я добавляю

andrei ALL=(ALL) NOPASSWD:ALL

Саму команду sudo всё-равно нужно писать

Можно достичь этого результата не открывай файл

echo "andrei ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/andrei

Примеры

%admin ALL=(ALL) ALL

user1 ALL=(user2, user3)NOPASSWD: ALL

backup ALL=NOPASSWD: /usr/bin/rsync

Как добавить русский язык для клавиатуры

Открываем файл /etc/default/keyboard командой

sudo vi /etc/default/keyboard

Находим нужные строчки

И добавляем ,ru в XKBLAYOUT="us" grp:ctrl_shift_toggle в XKBOPTIONS=""

Получится такой кусок

XKBLAYOUT="us,ru" XKBVARIANT="" XKBOPTIONS="grp:ctrl_shift_toggle"

Примечание 1

Если у Вас вызывает трудности редактирование файлов в редакторе vi Прочитайте статью

usermod: group 'sudo' does not exist

Если вы попытались добавить пользователя в группу sudo с помощью usermod и получили

Отключить пароль SUDO в Linux

Для того чтобы отключить пароль sudo для определенного пользователя нужно открыть файл конфигурации sudo и отключить запрос пароля, например для пользователя user :

Открываем файл конфигурации ( sudoers ), так:

В конец файла добавляем строчку:

Сохраняем изменения ( Ctrl+S ) и закрываем файл ( Ctrl+X ).
Теперь sudo не будет запрашивать пароль у user 'a при выполнении любых команд.

Для того чтобы разрешить пользователю выполнять только некоторые команды без пароля (например apt и reboot ) добавим другую строку:

На днях задумался о замечательной программе sudo. Согласитесь, трудно представить свою жизнь без нее? Когда мне первый раз дали потрогать Linux Dedian в университетской лаборатории, я заходил с помощью команды su под администратора, вводил пароль и вытворял все, что душе угодно. Конечно же, в 85% случаев я не выходил из root-пользователя и в следующий раз удивлялся обилию заблокированных файлов в домашней директории. Но еще больше удивлялись студенты, которые работали за этой машиной после меня.

Зачем использовать sudo без ввода пароля?

Объясню, зачем это нужно и почему удобно лично для меня. У меня есть локальный сервер Apach2, на котором я частенько провожу всякие эксперименты, тренирую php, учу Zend Framework и многое другое. В общем, издеваюсь над ним. Как порядочный пользователь, я включаю его, когда он мне нужен и выключаю, когда наиграюсь. Это делается с помощью двух команд.

sudo /opt/lampp/lampp start
sudo /opt/lampp/lampp stop

Ламп-сервер лежит в директории /opt , которая защищена от вторжения рядовых пользователей, поэтому без применения sudo не обойтись. Проблема в том, что мне надоедает каждый раз вводить пароль для такой элементарной операции. Кроме того, я не буду против, если кто-нибудь подойдет и включит apach без моего разрешения, пожалуйста. Можете даже выключить. Поэтому ставить пароль на эти команды вовсе необязательно. Решение нашлось мгновенно и в нем нет ничего сложного, главное сделать все внимательно и сосредоточено. В прочем, все, что касается настройки Linux нужно делать медленно и вдумчиво, утверждаю основываясь на собственном горьком опыте. Поэтому ловим максимальную концентрацию и приступаем к настройке.

Настройка

Система: Linux Ubuntu 16.04, ALT Linux.

Необходимый конфигурационный файл лежит по адресу /etc/sudoers . Первое и самое важное, чему меня научил год непрерывной работы с Linux, нужно сделать резервную копию.

sudo cp /etc/sudoers /etc/sudoers_copy

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

Теперь про сам файл. Открываем его.

sudo nano /etc/sudoers

Листаем в самый низ и дописываем правило.

kirill ALL = NOPASSWD: /opt/lampp/lampp start

Сначала идет имя пользователя, для которого устанавливается правило. Затем домен, в нашем случае ALL — все домены. После равно, с помощью незамысловатого слова NOPASSWD просим не спрашивать пароль для команды, которая стоит после двоеточия.

Внимание, важно! Чтобы файл с настройками работал после нашего внедрения, в конец, сразу после правила нужно добавить один символ переноса строки(одну пустую строку). Иначе при попытке использовать sudo будет выдаваться предупреждение о том, что невозможно корректно считать файл с конфигурацией.

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

Заключение

Конфигурировать программы в Linux это очень весело, теперь я не трачу лишних три секунды на ввод пароля, чудесный прирост производительности! Кроме апача, очень удобно запускать sublime text под рутом без вводя пароля. Однако, это уже опаснее, потому что любой может переписать защищенные файлы с помощью рутованого редактора. Но с другой стороны, я единственный на всем белом свете пользуюсь своим ноутбуком, кому я нужен?

В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

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

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo .

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

Что такое sudo

sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

Где используется sudo

sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic - это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

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

Запуск графических программ с правами администратора

Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

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

Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

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

Запуск программ с правами администратора в терминале

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

У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.

Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

Получение прав суперпользователя для выполнения нескольких команд

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

Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .

Использование традиционного root аккаунта и команды su

Ubuntu 11.04 и младше

Для входа под root достаточно задать ему пароль:

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu 11.10 и старше

Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

В конце файла допишите:

3. Перезагружаем lightdm. Введите в терминал:

Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

Настройка sudo и прав доступа на выполнение различных команд

sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

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

И в конец файла дописать строку

Создание синонимов (alias`ов)

Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее: откройте файл .bashrc, находящейся в вашем домашнем каталоге

и добавьте в конец файла строки

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

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

Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут. Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

sudo не спрашивает пароль

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

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

Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

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