Root и Linux


Кто такой root?

В отличие от ОС Windows, которые работают по принципу "Машина умнее человека", в результате чего некоторые вещи приходится делать с известной долей проблем (например, попробуйте создать резервную копию реестра), в Linux есть такая учётная запись, как root, зайдя под которой, можно сделать с системой всё, что угодно (особенно, если пользователь не знает, что творит). Поэтому при обычной работе никогда не используйте учётную запись root! Старайтесь вообще не заходить в систему под этим именем. А если необходимо что-нибудь настроить, то всегда можно сменить пользователя. Это делается командой su (switch user). Также можно использовать её для переключения текущего юзера. Например, если нужно что-нибудь выполнить от имени james, введите su james. По окончанию работы нажмите Ctrl+D или введите exit.

Я не буду утверждать, что такой способ лучше, чем в Windows, но то, что поломать систему при обязательной работе с обычной учётной записью намного труднее - факт. Кстати, большинство оконных менеджеров запрещают вход в систему с правами root. И правильно! Всё-таки практического применения этому нету (как правило, при запуске графических программ из меню спрашивается пароль), а работать под суперпользователем не рекомендуется.

Что же делать, если какой-нибудь нужной утилиты нету в меню (или есть, но пароль не спрашивается, и она отказывается работать)? Можно воспользоваться консолью и перед запуском написать что-нибудь из следующего. Показано на примере Synaptic:

$ kdesu synaptic - если установлен kde

 

$ gksu synaptic - если gnome

Не стоит забывать, что при их отсутствии можно доставить эти пакеты:

# aptitude install kdesu

или

# aptitude install gksu

Хотя, есть и более удобный вариант. Всё-таки права root'а обычно нужны для выполнения одной-двух команд, и менять пользователя для этого не нужно. А для повышения удобства работы есть такая великая вещь, как sudo, благодаря которой можно очень значительно сократить время пребывания под root'ом.

# aptitude install sudo

Теперь необходимо отредактировать файл /etc/sudoers. Для этого подойдёт специальная программа, очень смахивающая на культовый vi (и управление у него соответствующее - это очень мощный текстовый редактор, о котором можно говорить часами, вообще vim - тема отдельной статьи).

# visudo

У него есть два режима: командный и режим вставки. Для того, чтобы включить вставку, надо нажать клавишу "i". Теперь переходим в конец файла, жмем "i" и вводим (для пользователя james):

james ALL=(ALL) ALL

Так, наш james сможет выполнять любую команду от лица суперпользователя. Если нужно ограничить команды (например, нужно разрешить только aptitude), то строка будет вида:

james ALL=(ALL) /usr/bin/aptitude

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

Если вы не хотите, чтобы приходилось каждый раз вводить пароль, то нужно задать опцию NOPASSWD. Тогда строка будет выглядеть следующим образом:

james ALL=(ALL) NOPASSWD: /usr/bin/aptitude

Теперь выйдите из режима вставки, нажав ESC. Можно сохранить результаты, введя ":w". Если же вы что-то неправильно отредактировали, то отмена осуществляется по нажатию "u". По окончанию операций над файлом можно выйти, введя ":q". Если же вы после изменения исходной информации не хотите, чтобы они записывались, то можно выйти без сохранения по команде ":q!".

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

$ man sudoers

В результате вы получите все варианты использования различных опций.

Теперь всё настроено и работает (по крайней мере, должно :) ) И установить что-либо james может, введя просто:

$ sudo aptitude install anything

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

$ sudo mc

Вы сможете копировать, перемещать, удалять любые файлы. Только будьте осторожнее и не злоупотребляйте этими возможностями, потому что самые неприятные вещи случаются из-за банальной невнимательности. Как говорится, бережёного бог бережет. До встречи, уважаемые читатели.

Антон ЛИПАРИН,
oni@mail.by

Версия для печатиВерсия для печати

Номер: 

27 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя mike
>возможен запуск приложений и от имени root. Например, вот запуск Midnight Commander с неограниченными правами: $ sudo mc

Рут? А не надо ли для прав рута сначала ввести sudo -s ? Прошу простить глупый вопрос, я пока чайник.

Аватар пользователя Oni
sudo -s аналогично su, что в данном случае нам не нужно. Удобство sudo в том, что после выполнения команды не надо завершать работу с рутовскими правами
Аватар пользователя mike
>sudo -s аналогично su,...

Да? А это как объяснить (в пароле я не ошибался, несколько раз повторял терминальный диалог):

mike@mike-desktop:~$ su

Password:

su: Authentication failure

Извините.

mike@mike-desktop:~$ sudo -s

root@mike-desktop:~#

Аватар пользователя Oni
В первом случае необходим рутовый пароль, а во втором - пользовательский. Если у вас убунту, то там для рута не задан пароль, поэтому по-умолчанию его нельзя использовать.
Аватар пользователя mike
>В первом случае необходим рутовый пароль, а во втором - пользовательский.

Конечно. Откуда я заключаю, уважаемый Oni, что утверждение "sudo -s аналогично su" не является безоговорочной истиной. Да, у меня убунту. Что корневой юзер отключен - отлично знаю. На то и sudo. Короче, сохранение отредактированных с помощью mcedit конфигов после предварительного $ sudo mc не выполняется. Приходится предварительно через sudo -s входить в #-режим. Поэтому уверенное "вот запуск Midnight Commander с НЕОГРАНИЧЕННЫМИ правами: $ sudo mc" неверно, т.к. кому-то может понадобиться mcedit'ом отконфигурить что-то системное.

А в целом - спасибо за статьи. Читаю!

Аватар пользователя Oni
Всегда пожалуйста. А можно посмотреть /etc/sudoers ? А для конфигурации лучше (ИМО) все-таки vim использовать.
Аватар пользователя Matador
>>Поэтому уверенное "вот запуск Midnight Commander с НЕОГРАНИЧЕННЫМИ правами: $ sudo mc" неверно

Вы неправы. После Вашего поста закралось сомнение, но сейчас специально проверил - все нормально.

>>А для конфигурации лучше (ИМО) все-таки vim использовать

еще удачный выбор - mcedit

>>Откуда я заключаю, уважаемый Oni, что утверждение "sudo -s аналогично su" не является безоговорочной истиной

по результату действия они идентичны (в случае, конечно, если пароль рута установлен), а вот по способу - нет.

А вообще есть еще один вариант, причем официальный Ubuntu-way: sudo su.

Аватар пользователя mike
>Поэтому уверенное "вот запуск Midnight Commander с НЕОГРАНИЧЕННЫМИ правами: $ sudo mc" неверно

Да, тут я был неправ. Учусь! Вы не поверите - дома винду уже месяц не запускал. Кстати, знатоки, может стОит VMware на Линукс поставить, а в машину-гостью - винду; не лучше ли это, чем WINE-путь?

Аватар пользователя Matador
>>Кстати, знатоки, может стОит VMware на Линукс поставить

Как вариант. А еще лучше - VirtualBox (он в варианте OSE полностью бесплатен и полнофункционален). Плюс некоторые вкусные плюшки плюс не такое загаживание системы, как у VMWare. Но в таком случае возникает ряд ограничений. Например, в моем случае я использую VirualBox+WinXP для 1С-программирования, а WINE - для мсофиса (ну это если уж сильно припрет, а так - OpenOffice) и проч.