Энеке, бенеке, команда sudo
Команда sudo
— это ещё один способ ущемления прав пользователя при доступе к аккаунту администратора. До недавнего времени в Fedora по умолчанию он не применялся: соответствующий пакет надо было установить дополнительно и на строить руками. Однако, начиная с версии 14, при начальном постинсталляционном конфигурировании появилась опциональная возможность использовать sudo
для создаваемого при этом аккаунта.
По сравнению с su
команда sudo
она обладает рядом преимуществ, особенно сказывающихся при эпизодическом применении, и потому часто оказывается предпочтительной. Основных её отличий от su
— три:
- во-первых,
sudo
по умолчанию требует указания пароля того пользователя, который получает права другого, а не пароля того, чьи права приобретаются; правда, это может быть изменено; - во-вторых, действие
sudo
распространяется по умолчанию только на одну команду — ту, которая указывается в качестве её аргумента; хотя и такое поведение можно изменить с помощью соответствующих опций; - в-третьих,
sudo
обеспечивает более гибкое разграничение доступа пользователей к административным правам — не только разрешая или запрещая получение оных, но и позволяя выполнять только определённый круг действий.
Этими отличиями достигается две цели: а) возможность выполнения пользователем административных действий без сообщения ему суперпользовательского пароля, и б) снижение риска повредить систему вследствие забывчивости. Да, есть еще и третья, дополнительная возможность, предоставляемая sudo
— протоколирование действий, позволяющее определить, в результате чего система рухнула. И кого за это следует бить.
В элементарном виде применение команды sudo
— элементарно же просто: требуется лишь указать в качестве её аргумента имя команды, требующей исполнения, со всеми необходимыми последней опциями и аргументами. После этого запрашивается пароль запустившего её пользователя — и команда исполняется. Например, команда
$ sudo fdisk -l /dev/sda
данная от лица обычного пользователя, выведет информацию об указанном дисковом устройстве точно так же, как и данная root’ом.
Таким образом, утилита sudo
в самом простом случае действует аналогично команде su -c [command]
, но более удобным образом. Во-первых, её команда-аргумент не нуждается ни в каком экранировании. Во-вторых, в должным образом настроенной оболочке bash
(как -- было описано ранее) в отношении команд-аргументов и путей — аргументов последних, будет действовать автодополнение по нажатию клавиши Tab. Уже одно это определяет предпочтительность sudo
супротив su
.
Кстати, если от лица суперпользователя нужно выполнить подряд несколько команд, делать это следует быстро — введенный первый раз пароль по умолчанию “действует” в течении 5 минут. То есть в течении этого времени в ответ на команду sudo
пароль повторно запрашиваться не будет.
Период действия пароля для команды sudo
можно увеличить, уменьшить или вообще ликвидировать, чтобы аутентификация запрашивался всегда. Это достигается редактированием конфигурационного файла утилиты, о чём подробно было написано на соответствующей странице основного проекта,
Аналогичным образом пользователь может отредактировать общесистемный конфигурационный файл, например:
$ sudo nano -w /etc/fstab
Впрочем, для редактирования общесистемных конфигов предназначена специальная команда sudoedit
(или просто sudo
с опцией -e
). Она не требует указания имени вызываемого для этой цели редактора: в качестве такового используется значение переменной EDITOR
из окружения того пользователя, который её вызвал (подробнее об этом -- на следующей странице ).
Как это ни парадоксально, команда sudo
не исключает запуска администраторского сеанса внутри обычного пользовательского. Потому что с ее помощью можно запустить ту же команду su
:
$ sudo su
Это делает ненужным знание административного пароля даже при его изменении — ведь для этого достаточно дать команду
$ sudo passwd
Впрочем, и тут команда sudo
предусматривает “идеологически правильный” метод, и даже не один. Это — опции -s
и -i
, пролонгирующие, хотя и несколько по разному, действие команды sudo
на неопределённый срок, вплоть до завершения “вторичного сеанса” командой exit
.
Опция -s
, открывая вторичный сеанс root’а, сохраняет все переменные окружения первоначального пользователя. Однако, если к ней добавить опцию -H
, то переменные эти будут заново считаны из профильных файлов домашнего каталога администратора, то есть /root
, как при запуске интерактивного экземпляра шелла. Однако каталог, бывший текущим в момент ввода команды, при этом не изменится, как не изменится и вид приглашения командной строки.
Опция же -i
полностью воспроизводит root-окружение, запуская его командную оболочку как регистрационную (login shell). Разумеется, при этом и текущий каталог меняется на /root, а приглашение командной строки приобретает вид, описанный в соответствующей переменной профильного файла администраторского шелла (в bash
— PS1
, см. здесь).
На практике разница между обеими формами обретения перманентных прав администратора не велика, особенно в bash
. Но то, что при использовании опций -H
нахождение в перманентно административном режиме никак внешне не проявляется, чревато ошибками. И делает в большинстве случаев применение опции -i
предпочтительным.
Команду sudo
можно запустить так, чтобы она запрашивала пароль пользователя, от имени которого будет выполняться команда (например, администратора), а не того, кто требует его полномочий. Для этого существует опция -targetpw
. А чтобы сделать требование root’ового пароля постоянным, достаточно определить, например, псевдоним типа
alias sudo -targetpw
Команда sudo
имеет еще немало опций — например, опцию -b
, предписывающую запускать “подсудную” команду в фоновом режиме. Она может быть полезна при выполнении долговременных действий, например, при копировании образов USB на флэшку командой dd
.
А некоторые подробности о работе sudo
т её настройках можно прочитать здесь и здесь.
Главная
Содержание . .