Книга «Библия Linux. 10-е издание»
Привет, Хаброжители! Полностью обновленное 10-е издание «Библии Linux» поможет как начинающим, так и опытным пользователям приобрести знания и навыки, которые выведут на новый уровень владения Linux. Известный эксперт и автор бестселлеров Кристофер Негус делает акцент на инструментах командной строки и новейших версиях Red Hat Enterprise Linux, Fedora и Ubuntu. Шаг за шагом на подробных примерах и упражнениях вы досконально поймете операционную систему Linux и пустите знания в дело. Кроме того, в 10-м издании содержатся материалы для подготовки к экзаменам на различные сертификаты по Linux.
Linux — основа большинства технологических прорывов в облачных вычислениях, поэтому вы должны как следует понимать эту систему, чтобы эффективно работать в дата-центрах будущего. Азы Linux, изложенные в начале книги, пригодятся в дальнейших главах, где автор рассказывает, как развертывать системы Linux в качестве гипервизоров, облачных контроллеров и виртуальных машин, а также как управлять виртуальными сетями и сетевыми хранилищами данных.
«Библия Linux» рассказывает, как:
- приступить к работе с Linux;
- защитить системы и сети с Linux;
- реализовать автоматизацию дата-центра с помощью Ansible;
- упростить системное администрирование с помощью Cockpit;
- получить доступ к командной оболочке и писать простые скрипты;
- изучить контейнеризацию с применением Docker и Podman и, в частности, оркестрацию контейнеров с использованием Kubernetes и OpenShift;
- конфигурировать различные серверы и устранять распространенные проблемы;
- создавать виртуальные машины Linux, работающие на гипервизорах и облачных платформах.
Файловая система
- Файловая система Linux.
- Атрибуты файлов и каталогов.
- Создание файлов и каталогов.
- Изменение владельца и прав доступа.
- Копирование и перемещение файлов.
Файловая система Linux — это структура, в которой хранится вся информация на компьютере. Фактически одним из определяющих свойств систем UNIX, на которых основана Linux, является то, что почти все, что находится в вашем компьютере (данные, команды, символические ссылки, устройства и каталоги), представлено элементами файловых систем. Для работы с Linux очень важно знать, где что находится и как задействовать файловую систему из оболочки.
В Linux организована иерархия каталогов. В каждом каталоге находятся файлы и другие каталоги. Можно создать ссылку на любой файл или каталог, используя либо полный путь (например, /home/joe/myfile.txt), либо относительный путь (например, если /home/joe — это текущий каталог, то можно просто ссылаться на файл через myfile.txt).
Если составить карту файлов и каталогов в Linux, то она будет выглядеть как перевернутое дерево. Вверху находится корневой каталог (также называемый каталогом root), который представлен одной косой чертой (/). Ниже располагается список общих каталогов системы Linux, таких как bin, dev, home, lib и tmp. Каждый из них, а также каталоги, добавленные в корневой, могут содержать подкаталоги.
На рис. 4.1 показано, как организована файловая система Linux. В качестве примера связи каталогов здесь приведен каталог /home, содержащий подкаталог для пользователя joe. В каталоге joe находятся подкаталоги Desktop, Documents и др. Чтобы добраться до файла memo1.doc, находящегося в каталоге memos, нужно ввести полный путь к нему: /home/joe/Documents/memos/memo1.doc. Если текущий каталог — /home/joe/, то можно ввести Documents/memos/memo1.doc.
Некоторые из этих каталогов Linux могут вас заинтересовать.
- /bin — содержит общие пользовательские команды Linux, такие как ls, sort, date и chmod.
- /boot — включает в себя загрузочное ядро Linux, диск начальной инициализации и файлы конфигурации загрузчика (GRUB).
- /dev — содержит файлы, представляющие точки доступа к устройствам в системах пользователя. К ним относятся устройства терминала (tty*), жесткие диски (hd* и sd*), оперативная память (ram*) и CD-ROM (cd*). Пользователи могут получить доступ к этим устройствам непосредственно через файлы устройств, однако приложения часто скрывают фактические имена устройств от конечных пользователей.
- /etc — содержит файлы конфигурации администратора. Большинство этих файлов являются обычными текстовыми файлами, которые, если у пользователя есть соответствующие права доступа, можно отредактировать с помощью любого текстового редактора.
- /home — содержит каталоги, назначенные каждому обычному пользователю с учетной записью входа. (Суперпользователь — исключение, он использует /root в качестве домашнего каталога.)
- /lib — содержит общие библиотеки, необходимые приложениям в /bin и /sbin для загрузки системы.
- /media — стандартное расположение для автоматически монтируемых устройств, в частности съемных носителей. Если у тома носителя есть имя, то оно обычно используется в качестве точки монтирования. Например, USB-накопитель с именем myusb будет смонтирован как /media/myusb.
- /mnt — общая точка монтирования для многих устройств до того, как она была вытеснена стандартным каталогом /media. Некоторые загрузочные системы Linux еще задействуют этот каталог для монтирования разделов жесткого диска и удаленных файловых систем. Многие все еще применяют его для временного монтирования локальных или удаленных файловых систем, которые не монтируются постоянно.
- /misc — каталог, который иногда используется для автоматического монтирования файловых систем по запросу.
- /opt — структура каталогов, доступная для хранения дополнительного прикладного программного обеспечения.
- /proc — содержит информацию о системных ресурсах.
- /root — домашний каталог суперпользователя. Этот домашний каталог не находится ниже /home из соображений безопасности.
- /sbin — содержит административные команды и демонические процессы.
- /sys — содержит параметры для настройки хранения блоков и управления контрольными группами.
- /tmp — содержит временные файлы приложений.
- /usr — содержит пользовательскую документацию, игры, графические файлы (X11), библиотеки (lib) и множество других команд и файлов, не требующихся в процессе загрузки. Каталог /usr предназначен для файлов, которые не изменяются после установки (теоретически /usr может быть смонтирован только для чтения).
- /var — содержит каталоги данных приложений. В частности, именно здесь размещаются файлы, которые передаются через FTP-сервер (/var/ftp) или веб-сервер (/var/www). Он также содержит все файлы системного журнала (/var/log) и файлы, находящиеся в очереди на обработку в /var/spool (такие как mail, cups, news). Каталог /var содержит каталоги и файлы, которые часто изменяются. На серверных компьютерах он обычно создается как отдельная файловая система, которую можно легко расширить.
Файловые системы в операционных системах DOS или Microsoft Windows отличаются от файловой структуры Linux (см. далее врезку «Файловые системы Linux и Windows»).
Файловые системы Linux и Windows
Хотя файловая система Linux во многом схожа с системами MS-DOS и Windows, у нее есть поразительные отличия, например следующие.
- В файловых системах MS-DOS и Windows буквы дисков представляют различные устройства хранения. В Linux все устройства хранения данных подключены к иерархии файловой системы. Таким образом, то, что весь файл /usr может находиться на отдельном жестком диске или что файл /mnt/remote1 является файловой системой с другого компьютера, пользователю не видно.
- В Linux для разделения имен каталогов используется прямая, а не обратная косая черта (слеш). Поэтому путь в системе Microsoft выглядит таким образом: C:\home\joe, а в системе Linux — /home/joe.
- В DOS имена файлов почти всегда имеют суффиксы (например, .txt для текстовых файлов или .docx для файлов Word). Трехсимвольные суффиксы иногда можно применять и в Linux, однако они не имеют особого значения. Они полезны скорее для идентификации типа файла. Многие приложения и окружения Linux используют суффиксы файлов для определения содержимого последних. Однако в Linux расширения команд DOS, такие как .com, .exe и .bat, не всегда означают исполняемый файл. (Исполняемость файлов в Linux определяют флаги прав доступа.)
- Каждый файл и каталог в системе Linux имеют владельцев и права доступа, связанные с ним. Их безопасность варьируется в зависимости от системы Microsoft. Поскольку DOS и Microsoft Windows создавались как однопользовательские системы, принадлежность файлов в них не была встроена изначально. Чтобы решить эту проблему, в более поздние версии были добавлены такие функции, как атрибуты файлов и папок.
Базовые команды файловой системы
Одна из самых простых команд — это cd. Она может использоваться без каких-либо параметров (чтобы перенести пользователя в домашний каталог) или с полными или относительными путями. Рассмотрим следующие команды:
Параметр /usr/share представляет абсолютный путь к каталогу в системе. Поскольку он начинается с косой черты (/), этот путь указывает оболочке начать с корневого каталога файловой системы и привести к каталогу share, находящемуся в каталоге usr. Параметр doc для команды cd ищет каталог с именем doc, который относится к текущему каталогу. Таким образом, эта команда открывает /usr/share/doc и делает его текущим каталогом.
После этого, введя только cd, вы вернетесь в домашний каталог. Если необходимо узнать, где вы находитесь в файловой системе, команда pwd поможет. Вот еще несколько интересных вариантов использования команды cd:
) ссылается на ваш домашний каталог. С помощью команды cd
к нему можно перейти. Можно также применять тильду для ссылки на каталоги относительно вашего домашнего каталога, например, /home/chris/Music с помощью
/Music. Ввод имени в качестве параметра приведет вас в каталог ниже текущего каталога, а две точки (..) можно использовать, чтобы перейти в каталог уровнем выше текущего. В приведенном примере вы подниметесь на три уровня (до /), а затем перейдете в каталог /usr.
Далее рассмотрим, как создавать каталоги в домашнем каталоге, перемещаться между ними и устанавливать соответствующие права доступа.
1. Перейдите в домашний каталог. Для этого введите cd в интерпретаторе и нажмите клавишу Enter. (Другие способы перехода в домашний каталог см. во врезке «Обозначения каталогов» далее.)
2. Чтобы убедиться, что вы находитесь в домашнем каталоге, введите pwd. Далее появится такая строка:
3. Создайте в домашнем каталоге новый каталог с именем test:
4. Проверьте права доступа каталога:
Список показывает, что test — это каталог (d). После буквы d указаны права доступа (rwxr-xr-x), которые мы рассмотрим далее, в разделе «Владельцы и права доступа к файлам». Прочие сведения указывают на владельца (joe), группу (sales) и дату последнего изменения файлов в каталоге (24 января в 12:17).
ПРИМЕЧАНИЕ
Новый пользователь системы Fedora или Red Hat Enterprise Linux по умолчанию назначается в группу с тем же именем. В предыдущем примере пользователь joe назначен в группу joe. Данный подход к управлению группами называется личной группой пользователя (user private group, UPG).
Таким образом дается право на предоставление полного доступа вам и никакого — всем остальным. (Новые права доступа читаются как rwx——.)
5. Сделайте каталог test своим текущим каталогом следующим образом:
Теперь подкаталог test домашнего каталога является вашим текущим рабочим каталогом. В каталог test можно добавлять файлы и каталоги, следуя инструкциям, приведенным далее в этой главе.
Метасимволы и операторы
Независимо от того, перечисляете вы, перемещаете, копируете, удаляете или иным образом воздействуете на файлы в системе Linux, определенные специальные символы, называемые метасимволами и операторами, помогают работать с файлами более эффективно. Метасимволы помогают обработать один или несколько файлов, не вводя полностью имя каждого. Операторы позволяют направлять информацию из одной команды в другую или из одного файла в другой.
Метасимволы для пакетной обработки файлов
Чтобы экономить время и быстрее ссылаться на группу файлов, оболочка bash позволяет применять метасимволы. Всякий раз, когда нужно обратиться к файлу или каталогу, например, чтобы перечислить, открыть или удалить его, используйте соответствующие файлам метасимволы. Примеры полезных метасимволов:
- * — соответствует любому количеству символов;
- ? — соответствует любому одному символу;
- [. ] — соответствует любому из символов между скобками, которые могут включать диапазон букв или цифр, разделенных дефисом.
Чтобы обработать файлы с помощью метасимволов, сначала перейдите в пустой каталог (например, в каталог test, описанный в предыдущем разделе) и создайте несколько пустых файлов:
Команда touch создает пустые файлы. Далее показано, как использовать метасимволы с командой ls для пакетной обработки файлов. Выполните следующие команды и проанализируйте результаты:
Первый пример соответствует любому файлу, имя которого начинается с a (apple). Следующий соответствует всем файлам, имена которых начинается с g (grape, grapefruit). Далее обрабатываются файлы, имена которых начинаются с буквы g и заканчиваются на букву t (grapefruit). Затем обрабатываются файлы, содержащие в именах букву e (apple, grape, grapefruit, watermelon). Наконец, обрабатываются все файлы, имена которых в любом месте содержат букву n (banana, watermelon).
Примеры выборки файлов с вопросительным знаком (?):
Первый пример соответствует любому файлу из пяти символов, имена которых заканчиваются на букву e (apple, grape). Второй соответствует любому файлу, имя которого начинается с буквы g и в пятой позиции есть буква e (grape, grapefruit).
Примеры выборки с квадратными скобками:
В первом примере ищется любой файл, имя которого начинается с буквы a, b или w. Во втором берется любой файл, имя которого начинается с буквы a, g или w и заканчивается либо на n, либо на e. В скобки можно включать и диапазоны букв, например:
В таком случае сопоставляются любые файлы, имена которых начинаются с букв от a до g.
Метасимволы перенаправления файлов
Команды получают данные после стандартного ввода и передают их на стандартный вывод. С помощью конвейеров (описаны ранее) можно направлять стандартный вывод одной команды на стандартный ввод другой. Для направления данных в файлы и из файлов используются знаки «меньше» ( ). Символы перенаправления файлов:
- — направляет стандартный вывод команды в файл. Если файл существует, то его содержимое перезаписывается;
- 2> — направляет стандартную ошибку (сообщение об ошибках) в файл;
- &> — направляет в файл как стандартный вывод, так и стандартную ошибку;
- >> — направляет в файл вывод команды, добавляя его в конец существующего файла.
Далее приведены примеры, в которых информация направляется в файлы и из файлов:
В первом примере содержимое файла .bashrc, находящегося в домашнем каталоге, отправляется в виде сообщения на почту суперпользователю. Вторая командная строка форматирует справочную страницу chmod (с помощью команды man), удаляет лишние пробелы (col -b) и отправляет выходные данные в файл /tmp/chmod (стирая предыдущий файл /tmp/chmod, если он существует). После выполнения последней команды в файл проекта пользователя добавляется следующий текст:
Другой тип перенаправления, называемый встроенным документом (here-документом), позволяет вводить текст, который используется в качестве стандартного ввода для команды. Встроенные документы включают в себя ввод двух символов «меньше» (
Источник