Меню

Настройка sudo в ubuntu



Настройка sudo под Linux

Этот текст не является переводом полного руководства. Если вы администрируете систему с большим количеством пользователей и сложным распределением полномочий, то очень советую почитать документацию. Но, если вам просто надо выдать определённому пользователю определённые права, то в этой заметке в скорее всего найдёте готовый рецепт.

Как редактировать sudoers (visudo)

Редактировать файл sudoers «вручную» — плохая практика. Для редактирования есть специальная команда visudo . Она сама знает, где расположен файл sudoers , и отследит, чтобы вы редактировали копия, файл всегда был целостным, а копия была удалена.

visudo позволяет использовать любой редактор. Например, вы можете использовать mcedit:

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

В этом случае, лучше ввести букву « e » и продолжить редактирование.

Настройка прав доступа sudo

Файл sudoers , обычно, содержит много комментариев. В каждой системе/дистрибутиве они различны. Имеет смысл ознакомиться с ними и, возможно, внести какие-то правки глобальных настроек.

Особое внимание следует обратить на директивы

за ними скрывается ещё куча всего интересного.

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

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

Простой пример

Это означает, что пользователь alex , может выполнить с правами root команду /bin/mount /media/n78 .

Обратите внимание, путь к команде mount указан полностью. Это важно! Если этого не сделать, то sudo работать не будет.

Теперь пользователь alex может выполнить команду

У него будет спрошен пароль (его, а не root).

Продвинутые правила sudo

Можно написать более сложные правила:

alex ALL=(ALL) ALL alex ALL=(root) NOPASSWD: /bin/mount /media/n78 alex ALL=(root) NOPASSWD: /bin/umount /media/n78

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

Флаги

Более полный пример с использованием флагов:

Флагов существует великое множество, смотрите документацию.

Приоритет правил

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

Проверка конфигурации

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

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

Источник

Использование sudo в Ubuntu для начинающих пользователей

Оригинал: A beginner’s guide to understanding sudo on Ubuntu
Автор: Himanshu Arora
Дата публикации: 13 февраля 2017 г.
Перевод: А.Панин
Дата перевода: 22 марта 2017 г.

Вы когда-нибудь сталкивались с ошибкой «Permission denied» в процессе работы с интерфейсом командной строки Linux? Если это так, то велика вероятность того, что вы пытались выполнить операцию, требующую привилегий пользователя root. Например, на следующей иллюстрации показано сообщение об ошибке, выведенное после моей попытки копирования бинарного файла в одну из системных директорий.

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

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

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

Читайте также:  Факс настройка времени даты

Но перед тем, как двигаться дальше, следует упомянуть о том, что все приведенные в статье команды и инструкции были протестированы в системе Ubuntu 14.04 LTS с командной оболочкой Bash версии 4.3.11.

Что такое sudo?

Команда sudo, как большинство из вас наверняка знает, используется для исполнения команд с повышенными привилегиями (обычно от лица пользователя root). Во вводной части я уже привел пример ее использования. Однако, если вам нужно, вы можете использовать данную команду для исполнения другой команды от лица какого-либо другого пользователя (не обязательно являющегося пользователем root).

Для этой цели предназначен параметр -u . Так, в приведенном ниже примере я (himanshu) попытался переименовать файл из директории другого пользователя (howtoforge), но получил в результате ошибку «Permission denied». После этого я выполнил ту же команду mv с префиксом sudo, то есть, sudo -u howtoforge и на этот раз попытка переименования файла успешно завершилась.

С sudo может работать любой пользователь?

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

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

Если вы используете Ubuntu, вы можете достаточно просто убедиться в том, что пользователь может работать с sudo: все, что вам нужно — это выбрать в качестве типа учетной записи данного пользователя вариант «Администратор». Это может быть сделано после перехода по системному меню Параметры системы. -> Учетные записи.

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

После этого следует выбрать интересующую учетную запись пользователя и сменить ее тип на «Администратор» .

Однако, в том случае, если вы используете не Ubuntu или в вашем дистрибутиве нет подобной функции, вы можете добиться аналогичного эффекта путем ручного редактирования файла /etc/sudoers . Вам придется добавить в этот файл следующую строку:

Думаю, не стоит лишний раз напоминать о том, что вместо строки «имя пользователя» должно использоваться реальное имя учетной записи пользователя, которому предоставляется возможность работы с sudo. Важный нюанс, о котором стоит сказать отдельно, заключается в том, что в официальной документации для редактирования упомянутого файла рекомендуется использовать команду visudo — вам всего лишь придется выполнить следующую команду:

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

Утилита visudo позволяет безопасно редактировать файл sudoers . visudo блокирует файл sudoers для предотвращения одновременного редактирования несколькими пользователями, осуществляет простейшие проверки корректности инструкций и поиск синтаксических ошибок. Если файл sudoers в текущий момент редактируется, вы получите сообщение о том, что следует предпринять попытку его редактирования через некоторое время.

Читайте также:  Realtek настройка оптического выхода

Для получения дополнительной информации об утилите visudo вы можете перейти по данной ссылке .

Что такое сессия sudo?

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

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

Однако, при желании вы можете изменить описанное поведение. Для этого следует открыть файл конфигурации /etc/sudoers с помощью следующей команды:

После этого нужно перейти к строке

и добавить в конец этой строки следующую переменную с новым значением (выделено жирным шрифтом):

Поле «[новое значение]» должно быть заменено на количество минут, в течение которых должна существовать ваша сессия sudo. К примеру, я использовал значение 40.

Если вы хотите, чтобы запрос пароля осуществлялся при каждом использовании команды sudo, вы можете установить значение 0 данной переменной. А если вам нужно, чтобы сессия sudo длилась вечно, вы можете установить значение -1 данной переменной.

Пожалуйста учтите, что использование значения -1 рассматриваемой переменной настоятельно не рекомендуется.

Пароль sudo

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

К счастью, соответствующий режим ввода пароля достаточно просто активировать. Все, что вам нужно сделать — это изменить следующую строку в файле /etc/sudoers :

После этого нужно сохранить изменения в файле.

Теперь при вводе пароля в процессе работы с утилитой sudo будут отображаться звездочки.

Некоторые важные параметры команды sudo

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

Параметр -k

Предположим, что вы только что выполнили команду посредством sudo и ввели свой пароль. Как вы знаете, по умолчанию sudo не будет спрашивать пароль в течение следующих 15 минут. А теперь предположим, что вам понадобилось предоставить кому-либо доступ к своему терминалу без возможности использования sudo. Что можно предпринять в этом случае?

К счастью, существует параметр -k , позволяющий принудительно завершить сессию sudo. А вот что написано о данном параметре на странице руководства sudo:

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

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

Читайте также:  Kdl bravia цифровой телевидение настройка

Параметр -s

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

В этом случае вам может пригодиться параметр -s . Это описание данного параметра со страницы руководства sudo:

Запустить командную оболочку, путь к бинарному файлу которой задан с помощью переменной окружения SHELL , если таковая существует, или командную оболочку, путь к бинарному файлу которой задан в параметрах учетной записи вызывающего пользователя. В случае использовании команды, она будет передана в эту командную оболочку для последующего исполнения посредством стандартного параметра -c . Если команды не задано, пользователю будет предоставлен доступ к запущенной интерактивной командной оболочке.

Итак, данный параметр выполняет следующие действия:

  1. Запускает новую командную оболочку, путь к бинарному файлу которой задан с помощью переменной окружения $SHELL . В том случае, если переменная окружения $SHELL имеет пустое значение, запускается командная оболочка, путь к бинарному файлу которой указан в строке с описанием параметров учетной записи текущего пользователя в файле /etc/passwd .
  2. Если вы передаете команду вместе с параметром -s (например, исполняя команду sudo -s whoami ), то исполняется следующая команда: sudo /bin/bash -c whoami .
  3. Если вы не пытаетесь исполнить какую-либо свою команду (то есть, просто исполняете команду sudo -s ), вы получаете доступ к интерактивной командной оболочке с привилегиями пользователя root.

Следует иметь в виду, что параметр -s предоставляет в ваше распоряжение командную оболочку с привилегиями пользователя root, но без окружения пользователя root — эта командная оболочка будет использовать ваш файл .bashrc . По сути, это означает, что, к примеру, при исполнении с помощью этой командной оболочки команды whoami будет выводиться ваше имя пользователя, а не root.

Параметр -i

Параметр -i похож на параметр -s , который мы только что обсуждали. Однако, между ними имеются некоторые отличия. Одно из ключевых отличий заключается в том, что параметр -i также предоставляет вам окружение пользователя root, поэтому ваш (пользовательский) файл .bashrc игнорируется. Это сравнимо с использованием учетной записи пользователя root без входа в систему под именем пользователя root. Кроме того, вам не придется вводить пароль пользователя root.

Важное замечание: помните о том, что существует также команда su , которая позволяет работать от лица других пользователей (по умолчанию вы становитесь пользователем root). Данная команда требует ввода пароля пользователя root. Для того, чтобы избежать необходимости ввода пароля этого пользователя, вы можете также использовать префикс sudo (то есть, команду sudo su ); в этом случае вам придется ввести ваш пароль. Однако, команды su и sudo su имеют некоторые отличия; для того, чтобы разобраться с ними, а также ознакомиться со сравнением данных команд с командой sudo -i достаточно обратиться к обсуждению, доступному по данной ссылке .

Заключение

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

Источник

Adblock
detector