Найти в Дзене
Владимир IT

Linux: шаг №3 Структура каталогов Linux Mint. Безопасность Linux.

Linux: шаг №3 Структура каталогов Linux Mint. Безопасность Linux С благодарностью Вячеславу Зубик — автору учебного пособия для начинающих, по которому я изучал основы Linux. Моя цель: рассказать, из каких каталогов состоит файловая система Linux Mint, их назначение, и рассказать, как устроена безопасность в Linux. Структура каталогов Linux Mint. Рассмотрим на примере моего компьютера. Прямо из корневого каталога. В заголовке окна видим «слэш». / — корневой каталог; /bin — содержит стандартные программы Linux ( cat , cp , ls , login и т. д.); /boot — каталог загрузчика, содержит образы ядра и Initrd (RAM-диска инициализации), может содержать конфигурационные и вспомогательные файлы загрузчика; cdrom — точка монтирования привода CD/DVD; /dev — содержит файлы устройств; /etc — содержит конфигурационные файлы системы; /home — содержит домашние каталоги пользователей; /lib — библиотеки и модули; /lib32 — 32-битные библиотеки и модули; /lib64 — 64-битные библиотеки и модули; /libx32 — еще

Linux: шаг №3 Структура каталогов Linux Mint. Безопасность Linux

С благодарностью Вячеславу Зубик — автору учебного пособия для начинающих, по которому я изучал основы Linux.

Моя цель: рассказать, из каких каталогов состоит файловая система Linux Mint, их назначение, и рассказать, как устроена безопасность в Linux.

Структура каталогов Linux Mint.

Рассмотрим на примере моего компьютера. Прямо из корневого каталога.

Рис. 1. Структура каталогов Linux Mint.
Рис. 1. Структура каталогов Linux Mint.

В заголовке окна видим «слэш».

/ — корневой каталог;

/bin — содержит стандартные программы Linux ( cat , cp , ls , login и т. д.);

/boot — каталог загрузчика, содержит образы ядра и Initrd (RAM-диска

инициализации), может содержать конфигурационные и вспомогательные

файлы загрузчика;

cdrom — точка монтирования привода CD/DVD;

/dev — содержит файлы устройств;

/etc — содержит конфигурационные файлы системы;

/home — содержит домашние каталоги пользователей;

/lib — библиотеки и модули;

/lib32 — 32-битные библиотеки и модули;

/lib64 — 64-битные библиотеки и модули;

/libx32 — еще один каталог для 32-битных библиотек;

/media — содержит точки монтирования сменных носителей (например USB-накопителей);

/mnt — обычно содержит точки монтирования;

/opt — каталог для дополнительного программного обеспечения.

/proc — каталог псевдофайловой системы procfs, предоставляющей

информацию о процессах;

/root — каталог суперпользователя root;

/run — централизованное хранилище временных файлов, необходимых

для запуска служб на ранних стадиях загрузки системы;

/sbin — каталог системных утилит, выполнять которые имеет право

пользователь root;

/srv - данные для сервисов и услуг (FTP, HTTP ...).

/sys — средства для изменения конфигурации системы. Информация об

устройствах ядра Linux.

/tmp — каталог для временных файлов;

/usr — содержит пользовательские программы, документацию, исходные

коды программ и ядра;

/var — постоянно изменяющиеся данные системы, например очереди

системы печати, почтовые ящики, протоколы, замки и т. д.

/wd250 — а это уже моя точка монтирования HDD-диска, о которой я писал в первой части.

Как-то так… :-)

Ну вот, друзья, теперь мы схематично представляем, из каких каталогов состоит Linux Mint! Помните, мы создавали папки пользователя на HDD и привязывали к папкам в домашнем разделе? Наверняка не все было понятно, теперь видим все это «вживую».

Безопасность Linux.

Почему это важно?

Друзья, Linux Mint создан на основе Ubuntu, поэтому вопросы безопасности в Linux Mint решаются так же, как и в Ubuntu. Почему это важно?.. Вообще, что касается Ubuntu, первая ее версия вышла в 2004 году и на данный момент систему использует многомиллионная аудитория пользователей. Также Ubuntu установлена на серверах и помогает в работе исследователям в Европейском совете по ядерным исследованиям. С каждым годом Ubuntu покоряет все большее количество компьютеров и признания пользователей. Известно также, что и в России есть свои системы Linux, например Астра, используемая в Вооруженных Силах.

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

Права доступа.

Права доступа пользователей в LInux условно можно разделить на 3 категории:

root — суперпользователь системы, обладающий наивысшими привилегиями в системе;

sudo — выполнение команды с правами суперпользователя (root);

users — обычные пользовательские права.

В LInux обязательно есть один привилегированный пользователь — root.

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

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

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

В Терминале у суперпользователя имя заканчивается знаком #. Вместо всемогущего суперпользователя (root) пользователям предоставлен для применения инструмент sudo.

При установке Linux мы создаем пользователя, указав его имя, а также пароль. Первый пользователь, созданный во время установки, имеет полный доступ к команде sudo. Команда sudo (англ. substitute user and do, дословно «подменить пользователя и выполнить») предоставляет возможность пользователям выполнять команды от имени суперпользователя root, либо других пользователей.

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

Даже если Вы зашли в систему по своим именем и паролем, в первый раз, при выполнении команды через «sudo» будет запрошен пароль текущего пользователя. Дополнительный запрос пароля служит привлечением внимания пользователя на то, что он запрашивает исполнение команды с повышенными привилегиями. Согласитесь, при таких условиях тяжелее навредить своими действиями в системе.

Правила, используемые «sudo» для принятия решения о предоставлении доступа, настраивать, а именно указывать кому и что можно делать, находятся в файле /etc/sudoers, который можно открыть командой в Терминале:

sudo xed /etc/sudoers

Как видите, даже для открытия этого файла нам нужно в Терминале вводить «sudo» и запрашивать права суперпользователя. После открытия файла мы среди прочей информации увидим примерно следующее:

# User privilege specification

root ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command

%sudo ALL=(ALL:ALL) ALL

В данном файле полномочия имеют следующий вид записи:

[пользователь] [хост] = ([кем может стать]) [что может делать]

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

[ПОЛЬЗОВАТЕЛЬ]

В файле /etc/sudoers в положении [пользователь] указаны пользователи:

root, %admin и %sudo

Знак % перед названиями указывает на группу и в командах вышеуказанного файла означает, что права на выполнение действий имеют все пользователи, входящие в группы %admin и %sudo.

Если Вы не знаете в какую группу (группы) входит Ваш пользователь, введите в Терминале команду:

groups имя_пользователя

Так как я в системе под именем пользователя «nemo», команда в Терминале выдала мне следующую информацию:

nemo:~$ groups nemo

nemo : nemo adm cdrom sudo dip plugdev lpadmin sambashare

Как видно, по первым выданным группам, пользователь с именем «nemo» входит в группы «nemo»,..., sudo и ... т.д. Группа «admin» в списке отсутствует, значит мой пользователь «nemo» в нее не входит, суперпользователем «root» он также не является, однако в списке есть группа «sudo», значит к моему пользователю «nemo» из файла /etc/sudoers применима лишь последняя строка:

%sudo ALL=(ALL:ALL) ALL.

Для чего нужны группы и почему в одни пользователь входит, а в другие нет.

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

Права доступа.

Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца. То есть любой файл и каталог принадлежит определенному пользователю системы и определенной группе. Кроме того, у любого файла и каталога есть три группы прав доступа: одна для пользователя-владельца, одна для членов группы и одна для всех остальных пользователей системы. Каждая группа состоит из прав на чтение, запись и запуск файла на исполнение.

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

Конкретному пользователю Linux принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу

/home/имя_пользователя

Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home, принадлежат преимущественно root. Все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root, не может вмешаться в работу системы и что-то поменять в системных файлах. Для проверки введите в Терминале команду для просмотра прав доступа к корневому каталогу ( / ):

ls -l /

В моем случае Терминал выдал следующее:

nemo@nemo ~ $ ls -l /

drwxr-xr-x 2 root root 12288 май 6 2021 bin

drwxr-xr-x 3 root root 4096 май 27 2021 boot

drwxr-xr-x 2 root root 4096 авг 3 2017 cdrom

drwxr-xr-x 21 root root 4340 мар 23 10:04 dev

drwxr-xr-x 153 root root 12288 фев 7 08:05 etc

drwxr-xr-x 14 root root 4096 окт 5 2017 home

Если Вы читали справки в разделе «Терминал», понять данную информацию Вам не составит труда, однако как видно из информации, права доступа к каталогам корневого раздела ( / ) принадлежат лишь пользователю «root».

Введите в Терминале команду для просмотра прав доступа к домашнему каталогу

ls -l ~/

чтобы посмотреть кто его владелец.

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

[ХОСТ]

В положении [хост] в файле /etc/sudoers во всех строках указано значение «ALL», которое означает, что действия может выполнять пользователь, независимо с какого хоста он зашел в систему.

На заметку:

Хост (от англ. host — «хозяин, принимающий гостей») или узел — любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах. В более частном случае под хостом можно понимать любой компьютер, сервер, подключенный к локальной или глобальной сети.

Для того чтобы узнать имя хоста Вашего пользователя в системе, введите в Терминале команду:

hostname

и в моем случае консоль мне выдала:

nemo@nemo:~$ hostname

nemo

В данном примере имя моего хоста — nemo. Если Вы хотите узнать доступные в системе хосты, введите в Терминале команду:

xed /etc/hosts

и в текстовом редакторе откроется соответствующий файл, который нам покажет следующее:

Рис. 2. Список локальных хостов.
Рис. 2. Список локальных хостов.

(Я запускал от SUDO, чтобы убрать свои комментарии). Видим два основных хоста localhost и nemo, ниже идут хосты для протокола IPv6.

([КЕМ МОЖЕТ СТАТЬ])

В этой части в файле /etc/sudoers также во всех случаях записано значение «ALL», которое указывает, что выполняться действия будут от всех пользователей. В нем, в частности, при ручной настройке прав доступа пользователей к «sudo» могут указываться как суперпользователь ([root]), так и отдельные пользователи.

[ЧТО МОЖЕТ ДЕЛАТЬ]

В положении [что может делать] в файле /etc/sudoers опять же записано значение «ALL», которое указывает, что выполняться могут любые действия.

Итак, из файла /etc/sudoers к моему пользователю «nemo» применима последняя строка:

%sudo ALL=(ALL:ALL) ALL

Теперь понятно, что в файле /etc/sudoers (в котором определяются права на выполнение каких-либо действий пользователями командой «sudo»), пользователям, входящим в группу «sudo» (%sudo) и зашедшим в систему с любого хоста (ALL), разрешено от имени всех пользователей (ALL:ALL) выполнять любые действия (ALL).

И это действительно так, ведь мой пользователь «nemo», входит в группу «sudo» и поэтому у него достаточно привилегий, даже командой:

sudo xed /etc/sudoers

открыть в корневом разделе файл /etc/sudoers для просмотра и редактирования, необходимо только ввести пароль.

Закройте текстовый редактор с открытым файлом «sudoers» (надеюсь Вы

ничего в нем не меняли, т.к. это опасно!!!).

USERS

users — это условно названные мною права пользователей, которые во-первых не являются суперпользователями (root), а во-вторых даже права на выполнение команды «sudo» у них ограничены путем внесения изменений в файл /etc/sudoers.

Такие пользователи могут работать в Linux, но права на выполнение административных команд у них отсутствуют, следовательно нанести существенный вред системе они не могут.

Итак, Вы узнали об основах организации безопасности в Linux —

строгое разделение пользователей, групп и прав доступа.

Следующей ступенью безопасности системы является Apparmor.

Apparmor - программный инструмент упреждающей защиты, основанный на политиках безопасности (известных также как профили (англ. profiles)), которые определяют, к каким системным ресурсам и с какими привилегиями может получить доступ то или иное приложение. В AppArmor включен набор стандартных профилей, а также инструменты статического анализа и инструменты, основанные на обучении, позволяющее ускорить и упростить построение новых профилей.

Apparmor — установлен и включен в Linux по умолчанию и работает в фоновом режиме.

Проверить состояние Apparmor можно командой в Терминале:

sudo apparmor_status

Видим, что Apparmor работает в системе.

В заключение.

Друзья! Позвольте предоставить вам самостоятельно освоить Apparmor. Моей целью было рассказать, как устроена безопасность Linux.

***

Вам понравилось, оказалось полезным? Ставьте, пожалуйста, "лайк"!

Буду рад вашим подпискам.