февраля 06, 2008

Раз и навсегда разберемся с root'ом и sudo

Итак, первое, с чем сталкивается пользователь, который представляет, как устроена Linux систма, — это отсутствие (точнее через чур неявное присутствие) пользователя root. Большинство других дистрибутивов требуют назначить пароль root’у, а только потом разрешают создать другого пользвоателя. В Ubuntu дело обстоит немного иначе.

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

su
 Как же быть? Да все проще простого, не надо паниковать. Мы просто будем использовать:
sudo
Эта команда означает действие суперпользователя. Вас попросят ввести пароль, и команда будет выполнена от лица root’а. Пароль сохранится в рамках сессии, то есть, если вы сразу введе следующую команду, начинающуюся с sudo, вам не придется заново вводить пароль.

Давайте рассмотрим на примере. Скажем, нам нужно скопировать файл con.fig в папку, например, /etc/superprogram/. Обычно мы написали бы следующее:
su
cp con.fig /etc/superprogram/
su — переключение в режим суперпользвоателя, cp — копирование. В Ubuntu все намного проще:
sudo cp con.fig /etc/superprogram/
По запросу нужно ввести пароль своего пользователя. То есть нам не нужен ни пользователь root, ни его пароль…

Понятно, что привычка страшная сила. Лично я настоятельно рекомендую изначально постараться перебороть силу привычки и всегда использовать sudo. Тем не менее, если вы категорически с этим несогласны, можно все-таки назначить пользователю root пароль и работыть по старой схеме. Для этого нужно выполнить следующую команду:
sudo passwd
Здесь важно понять, какой пароль в какой момент вводить. Первый раз у вас спросят пароль от текущего пользователя, чтобы выполнить команду через sudo. Второй раз спросят пароль, который вы хотите назначить пользователю root. Возможно, попросят повторить (:


Отмечу еще раз, я настоятельно не советую делать то, что описано выше. Параноя — превыше всего. И в заключение, если вы все-таки сделали то, что я не рекомендовал делать выше, у вас есть шанс вернуться на путь истиный, введя команду:
sudo passwd -l root
Это отключит пользователя root, а вы спокойно продолжите работать через sudo.

Надеюсь, это сообщение ответит на канонический вопрос начинающих пользователей Ubuntu: «Где в Ubuntu root и его пароль?»

7 коммент.:

Анонимный комментирует...

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

Не совсем так. Пароль сохранится, но только минут на 10. Если за это время не ввести больше ни одной sudo-команды, то в следующий раз пароль придётся вводить опять.

Ну а для любителей su есть sudo -i

[BlockDog] комментирует...

Ну, под сессией я подразумевал не сессию, например, Gnome, а именно сессию sudo (естественно, ограниченную по времени).
Спасибо за уточнение!

Анонимный комментирует...

А я имел в виду сессию bash :)

Unknown комментирует...

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

Анонимный комментирует...

неявное присутствия »» неявное присутствие

Камент служебный; как исправите, можно удалить. Спасибо за ваш полезный ликбез.

Анонимный комментирует...

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

[BlockDog] комментирует...

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