Часть 3: Работа с файловой структурой Linux, установка пакетов, работа со службами. - github2wiki/SPBSUT_KURS GitHub Wiki

1. Предисловие

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

Структура файловой системы Linux

  • / - корень (аналог в Windows - имя диска например C:)
  • /bin - бинарные файлы пользователя
  • /sbin — (system binaries) системные исполняемые файлы
  • /etc — (etcetera) конфигурационные файлы
  • /dev — (devices) файлы устройств
  • /proc — (proccess) информация о процессах
  • /var (variable) — Переменные файлы
  • /var/log — Файлы логов
  • /var/lib — базы данных
  • /var/mail — почта
  • /var/spool — принтер
  • /var/lock — файлы блокировок
  • /var/run — PID процессов
  • /tmp (temp) — Временные файлы
  • /usr — (user applications) Программы пользователя
  • /usr/bin/ — Исполняемые файлы
  • /usr/sbin/
  • /usr/lib/ — Библиотеки
  • /usr/local — Файлы пользователя
  • /home — Домашняя папка
  • /boot — Файлы загрузчика
  • /lib (library) — Системные библиотеки
  • /opt (Optional applications) — Дополнительные программы
  • /mnt (mount) — Монтирование
  • /media — Съемные носители
  • /srv — Сервер
  • /run — процессы запущенные в системе
  • /sys (system) — Информация о системе

/ — Корень

В Linux логическим дисковым томам не назначаются буквы. Вместо этого один из них назначается корневым - это главный каталог в системе Linux. С него начинается путь до любого файла в системе. Остальные подключаются в папки корневого каталога. Все пути начинаются с косой черты /. Только пользователь root имеет право читать и изменять файлы в этом каталоге.

/bin — (BINARIES) Бинарные файлы пользователя

Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cd, ls, cat и т.д.

/sbin — (SYSTEM BINARIES) СИСТЕМНЫЕ ИСПОЛНЯЕМЫЕ ФАЙЛЫ

Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например: reboot, fdisk, ifconfig и т.д.

/etc — (ETCETERA) КОНФИГУРАЦИОННЫЕ ФАЙЛЫ

В этой папке содержатся конфигурационные файлы всех программ, установленных в системе. Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной и отличаться между собой в различных дистрибутивах, но предназначение всех их — настройка и конфигурация.

/dev — (DEVICES) ФАЙЛЫ УСТРОЙСТВ

В Linux все, в том числе внешние устройства логически представляются в виде файлов,другими словами все подключенные накопители, клавиатуры, микрофоны, и т.д. — это просто файлы в каталоге /dev/. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1,и т.д.

/proc — (PROCCESS) ИНФОРМАЦИЯ О ПРОЦЕССАХ

Это не обычная файловая система, а подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это "файловая система", содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать информацию о системе.

/var (VARIABLE) — ПЕРЕМЕННЫЕ ФАЙЛЫ

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

  • /var/log — файлы логов. Здесь содержатся большинство файлов логов всех программ, установленных в операционной системе. У многих программ есть свои подкаталоги в этой папке.Если в системе что-либо сломалось, поиски причин нужно начинать здесь.

  • /var/lib — базы данных. Еще один тип изменяемых файлов — это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.

  • /var/lock — файлы блокировок.Здесь находятся файлы блокировок. Эти файлы означают, что определенный ресурс, файл или устройство занят и не может быть использован другим процессом.

  • /var/run - Содержит файлы с PID процессов, которые могут быть использованы, для взаимодействия между программами. В отличие от каталога /run данные сохраняются после перезагрузки.

/tmp

В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию. Файлы удаляются при каждой перезагрузке.

/usr -Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений.

  • /usr/bin/ — Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, браузеры и т.д.

  • /usr/sbin/ - Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как sshd, useradd, userdel и т.д.

/home

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

Однако домашним каталогом суперпользователя является /root

/boot

Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.

/lib (LIBRARY)

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

/opt (OPTIONAL APPLICATIONS)

В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.

/mnt

В этот каталог монтируются внешние или дополнительные файловые системы.

/media

В этот каталог система монтирует все подключаемые внешние накопители — USB флешки, оптические диски и другие носители информации.

/run

Каталог, содержащий PID файлы процессов, которые стираются при выключении.

/sys

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

Права доступа к файлам и папкам

Linux - является многопользовательской системой, поэтому в ней предусмотрен механизм разграничения доступа к файлам или целым папкам. В основе механизма разграничения доступа лежат имена пользователей и имена групп пользователей.Управлением правами доступа занимается суперпользователь (root).Первоначально, при создании файла его владельцем объявляется тот пользователь, от чьего имени запущен процесс, создающий файл.Для того, что бы посмотреть на права доступа необходимо использовать утилиту ls -l где -l это флаг для вывода информации о владельце и правах на чтение,запись,исполнение.

https://github.com/github2wiki/SPBSUT_KURS/blob/master/Chapter%201/Part%203/ls.png

Пользователь Вася -является владельцем а users - группа, которой принадлежат файлы

Первый символ определяет тип файла

  • "-" = обычный файл.
  • d = каталог.
  • l = символическая ссылка.
  • b = файл блочного устройства.
  • c = файл символьного устройства.
  • s = доменное гнездо (socket).
  • c = файл символьного устройства.

Далее следует разбить следующие символы на группы по 3. Первая группа слева - доступ владельцу, вторая группа -доступ группы, третья группа - доступ остальным пользователям Символы r, w, x или - означают: x - доступ на исполнение, w доступ на запись, и r доступ на чтение, если стоит -то данный доступ отсутствует.

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

Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

Что такое sudo

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

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo.

Работа с файловой системой из терминала.

Для работы с файловой системой имеется множество утилит.Однако, для основных действий в файловой системе, можно выделить несколько наиболее часто-используемых. Их список представлен ниже.

  • man util выводит справку&информацию о работе утилиты util.Очень полезная!
  • cd PATH - переход в папку по пути PATH.
  • pwd вывод текущего рабочего каталога
  • ls -la PATH -la - вывод в терминал содержимого каталога по пути PATH. Флаг -la говорит что нужно показать все файлы, в том числе и скрытые, и вывести информацию о владельце и и правах доступа. Если PATH ведёт до файла, то мы получим информацию о конкретном файле.Если не ввести PATH вывод будет для текущего рабочего каталога.
  • (cp|mv) PATH1 PATH2 -копирование|перемещение файла PATH1 в PATH2.
  • cat PATH вывести содержимое файла PATH в терминал.
  • (vi|vim) PATH открыть файл PATH в текстовом редакторе
  • chown username:usergrup PATH устанавливает владельца и группу на файл по пути PATH
  • chmod xxx где x это представление одной группы в двоичном виде.Например chmod 311 даст доступ на запись и исполнение владельцу , а группе и остальным пользователям доступ только на исполнение.
  • command1 | command2 передаст результат выполнения command1 в руки command2

2. Пакеты и репозитории

Что такое репозиторий и пакет

Репозиторий — место, где хранятся и поддерживаются какие-либо данные. В Linux данные в репозитории хранятся в виде пакетов, доступных для дальнейшего распространения по сети.

Под пакетами в Linux подразумевается программное обеспечение (ПО), которое Вы хотите установить на компьютер. Скажем, например, в Windows софт устанавливается с помощью мастера (программы) установки – setup.exe или install.exe. Установка же программ в Linux несколько отличается тем, что здесь используются два основных способа инсталляции: с помощью пакетов или из исходных кодов . Пакет содержит собранную программу, информацию о том, какие требуется совершить действия для ее установки, информацию о зависимостях, а также, возможно, много других данных (в зависимости от вида пакета). Причем за установку (удаление, обновление) отвечает менеджер пакетов.В CentOS пакеты можно узнать по .rpm а пакетный менеджер называется Yum или Yellowdog Updater, Modified Менеджер пакетов является одной из главных частей дистрибутива.Он обеспечивает пользователю интерфейс для автоматизированного получения пакета, установку зависимостей и саму установку. Пакеты, как уже говорилось, собираются в репозитории. То есть результат процесс установки условной программы можно описать так: пользователь запрашивает установку пакета программы – менеджер пакетов отслеживает зависимости – он же получает необходимые пакеты из репозитория(ев) – и он же устанавливает зависимости и требуемый пакет. Практически каждый дистрибутив Linux имеет свои репозитории, зачастую несовместимые с другими дистрибутивами. Менеджер же пакетов – консольная утилита, и в различных дистрибутивах отличается Установка и удаление программ осуществляется суперпользователям

Менеджер пакетов в CentOS

Как уже известно в CentOS менеджером пакетов является Yum.Утилита для работы с ним, как ни странно, называется yum.

Работа с yum

  • отображение команд и опций
yum help
  • список названий пакетов из репозиторий
yum list
  • список всех доступных пакетов
yum list available
  • список всех установленных пакетов
yum list installed
  • установлен ли указанный пакет
yum list installed PKG_NAME
  • список пакетов, относящихся к ядру
yum list kernel
  • отображение информации о пакете
yum info PKG_NAME
  • найти пакет, который содержит файл
yum provides "PATH"
  • список подключенных репозиториев
yum repolist
  • информация об определенном репозитории
yum repoinfo REPO_NAME
  • (установить|удалить) все пакеты из репозитория
# yum repo-pkgs REPO_NAME (install|remove)
  • просмотр yum истории
yum history list
  • просмотр информации об определённой записи из истории yum
yum history info TARGET_NUM
  • (отмена(удаление)|повтор) операции из истории
# yum history undo|redo TARGET_NUM
  • установка|удаление пакета
# yum install|remove PKG_NAME
  • обновить пакеты, если добавить имя пакета после update обновится только указанный пакет
# yum update

Можно использовать флаг -y для автоматического ответа yes на запрос.

3. Работа со службами

Предисловие

В операционной системе linux, так же как и в Windows, кроме программ, взаимодействующими с пользователем есть еще, работающие в фоновом режиме, службы(демоны,сервисы). Службы следят за состоянием системы, обеспечивают автоматическое подключение внешних устройств и многое, другое, скрытое от глаз обычных пользователей.Например, демон печати ждет, пока какое-либо из приложений отправит документ на печать. После этого демон активизируется и осуществляет требуемые действия - печать самого документа на выбранном принтере.Название демонов принято оканчивать на d например sshd,firewalld и т.д. В отличие от пользовательских программ, службы выполняются в фоне, и пользователь не имеет к ним прямого доступа. Службы запускаются при старте системы, автоматически.

История развития

Раньше, для управления службами использовались скрипты.Каждая служба запускалась в фоновом режиме одна за другой, без возможности параллельного запуска и возвращала свой PID процесса скрипту инициализации, он сохранялся и потом с помощью этого PID происходило управление службой. В современных Linux OS используется модель и система инициализации systemd, которая как можно заметить из названия, тоже является демоном, проще говоря, это служба управления службами. При разработке eго стремились спроектировать обратно совместимым со скриптами инициализации и предоставить полезные функции, такие, как параллельный запуск системных сервисов во время загрузки, активацию демонов по требованию и логику управления сервисами, основанную на зависимостях. Systemd принесла с собой концепцию юнитов.

Прицеп работы systemd

Systemd запускает сервисы описанные в его конфигурации. Конфигурация состоит из множества файлов, которые называют юнитами. Все юниты разложены в трех каталогах:

  • /usr/lib/systemd/system/
  • /run/systemd/system/
  • /etc/systemd/system/

существует несколько типов служб

  • service — обычная служба, программа
  • target — группа служб
  • automount — точка автоматического монтирования
  • device — файл устройства, генерируется на этапе загрузки
  • mount — точка монтирования
  • scope — процесс
  • slice — группа системных служб systemd
  • socket — сокет для взаимодействия между процессами.

Управление службами

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

  • Просмотреть список всех служб
systemctl lust-units
  • Запустить службу DEAMON_NAME
#systemctl start DEAMON_NAME
  • Поставить службу на автоматический запуск при запуске системы
#systemctl enable DEAMON_NAME
  • Удалить автоматический запуск при запуске системы
#systemctl disable DEAMON_NAME
  • Остановить службу
#systemctl stop DEAMON_NAME
  • Просмотр состояния службы
systemctl status DEAMON_NAME