image Привет, Хаброжители! Полностью обновленное 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.
image

Некоторые из этих каталогов 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 создавались как однопользовательские системы, принадлежность файлов в них не была встроена изначально. Чтобы решить эту проблему, в более поздние версии были добавлены такие функции, как атрибуты файлов и папок.

Базовые команды файловой системы


Я хочу познакомить вас с несколькими простыми командами, чтобы вы могли начать работать с файловой системой. Можете пробовать их сразу, параллельно с чтением. При запуске системы Linux и открытии оболочки пользователь входит в свой домашний каталог. Большинство файлов, которые вы сохраняете и с которыми работаете, вероятно, будут находиться в этом каталоге или в подкаталогах, созданных вручную. В табл. 4.1 показаны команды для создания и применения файлов и каталогов.
image

Одна из самых простых команд — это cd. Она может использоваться без каких-либо параметров (чтобы перенести пользователя в домашний каталог) или с полными или относительными путями. Рассмотрим следующие команды:

$ cd /usr/share/
$ pwd
/usr/share
$ cd doc
$ pwd
/usr/share/doc
$ cd
$ pwd
/home/chris

Параметр /usr/share представляет абсолютный путь к каталогу в системе. Поскольку он начинается с косой черты (/), этот путь указывает оболочке начать с корневого каталога файловой системы и привести к каталогу share, находящемуся в каталоге usr. Параметр doc для команды cd ищет каталог с именем doc, который относится к текущему каталогу. Таким образом, эта команда открывает /usr/share/doc и делает его текущим каталогом.

После этого, введя только cd, вы вернетесь в домашний каталог. Если необходимо узнать, где вы находитесь в файловой системе, команда pwd поможет. Вот еще несколько интересных вариантов использования команды cd:

$ cd ~
$ pwd
/home/chris
$ cd ~/Music
$ pwd
/home/chris/Music
$ cd ../../../usr
$ pwd
/usr

Тильда (~) ссылается на ваш домашний каталог. С помощью команды cd ~ к нему можно перейти. Можно также применять тильду для ссылки на каталоги относительно вашего домашнего каталога, например, /home/chris/Music с помощью ~/Music. Ввод имени в качестве параметра приведет вас в каталог ниже текущего каталога, а две точки (..) можно использовать, чтобы перейти в каталог уровнем выше текущего. В приведенном примере вы подниметесь на три уровня (до /), а затем перейдете в каталог /usr.

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

1. Перейдите в домашний каталог. Для этого введите cd в интерпретаторе и нажмите клавишу Enter. (Другие способы перехода в домашний каталог см. во врезке «Обозначения каталогов» далее.)

2. Чтобы убедиться, что вы находитесь в домашнем каталоге, введите pwd. Далее появится такая строка:

$ pwd
/home/joe

3. Создайте в домашнем каталоге новый каталог с именем test:

$ mkdir test

4. Проверьте права доступа каталога:

$ ls -ld test
drwxr-xr-x 2 joe sales 1024 Jan 24 12:17 test

Список показывает, что test — это каталог (d). После буквы d указаны права доступа (rwxr-xr-x), которые мы рассмотрим далее, в разделе «Владельцы и права доступа к файлам». Прочие сведения указывают на владельца (joe), группу (sales) и дату последнего изменения файлов в каталоге (24 января в 12:17).

ПРИМЕЧАНИЕ
Новый пользователь системы Fedora или Red Hat Enterprise Linux по умолчанию назначается в группу с тем же именем. В предыдущем примере пользователь joe назначен в группу joe. Данный подход к управлению группами называется личной группой пользователя (user private group, UPG).

Введите:

$ chmod 700 test

Таким образом дается право на предоставление полного доступа вам и никакого — всем остальным. (Новые права доступа читаются как rwx------.)

5. Сделайте каталог test своим текущим каталогом следующим образом:

$ cd test
$ pwd
/home/joe/test

Теперь подкаталог test домашнего каталога является вашим текущим рабочим каталогом. В каталог test можно добавлять файлы и каталоги, следуя инструкциям, приведенным далее в этой главе.

Метасимволы и операторы


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

Метасимволы для пакетной обработки файлов


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

  • * — соответствует любому количеству символов;
  • ? — соответствует любому одному символу;
  • [...] — соответствует любому из символов между скобками, которые могут включать диапазон букв или цифр, разделенных дефисом.

Чтобы обработать файлы с помощью метасимволов, сначала перейдите в пустой каталог (например, в каталог test, описанный в предыдущем разделе) и создайте несколько пустых файлов:

$ touch apple banana grape grapefruit watermelon

Команда touch создает пустые файлы. Далее показано, как использовать метасимволы с командой ls для пакетной обработки файлов. Выполните следующие команды и проанализируйте результаты:

$ ls a*
apple
$ ls g*
grape grapefruit
$ ls g*t
grapefruit
$ ls *e*
apple grape grapefruit watermelon
$ ls *n*
banana watermelon

Первый пример соответствует любому файлу, имя которого начинается с a (apple). Следующий соответствует всем файлам, имена которых начинается с g (grape, grapefruit). Далее обрабатываются файлы, имена которых начинаются с буквы g и заканчиваются на букву t (grapefruit). Затем обрабатываются файлы, содержащие в именах букву e (apple, grape, grapefruit, watermelon). Наконец, обрабатываются все файлы, имена которых в любом месте содержат букву n (banana, watermelon).

Примеры выборки файлов с вопросительным знаком (?):

$ ls ????e
apple grape
$ ls g???e*
grape grapefruit

Первый пример соответствует любому файлу из пяти символов, имена которых заканчиваются на букву e (apple, grape). Второй соответствует любому файлу, имя которого начинается с буквы g и в пятой позиции есть буква e (grape, grapefruit).

Примеры выборки с квадратными скобками:

$ ls [abw]*
apple banana watermelon
$ ls [agw]*[ne]
apple grape watermelon

В первом примере ищется любой файл, имя которого начинается с буквы a, b или w. Во втором берется любой файл, имя которого начинается с буквы a, g или w и заканчивается либо на n, либо на e. В скобки можно включать и диапазоны букв, например:

$ ls [a-g]*
apple banana grape grapefruit

В таком случае сопоставляются любые файлы, имена которых начинаются с букв от a до g.

Метасимволы перенаправления файлов


Команды получают данные после стандартного ввода и передают их на стандартный вывод. С помощью конвейеров (описаны ранее) можно направлять стандартный вывод одной команды на стандартный ввод другой. Для направления данных в файлы и из файлов используются знаки «меньше» (<) и «больше» (>). Символы перенаправления файлов:

  • < — направляет содержимое файла в команду. В большинстве случаев по умолчанию команда ожидает этого действия, и здесь символ необязателен, то есть less bigfile — то же самое, что less < bigfile;
  • > — направляет стандартный вывод команды в файл. Если файл существует, то его содержимое перезаписывается;
  • 2> — направляет стандартную ошибку (сообщение об ошибках) в файл;
  • &> — направляет в файл как стандартный вывод, так и стандартную ошибку;
  • >> — направляет в файл вывод команды, добавляя его в конец существующего файла.

Далее приведены примеры, в которых информация направляется в файлы и из файлов:

$ mail root < ~/.bashrc
$ man chmod | col -b > /tmp/chmod
$ echo "I finished the project on $(date)" >> ~/projects

В первом примере содержимое файла .bashrc, находящегося в домашнем каталоге, отправляется в виде сообщения на почту суперпользователю. Вторая командная строка форматирует справочную страницу chmod (с помощью команды man), удаляет лишние пробелы (col -b) и отправляет выходные данные в файл /tmp/chmod (стирая предыдущий файл /tmp/chmod, если он существует). После выполнения последней команды в файл проекта пользователя добавляется следующий текст:

I finished the project on Sat Jun 15 13:46:49 EDT 2019

Другой тип перенаправления, называемый встроенным документом (here-документом), позволяет вводить текст, который используется в качестве стандартного ввода для команды. Встроенные документы включают в себя ввод двух символов «меньше» (<<) после команды, за которой следует слово. Весь текст, набранный после этого слова, принимается в качестве пользовательского ввода до тех пор, пока слово не повторится в строке само по себе, например:

$ mail root cnegus rjones bdecker << thetext
> I want to tell everyone that there will be a 10 a.m.
> meeting in conference room B. Everyone should attend.
>
> -- James
> thetext
$

В этом примере сообщения отправляются на имена пользователей root, cnegus, rjones и bdecker. Текст, введенный между <<thetex и thetex, становится содержанием сообщения. Обычно встроенный документ используется в текстовом редакторе для создания или добавления информации в файл из скрипта:

/bin/ed /etc/resolv.conf <<resendit
a
nameserver 100.100.100.100
.
w
q
resendit

С помощью этих строк в скрипте, выполняемом суперпользователем, текстовый редактор ed добавляет IP-адрес DNS-сервера в файл /etc/resolv.conf.

Применение фигурных скобок


С помощью фигурных скобок ({}) можно использовать группу символов для имен файлов, каталогов и других аргументов, которые даются командам. Например, группа файлов с именами от memo1 до memo5 создается так:

$ touch memo{1,2,3,4,5}
$ ls
memo1 memo2 memo3 memo4 memo5

Значения в скобках не обязательно должны быть числами или даже однозначными цифрами. Например, можно применять диапазоны чисел или цифр, а также любую строку символов, разделив их запятыми, например:

$ touch {John,Bill,Sally}-{Breakfast,Lunch,Dinner}
$ ls
Bill-Breakfast Bill-Lunch John-Dinner Sally-Breakfast Sally-Lunch
Bill-Dinner John-Breakfast John-Lunch Sally-Dinner
$ rm -f {John,Bill,Sally}-{Breakfast,Lunch,Dinner}
$ touch {a..f}{1..5}
$ ls
a1 a3 a5 b2 b4 c1 c3 c5 d2 d4 e1 e3 e5 f2 f4
a2 a4 b1 b3 b5 c2 c4 d1 d3 d5 e2 e4 f1 f3 f5

В первом примере два набора фигурных скобок означают, что у пользователей
John, Bill и Sally есть свои файлы, связанные с файлами Breakfast, Lunch и Dinner.
Если бы я ошибся, то легко вспомнил бы команду и изменил touch на rm -f — и уда-
лил все файлы. В следующем примере две точки между буквами и цифрами ука-
зывают на диапазоны, которые будут применяться. Обратите внимание на файлы,
которые были созданы из этих нескольких символов.

Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 25% по купону — Linux

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.

Комментарии (9)


  1. SmokeRus
    10.09.2021 01:37

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


    1. ph_piter Автор
      10.09.2021 12:34

      У нас проблема не повторяется. Написали в личку


      1. SmokeRus
        11.09.2021 03:26

        Попробуйте купить электронную версию


  1. igrblkv
    11.09.2021 15:14
    -1

    Новым пользователям - скидка, уже что-то купившим когда-то - фига с маслом.

    Всё как обычно...

    PS: Получается, все цены в магазине завышены минимум на 25%...

    PPS: LinuxORG даёт 30%, кто больше?


    1. SmokeRus
      11.09.2021 15:52

      где можно электронную версию купить?


      1. arthurlomakin
        15.09.2021 14:41

        del


  1. AI_zek
    11.09.2021 19:56

    Планируется ли бумажное издание Уорд Б. «Внутреннее устройство Linux»?


    1. ph_piter Автор
      16.09.2021 13:56

      Да, в феврале. Новое издание.


  1. RZimin
    15.09.2021 15:05
    +3

    TL;DR - Не покупайте эту книгу перевод этой книги.

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

    Может я придираюсь, но попробую объяснить о чем речь. С первых страниц (а дальше я читать не смог) появилось стойкой ощущение что что-то не так. Сначала не мог понять, а потом осенило. Это же машинный перевод. Знаете, когда читаете текст. Он вроде на русском языке, русские слова и буквы, но совсем не звучит, не складываются предложения. Неестественно звучат.

    Я подумал, что может быть я что-то не понимаю и сам автор таким образом излагает свою мысль (при этом это уже 10 редакция) и пошел смотреть оригинальный текст. И тут стало еще хуже. Переводчик и редактура, решив хоть как-то придать тексту видимость не машинного перевода, начали его облагораживать. Стало хуже. Некоторые вещи стали звучать совсем не так, как изначально задумывал их автор. Пару примеров с первых страниц.

    Русская версия

    Оригинал

    «поработайте над», «заставить систему»… окей Гугле.

    Ладно, это как бы лирика. Но есть и прямо неверный перевод, по сути искажающий мысль.

    Русская версия
    Русская версия
    Оригинал
    Оригинал

    Тут и слова нет о том что «линукс лучше справляется с облачными вычислениями».

    Еще пример. Тут вообще эпически.

    Русская версия
    Русская версия
    Оригинал
    Оригинал

    Прямо основная функция. Ну окей.

    Там такого еще много и это мы прошли только 38 страниц из 925. Дальше я читать не смог.

    Не совсем понятно, как так получилось. Но либо А. Павлов не имеет релевантного ИТ опыта для перевода (к сожалению на сайте питера нельзя найти книги по переводчику). Либо редакция и редактура даже не открывали этот текст.

    Потому как уже на 28 странице кто-то украл у слова «огромный» первую букву «о». Поймите, я не придираюсь, но все эти мелочи говорят о том, что наш перевод книги выпускался в режиме «раз раз и в публикацию». А стоит книга не 500 рублей, а 3145 рублей. Если вы хоть немного владеете языком, потратьте эту сумму на покупку оригинала на Амазоне и доставку, потому как оригинал очень хорош.