Root

Материал из LORWiki
Перейти к навигацииПерейти к поиску

Учётная запись суперпользователя, не предназначеная для регулярной работы.

Особенности[править]

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

chmod -R 777 /path/to/dir /*

и другие.

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

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

Случаи использования[править]

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

Установка и удаление ПО
Изменение настроек системы (не интерфейса пользователя, его настройки можно менять с нормальными правами)

Для выполнения такого рода задач существуют средства для временного повышения привилегий.

Причины не использовать[править]

В современных операционных системах нет интеллектуальной встроенной "защиты от дурака", средства которое распознавало и предупреждало бы случайные или намеренные разрушительные воздействия.

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

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

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

Название[править]

Правильное название аккаунта с UID 0 — суперпользователь (superuser). Правильная проверка, является ли данный аккаунт суперпользователем, — проверить, равен ли его UID нулю. В большинстве дистрибутивов Linux имя аккаунта суперпользователя — root, поэтому часто его называют именно так. Однако имя суперпользователя можно поменять: например, в дистрибутиве GoboLinux имя суперпользователя на спор заменили на "gobo" (потребовалось специально пропатчить ядро), а в будущих версиях обещали дать возможность придумать имя суперпользователя при установке. В некоторых других Unix-подобных системах аккаунт суперпользователя также назывался не root'ом, а иначе.

Инструменты для повышения привилегий[править]

Для выполнения отдельных административных действий от имени данной учётной записи существуют специальные механизмы: su и sudo.

Команда sudo[править]

Команда sudo предоставляет возможность пользователям выполнять отдельные команды от имени root, либо других пользователей.

Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers; язык их написания и примеры использования довольно подробно изложены в sudoers(5).

Редактирование данного файла лучше выполнять с помощью команды visudo - специальной прослойки к редактору vim (либо любому другому). visudo проверит перед сохранением файл на корректность. Кроме того используются другие механизмы защиты, например, создание файла блокировки для предотвращения одновременного редактирования файла /etc/sudoers.

Синтаксис /etc/sudoers[править]

Пример:

username  ALL=(ALL) ALL

Такая строка в этом файле разрешит пользователю username выполнить любую команду, при этом будет запрошен пароль текущего пользователя.

Синтаксис sudo[править]

Чтобы запустить команду от имени суперпользователя используйте следующий синтаксис:

  sudo command

Иногда возникают трудности, когда надо записать что-нибудь в файл с привилениями root. например надо выполнить echo 4 4 1 7 > /proc/sys/kernel/printk

выполнение напрямую ничего не даст:

  sudo echo 4 4 1 7 > /proc/sys/kernel/printk
  bash: /proc/sys/kernel/printk: Permission denied

так как sudo прекращает чтение команды на символе передачи вывода ">". И фактически вывод происходит с привилениями обычного пользователя. Чтобы избежать этого:

  sudo sh -c "echo 4 4 1 7 > /proc/sys/kernel/printk"

или, как вариант:

  echo 4 4 1 7 | sudo tee /proc/sys/kernel/printk > /dev/null

Попасть в шелл интерактивно аналогично работе su, используя параметр -s или -i:

  sudo -s

или

  sudo -i

указание параметра -i приводит к тому, что при выполнении команды sudo обрабатываются специфичные для процедуры входа в систему файлы (.login, .profile). Так же будут инициализированы переменные HOME, SHELL, USER, LOGNAME и PATH. Переменные DISPLAY и TERM сохранят свои текущие значения.

Примеры использования sudo[править]

Для редактирования общесистемного конфигурационного файла достаточно запустить с правами root текстовый редактор открыв этот файл, например:

sudo gedit /path/to/file.config
sudo nano /path/to/file.config
sudo vi /path/to/file.config

Или, почитав матчасть, вместо всего вышеперечисленного сделать:

sudo -e /path/to/file.config

Команда su[править]

su (set user) это команда Unix-подобных операционных систем, позволяющая пользователю временно войти в систему под другим именем, не завершая текущий сеанс. Обычно используется для временного входа суперпользователем для выполнения административных работ.

Команда su требует пароль того пользователя, права которого мы получаем (в нашем случае - пароль root).

Синтаксис su[править]

   su [-] [имя_пользователя [аргумент ... ]]

GUI[править]

Существуют графические фронтенды к этим командам, например:

  • kdesu (kde);
  • gksu, gksudo (gnome);

Безопасность при доступе по сети[править]

В настройках SSH-сервера имеет смысл запретить подключение от учётной записи root.

В sshd_config для этого следует выключить параметр PermitRootLogin:

PermitRootLogin no

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