Таймаут запроса пароля при выполнении sudo
При выполнении команд через sudo
при первом запуске запрашивается пароль. Последующие команды выполняются уже без пароля. Через какой-то промежуток времени пароль запрашивается снова. По умолчанию время sudo-сессии 15 минут.
Рассмотрим, как изменить время запроса пароля для sudo, а также, как запрашивать пароль при каждом выполнении sudo.
Изменение времени сессии sudo
Необходимо изменить настройки sudo. Для этого выполните команду:
sudo visudo
Откроется текстовый редактор (обычно это nano) с конфигурационным файлом.
Найдите строку:
Defaults env_reset
Допишите в конце строки через запятую следующую опцию timestamp_timeout=x
. Должно получиться:
Defaults env_reset, timestamp_timeout=10
Здесь 10
— это и есть время в минутах через которое sudo будет запрашивать пароль.
Сохрание изменения и закройте редактор:
- Для этого нажмите сочетание клавиш Ctrl+X
. - Появится сообщение «Сохранить измененный буфер?
» (Save modified buffer?
), нажмите клавишу Y
, чтобы сохранить изменения или N
, чтобы отменить изменения. - Если на предыдущем шаге вы нажали Y
, то появится сообщение «Имя фала для записи: /etc/sudoers.tmp
» (File Name to Write: /etc/sudoers.tmp
) — просто нажмите клавишу Enter
.
— определяет время в минутах, которое должно пройти, чтобы при выполнении sudo снова запросился пароль. Время можно вводить целым или десятичным числом. Например, чтобы задать таймаут равным 2 с половиной минуты, нужно указать timestamp_timeout=2.5
.
Запрос пароля при каждом выполнении sudo
Если timestamp_timeout
указать равным , то пароль будет запрашиваться при каждом выполнении команды sudo.
Прервать sudo сессию
Если, например, вы уже ввели sudo пароль и вам необходимо сделать так, чтобы пароль был запрошен снова при следующем выполнении sudo, то можно прервать sudo сессию. Для этого используется ключ -k
. Выполните команду:
sudo -k
Теперь при следующем выполнении sudo, вновь будет запрошен пароль.
Войти в терминал как root
Предположим, вы открыли окно терминала и вам нужно выполнять какой-то набор команд от имени суперпользователя. Можно перед каждой командой вводить sudo, а можно внутри терминала запустить shell от имени root’а. Для этого используется ключ -s. Выполните команду:
sudo -s
Обратите внимание, что теперь вы работаете от имени пользователя root
, поэтому пока вы работаете в данном окне терминала, пароль для sudo вводите не нужно. Чтобы выйти из sudo-сессии (закрыть root-shell) выполните команду exit
. sudo -s
эквивалентно выполнению команды echo $SHELL
.
Использование sudo без ввода пароля в Ubuntu
На днях задумался о замечательной программе sudo
. Согласитесь, трудно представить свою жизнь без нее? Когда мне первый раз дали потрогать Linux Dedian в университетской лаборатории, я заходил с помощью команды su под администратора, вводил пароль и вытворял все, что душе угодно. Конечно же, в 85% случаев я не выходил из root-пользователя и в следующий раз удивлялся обилию заблокированных файлов в домашней директории. Но еще больше удивлялись студенты, которые работали за этой машиной после меня.
Тогда я думал: «Глупый линукс, кому нужны все эти права! Только лишние телодвижения». Сейчас мой взгляд на эту ОС изменился. Я поддался очарованию движения Open Source и возможности настроить в системе вообще все!
Но хватит вступлений. Вопрос, о котором я задумался, звучит так: «Можно ли использовать sudo без ввода пароля?». Оказалось, что да, но зачем?
Зачем использовать 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 под рутом без вводя пароля. Однако, это уже опаснее, потому что любой может переписать защищенные файлы с помощью рутованого редактора. Но с другой стороны, я единственный на всем белом свете пользуюсь своим ноутбуком, кому я нужен?
Эту настройку я проделывал на своей Ubuntu и на «соседском» ALT`е, указывать другие системы не стал, не могу утверждать, что там получится. На этом все, спасибо за внимание!