Linux для начинающих
Запись создана, как шпаргалка, чтобы в случае необходимости, использовать как точку входа, для поиска нужной информации. За основу, был взят курс: OTUS: Linux для начинающих — Отличный видеокурс рассчитанный для программистов и администраторов, которые хотят освоить ОС Linux. Курс понравился структурой, которая объясняет основы, необходимые для начинающих изучение.
Linux — семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU, и, возможно, другие компоненты. Как и ядро Linux, системы на его основе как правило создаются и распространяются в соответствии с моделью разработки свободного и открытого программного обеспечения. Linux-системы распространяются в основном бесплатно в виде различных дистрибутивов — в форме, готовой для установки и удобной для сопровождения и обновлений, — и имеющих свой набор системных и прикладных компонентов, как свободных, так, возможно, и собственнических. Linux — Википедия.
Официальной версии операционной системы не существует. Ядро от Линус Торвальдс + окружение от Ричарда Столлмана = GNU/Linux. Оригинальная версия ядра «Vanilla kernel» – kernel.org. Разные версии ядра, разная структура каталогов, разные менеджеры пакетов, разный набор ПО. Не существует официальных сборок.
Версии Linux
Основанные на Red Hat Linux: | Red Hat / CentOS / Fedora |
Основанные на Debian: | Debian / Ubuntu |
Основанные на Slackware: | Slackware |
Основанные на Gentoo: | Gentoo |
Иерархическая структура каталогов Linux
Иерархическая структура каталогов Linux – все сводится к корню «/» (root).
Иерархическая структура каталогов Linux
/ | Корневой каталог, содержит всю файловую архитектуру. |
/bin | Основные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp). |
/boot | Загрузочные файлы (в том числе файлы загрузчика, ядро, initrd). |
/dev | Основные файлы устройств (например, /dev/null, /dev/zero). |
/etc | Общесистемные конфигурационные файлы. |
/home | Домашние каталоги пользователей, которые содержат персональные настройки и данные пользователя. |
/lib | Основные библиотеки, необходимы для работы программ из /bin и /sbin. |
/media | Точки монтирования для сменных носителей. |
/mnt | Временно монтируемые файловые системы. |
/opt | Дополнительное программное обеспечение. |
/proc | Виртуальная файловая система, состояние ядра ОС и запущенные процессы в виде файлов. |
/root | Домашний каталог супер пользователя. |
/run | Информация о системе с момента ее загрузки, в том числе данные, необходимые для работы демонов. |
/sbin | Основные системные программы для администрирования и настройки системы, например init, iptables, ifconfig. |
/srv | Данные для сервисов, предоставляемых системой (например, www или ftp). |
/sys | Информация об устройствах, драйверах, а также некоторых свойств ядра. |
/tmp | Временные файлы. |
/usr | Вторичная иерархия для данных пользователя. Содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. |
/var | Изменяемые файлы, такие как файлы регистрации, временные почтовые файлы, файлы спулеров, лог файлы. |
Варианты установки ПО в Linux
Из исходных кодов – компиляция бинарных файлов, возможность модифицировать, возможность установки без прав администратора.
Минусы: Поиск зависимостей очень долгий. Отсутствие контроля установленного ПО.
Из пакетов – пакет, это своего рода архив, который содержит уже готовый скомпилированный бинарный файл и перечень зависимостей (сразу виден перечень зависимостей). Есть контроль установленного ПО.
Пакетные менеджеры обрабатываю пакеты, имеют собственную базу данных установленного ПО. Если все таки ПО идет из исходного кода, тогда правильно будет собрать пакет и установить.
Минусы: Нужны права администратора. Пакеты создаются под определённый дистрибутив Linux (rpm для пакетного менеджера yum и deb для dpkg).
Из репозитория – место где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Сразу виден перечень зависимостей, есть контроль установленного ПО и как правило все зависимости автоматически устанавливаются из репозитория. Он может быть расположен локально, либо в локальной сети, либо на официальных сайтах.
Простейшие команды в Linux
ls -l | Просмотр файлов и директорий, -a показать скрытые файлы. |
pwd | Текущая директория. |
touch | Создание файлов |
mkdir | Создание директорий, -p авто создание поддиректорий. |
cd | Сменить текущую директорию. Абсолютный путь – путь от корня файловой системы. Относительный путь – путь из текущей директории. |
rm | Цдалить файл, можно использовать маску. |
rmdir | Удалить директорию, удаляет только пустые. Нужно использовать команду rm –r, а после rmdir. |
cp | Копирование файлов и директорий. |
mv | Перемещение файлов и директорий, можно использовать для переименования. |
type | Информация о типе команды, то как она будет интерпретироваться если вводится в командной строке. |
whereis | Показывает полный путь к исполняемому файлу. |
who | Кто сейчас работает на сервере. |
man | Справочная информация по команде. |
more | Листать файл, пробел постранично, еnter построчно, выход клавиша Q. |
less | Листать файл, можно с помощью курсора, поиск по файлу. |
Пользователи в Linux
Идентификация пользователя (UID) — Имя пользователя – 32 символа (псевдоним), для ОС важно идентификатор пользователя.
Два типа пользователей:
/etc/passwd – хранится информация о пользователях, в виде:
имя пользователя : Х : UID : GUID (UID группы) : комментарий : домашний каталог : командная оболочка
/etc/group – информация о группах пользователей.
имя группы : GUID : кто входит в группу
/etc/shadow – информация о паролях пользователей, в виде хэш.
Аутентификация – проверка подлинности, наличия пользователя в системе. Логин + пароль – Хеш функция – сравнение с тем что хранится в системе.
Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий, а также процесс проверки данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.
Расширение файла не имеет значения для ОС – файл это всего лишь поток байт.
Директория – это файл с определенным признаком каталога.
x – открыть директорию.
r – прочесть содержимое директории.
chmod – смена прав. Ключ –R меняет права директории и содержимого.
Файл – именованная область данных на диске — ext2,3,4. Блок минимальная единица – в ext4 блок 4 Килобайта.
inode – индексный дескриптор, хранит мета информацию о файле, идентифицируются по номерам. Количество inode ограничено, в xfs – нет таких ограничений.
stat – выводит информацию inode файла.
df – свободное пространство файловых систем.
df –i – информация о inode.
Каталог – хранит в себе имена файлов, по сути соответствие имени файла и его inode. Удаление файла — удаление его имени из каталога, файл остается лежать на диске.
Hard Link – синоним имени файлов – для создания ln, для просмотра ln –li, так как при выводе inode можно увидеть количество жестких ссылок. Жесткие линки созданные на один файл, логически между собой равны. Нельзя создавать на каталоги и только в пределах одной файловой системы, потому что inode уникальны в рамках одной файловой система.
Soft Link – аналог ярлыков, ln –s.
Софт линк занимает inode так как это новый файл, а хард линк – новое имя уже существующего файла. Можно создавать на каталоги и между разными файловыми системами.
Работа с потоками STDIN, STDOUT, STDERR
STDIN — Поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.
STDOUT — Поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых.
STDERR — Поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.
Потоки STDIN, STDOUT, STDERR
Перенаправление в файл:
Стандартный поток: ls -l > stdout
Ошибки: ls -l 2> stderr
Одновременно: ls -l 2>stderr 1> stdout
> — перезаписывает файл
>> — добавление в файл
Порядок выполнения команды в bash:
ls -l > stdout — выполнение идет справа налево, сначала создается файл и после в него записывается вывод команды ls.
Перенаправление в STDIN другой команды:
command1 | command2 — перенаправление вывода одной команды на вход другой, используется “|” — pipe.
Команда tee::
Потоки и указатели: “&” — перенаправление по адресу, по указателю.
И, ИЛИ, НЕ ИМЕЕТ ЗНАЧЕНИЯ — Логические операторы работают на основании кода возврата программы. Код возврата: 0 — true, не 0 — false. Каждая программа возвращает код возврата, как увидеть: echo $?
&& — Логическое И:
|| — Логическое ИЛИ:
; — Логическое НЕ ИМЕЕТ ЗНАЧЕНИЕ:
Монтирование
Все есть файлы, диски находятся в каталоге dev, например, sda, sda1, sda2, sdb, sdc, sde, sdf. S — интерфейс SATA. Если имя состоит из букв, это физический диск. Если в конце цифра, это логический диск. Работа с дисками посредством виртуальной файловой системы, VFS — Virtual File System:
- Уровень абстракции поверх конкретной реализации файловой системы.
- Обеспечивает единообразный доступ клиентских приложений к различным типам файловых систем.
- Программный интерфейс между ядром и драйвером конкретной файловой системой.
Монтирование — связывание виртуальной файловой системы с реальной.
После того как запускается ядро ОС, оно должно произвести монтирование корневой файловой системы, точки монтирования прописаны в файле: /etc/fstab
lsblk — информация о блочных устройствах, дисках ОС.
df — h — выводить размеры в читаемом виде, в мегабайтах или гигабайтах.
mount — более подробная информация, берет данные из /etc/mtab -> /proc/self/mounts
/mnt — каталог для монтирования временных устройств, если на постоянной основе, тогда через fstab и отдельный каталог.
unmount /mnt/ либо unmount /dev/sda
Установка ПО
rpm — Пакетный менеджер в Centos (работа с пакетами).
yum — Надстройка над пакетным менеджером, которая работает с репозиторием. Предоставляет данные пакетному менеджеру.
yum search http | grep -i apache
Внутреннее устройство Linux.
Эта книга описывает все тонкости работы с ОС Линукс, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах руководства вы приобретете основные знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей не только на основе Open-source решений. В книге также затрагиваются вопросы программирования сценариев и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи.
Операционная система Linux прекрасно подходит для изучения, поскольку конфигурация системы хранится большей частью в простых файлах, которые достаточно легко прочитать. Следует только выяснить, за что отвечает каждая из частей, а затем собрать все воедино. Именно этому и посвящена данная книга.
Интерес к устройству операционной системы Linux может быть вызван разными причинами. Профессионалы в сфере информационно технологического обслуживания, а также разработчики программного обеспечения для Linux найдут в этой книге практически все, что необходимо знать, чтобы использовать операционную систему наилучшим образом.
Вам не обязательно быть программистом, чтобы читать эту книгу. Понадобятся лишь основные навыки пользователя компьютера: вы должны ориентироваться в графическом интерфейсе (при установке и настройке интерфейса системы), а также иметь представление о файлах и каталогах (папках).
Для работы вам понадобится компьютер с операционной системой Linux. Возможно, вы предпочтете виртуальную установку — для проверки большей части материала данной книги я пользовался приложением VirtualBox. Вы должны обладать правами доступа superuser (root), хотя в основную часть времени следует исполь зовать учетную запись обычного пользователя.
Вы будете работать главным образом в командной строке, окне терминала или в удаленном сеансе.
В начале книги дается обзор системы Linux, а затем предлагается ряд практических заданий с инструментами, которые понадобятся вам для дальнейшей работы в системе.
Далее вы детально изучите каждую часть системы, начиная с управления оборудованием и заканчивая конфигурацией сети, следуя обычному порядку, в котором происходит запуск системы.
И наконец, вы получите представление о некоторых деталях работающей системы, освоите несколько важных навыков, а также познакомитесь с инструментами, используемыми программистами.
Материал излагается по возможности без привязки к какомулибо дистрибу тиву системы. Было бы скучно описывать все варианты системы, поэтому я попытался рассказать о двух основных семействах дистрибутивов: Debian (включая Ubuntu) и RHEL/Fedora/CentOS.
Упор сделан на серверные версии и версии для рабочих станций. Представлены также внедренные системы, например Android и OpenWRT, но изучение отличий этих платформ предоставляется вам.