Red Hat System Administration I 8.2

Глава 2. Доступ к командной строке

Аннотация

Цель Вход в систему Linux и выполнение простых команд с помощью командной оболочки
Задачи
  • Вход в систему Linux на локальной текстовой консоли и выполнение простых команд с помощью командной оболочки

  • Вход в систему Linux с помощью среды рабочего стола GNOME 3 и выполнение команд из командной оболочки в программе терминала

  • Использование автодополнения по клавише Tab, истории команд и быстрых клавиш редактирования для выполнения команд в командной оболочке Bash

Разделы
  • Доступ к командной строке (и тест)

  • Доступ к командной строке с помощью рабочего стола (и упражнение)

  • Выполнение команд с помощью командной оболочки Bash (и тест)

Лабораторная работа

Доступ к командной строке

Доступ к командной строке

Задачи

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

Введение в командную оболочку Bash

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

Командная оболочка по умолчанию для пользователей Red Hat Enterprise Linux — GNU Bourne-Again Shell (bash). Bash — это улучшенная версия одной из самых успешных командных оболочек в UNIX-подобных системах, Bourne Shell (sh).

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

[user@host ~]$ 

Символ $ заменяется символом #, если оболочка запущена с правами привилегированного пользователя (root). Благодаря этому можно легко отличить командную оболочку для привилегированного пользователя и избежать ошибок, которые могут повлиять на всю систему. Приглашение оболочки привилегированного пользователя показано ниже.

[root@host ~]# 

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

Примечание

Оболочка bash сходна по смыслу с интерпретатором командной строки в последних версиях Microsoft Windows (cmd.exe), хотя у bash более сложный язык сценариев. Также имеется сходство с Windows PowerShell в Windows 7 и Windows Server 2008 R2. Администраторы, пользующиеся утилитой Terminal на Apple Mac, будут рады узнать, что bash является командной оболочкой по умолчанию в Mac OS.

Основные сведения о командной оболочке

Команды, вводимые в командную оболочку, имеют три основные части:

  • команда, которая будет выполнена;

  • опции для настройки поведения команды;

  • аргументы, которые обычно являются целями команды.

Команда ― это имя запускаемой программы. За ней могут следовать опции, которые настраивают поведение команды или указывают ее действие. Обычно опции начинаются с одного или двух дефисов (например, -a или --all), чтобы можно было отличить их от аргументов. За командой также могут следовать аргументы, которые часто указывают целевой объект, над которым должна выполнять определенные действия команда.

Например, команда usermod -L user01 состоит из собственно команды (usermod), опции (-L) и аргумента (user01). Результатом выполнения этой команды будет блокировка пароля для учетной записи пользователя user01.

Вход на локальный компьютер

Для работы с командной оболочкой необходимо войти в систему на компьютере, используя терминал. Терминал ― это текстовый интерфейс, используемый для ввода команд в компьютерную систему и получения вывода из нее. Сделать это можно несколькими способами.

Компьютер может быть оснащен аппаратной клавиатурой и дисплеем для ввода и вывода, подключенными к нему напрямую. Это физическая консоль компьютера Linux. Физическая консоль поддерживает несколько виртуальных консолей, которые могут работать с отдельными терминалами. Каждая виртуальная консоль поддерживает независимый сеанс входа в систему. Для переключения между ними необходимо одновременно нажать Ctrl+Alt и функциональную клавишу (с F1 по F6). Большинство этих виртуальных консолей запускают терминал с текстовым приглашением к входу, и если вы правильно введете имя пользователя и пароль, то войдете в систему и увидите приглашение командной оболочки.

Компьютер может предоставить графическое приглашение к входу на одной из виртуальных консолей. Вы можете использовать его, чтобы войти в графическую среду. Графическая среда также работает на виртуальной консоли. Чтобы увидеть приглашение командной оболочки, необходимо запустить программу терминала в графической среде. Приглашение командной оболочки предоставляется в окне графической программы терминала.

Примечание

Многие системные администраторы предпочитают не запускать графическую среду на своих серверах. Это позволяет серверным службам использовать ресурсы, которые в противном случае расходовались бы графической средой.

Если в Red Hat Enterprise Linux 8 доступна графическая среда, экран входа в систему будет запущен на первой виртуальной консоли, называемой tty1. Пять дополнительных текстовых приглашений для входа доступны на виртуальных консолях со второй по шестую.

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

Графический экран входа продолжает работать на первой виртуальной консоли (tty1). Если вы уже вошли в графический сеанс и входите в систему как другой пользователь на графическом экране входа или используете пункт меню Switch User для переключения пользователей в графической среде без выхода из системы, на следующей свободной виртуальной консоли будет запущена еще одна графическая среда для этого пользователя.

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

Примечание

В Red Hat Enterprise Linux 6 и 7 графический экран входа запускается на первой виртуальной консоли, но, когда вы выполняете вход, ваша исходная графическая среда заменяет экран входа на первой виртуальной консоли, вместо того чтобы запускать новую виртуальную консоль.

В Red Hat Enterprise Linux 5 и более ранних версиях первые шесть виртуальных консолей всегда отображали текстовые приглашения для входа. Если графическая среда запускалась, это происходило на седьмой виртуальной консоли (доступной нажатием Ctrl+Alt+F7).

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

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

Вход по сети

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

В Linux наиболее распространенный способ получить приглашение командной оболочки в удаленной системе ― это использовать безопасную оболочку (Secure Shell, SSH). Большинство систем Linux (в том числе Red Hat Enterprise Linux) и macOS предоставляют для этого программу командной строки OpenSSH ― ssh.

В этом примере пользователь с приглашением оболочки на машине host использует ssh для входа в удаленную систему Linux remotehost от имени remoteuser.

[user@host ~]$ ssh remoteuser@remotehost
remoteuser@remotehost's password: password
[remoteuser@remotehost ~]$

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

Некоторые системы (например, новые облачные экземпляры) не позволяют использовать пароль для входа с помощью ssh для более надежной защиты. Альтернативный способ аутентификации на удаленной машине без ввода пароля ― аутентификация по открытому ключу.

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

В следующем примере пользователь с приглашением командной оболочки на машине host входит на remotehost как remoteuser с помощью ssh, используя аутентификацию по открытому ключу. Опция -i используется для указания файла закрытого ключа пользователя (mylab.pem). Соответствующий открытый ключ уже настроен как авторизованный ключ в учетной записи remoteuser.

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost
[remoteuser@remotehost ~]$

Чтобы команда сработала, файл закрытого ключа должен быть доступен для чтения только пользователю, которому принадлежит этот файл. В предыдущем примере, в котором закрытый ключ находится в файле mylab.pem, для этого можно было бы использовать команду chmod 600 mylab.pem. Настройка разрешений на доступ к файлам рассматривается более подробно в последующей главе.

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

Примечание

При первом входе на новую машину будет показано предупреждение от ssh о невозможности установить подлинность хоста.

[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost
The authenticity of host 'remotehost (192.0.2.42)' can't be established.
ECDSA key fingerprint is 47:bf:82:cd:fa:68:06:ee:d8:83:03:1a:bb:29:14:a3.
Are you sure you want to continue connecting (yes/no)? yes
[remoteuser@remotehost ~]$

Каждый раз, когда вы подключаетесь к удаленному хосту с помощью ssh, этот хост отправляет команде ssh свой ключ хоста для прохождения аутентификации и установки зашифрованного подключения. Команда ssh сравнивает его со списком сохраненных ключей хоста, чтобы убедиться, что он не изменился. Если ключ хоста изменился, это может означать, что кто-то пытается выдать себя за этот хост, чтобы перехватить подключение (это также называют атакой «злоумышленник в середине»). В SSH ключи хоста защищены от атак «злоумышленник в середине». Эти ключи уникальны для каждого сервера, и их необходимо менять периодически и всякий раз, когда возникает подозрение о компрометации.

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

Если на локальном компьютере сохранен ключ хоста и он не совпадает с ключом, отправленным удаленным хостом, подключение автоматически прерывается с предупреждением.

Выход

Если вы закончили работу с командной оболочкой и хотите выйти, завершить сеанс можно несколькими способами. Можете ввести команду exit, чтобы завершить текущий сеанс командной оболочки. Чтобы завершить сеанс, можно также нажать Ctrl+D.

Ниже приведен пример выхода пользователя из сеанса SSH.

[remoteuser@remotehost ~]$ exit
logout
Connection to remotehost closed.
[user@host ~]$

Ссылки

Man-страницы intro(1), bash(1), console(4), pts(4), ssh(1) и ssh-keygen(1)

Примечание. Некоторые сведения на man-странице console(4), касающиеся init(8) и inittab(5), являются устаревшими.

Дополнительные сведения об OpenSSH и аутентификации по открытому ключу см. в главе Using secure communications between two systems with OpenSSH руководства Red Hat Enterprise Linux 8 Securing networks: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/securing_networks/index#using-secure-communications-between-two-systems-with-openssh_securing-networks

Примечание

Инструкции о том, как читать man-страницы и другую справочную онлайн-документацию, приведены в конце следующего раздела.