Изучаем GNU/Linux часть 4. О файловых системах
Прежде чем приступать к работе с файлами, нужно понять, что такое файл и где он живёт. В видео речь пойдёт о файловых системах на UNIX-подобных операционных системах.
Дубликаты не найдены
GNU/Linux
697 постов 13.1K подписчик
Правила сообщества
Все дистрибутивы хороши.
странно, за что минусят. Все отлично
Компьютер – это инструмент для работы с информацией, которая хранится в виде файлов. UNIX-подобные операционные системы придерживаются идеи “Всё есть файл”, поэтому в качестве файлов также выступают устройства, процессы, директории, сокеты, пайпы – но об этом пока рано говорить. Современная операционная система состоит из десятков и сотен тысяч файлов, которые нужно правильно организовать и предоставить пользователям и программам удобный доступ к ним. Для этого используется файловая система. Но это довольно широкий термин, для понимания которого нужно несколько точек зрения.
С точки зрения пользователей или прикладных программ, файловая система – это место для записи и чтения файлов. Пользователи видят иерархичную структуру организации файлов – внутри директорий хранятся файлы и другие директории, которые также могут хранить файлы и директории. На Windows системах директории обычно называют папками, но папка – это термин, относящийся к графической оболочке операционной системы, а директория – к файловой системе. У папки можно поменять иконку, цвет или добавить описание, чего не сделаешь с директорией. И хотя на линуксах тоже может стоять графический интерфейс, но при общении люди обычно подразумевают не цвет и не иконку какой-нибудь папки, а содержимое и аттрибуты файловой системы, поэтому закрепилось выражение директория.
Структура организации файлов на Windows системах и UNIX-подобных системах несколько отличается. На Windows у вас есть некая файловая система, которой вы назначаете букву C. Внутри этой файловой системы у вас несколько директорий – где-то хранятся файлы пользователей, где-то программы, а где-то файлы операционной системы. Когда вы подключаете флешку или любое другое устройство со своей файловой системой, ей назначается другая буква и через неё вы можете увидеть содержимое этой файловой системы. Структуры этих файловых систем независимы и не пересекаются.
На UNIX подобных системах используется другой подход, называемый FHS – стандартом иерархии файловой системы. По этому стандарту у многих файлов и директорий есть специальные пути, где они должны храниться. Допустим, если на Windows системах вы устанавливаете программу, то все её файлы попадают в директорию C:\Program Files\ИмяПрограммы. А на UNIX-подобных системах большинство программ “размазывается по системе” – запускаемая часть программ попадает в директорию /usr/bin/, ярлыки программ попадают в /usr/share/applications/, настройки в /etc/ и т.д. Кроме удобства, это также помогает с безопасностью при правильных настройках.
Это следует из следующего отличия – корень на UNIX-подобных системах один. Корень, с точки зрения структуры, это начало файловой системы, внутри которого хранятся первые директории. На Windows у каждой файловой системы свой корень – С:, D: и т.п. А на UNIX-подобных системах каждая файловая система “прикрепляется”, правильнее сказать монтируется, в какую-нибудь директорию внутри единого корня. Допустим, у вас может быть корневая файловая система на SSD, файлы пользователя хранятся на отдельном диске, при этом доступ к ним в директории /home, ваши документы, которые вы держите на флешке, могут быть доступны в директории /home/user/Documents. Три разных устройства, три разные файловые системы, но внутри одного корня.
Возвращаясь к теме безопасности, различным файловым системам можно задать различные опции монтирования. Допустим, если у вас /home, где обычно хранятся файлы пользователя, на отдельной файловой системе, вы можете запретить запуск программ на этой файловой системе. Программы обычно лежат в директории /usr/bin/, куда у обычного пользователя нет прав для доступа. В итоге, если какой-то пользователь скачает какой-то вирус к себе в домашнюю директорию (/home/user), он просто не сможет его запустить. Или допустим, мы знаем, что в /usr/ лежат файлы программ. Если отделить /usr/ на другую файловую систему, то после установки всех программ мы можем убрать право записи в эту файловую систему. В итоге вирус не сможет воспользовавшись уязвимостью программы изменить её запускаемый файл, чтобы добавить в него вредоносный код. А в момент обновления мы просто возвращаем файловой системе право на запись, обновляем программы и опять возвращаем как было.
Как вы, возможно, заметили, я упомянул файловые системы еще с двух точек зрения – когда я говорил о файловых системах на устройствах и когда говорил про опции на запуск или запись. С точки зрения устройства, файловая система — это способ записи и чтения файлов на устройстве. Недостаточно просто записать файл на диск, нужно ещё определить, куда писать файл, как с ним работать и т.п. Это зависит от типа файловых систем – NTFS, exFAT, EXT4, XFS и т.д. Файл условно можно разделить на 3 части – сами данные внутри файла, жесткая ссылка и информация об этом файле – где хранятся данные файла на устройстве, кто владелец, какие права доступа и т.п. Информация о файле называется метаданными и на UNIX-подобных системах хранится на файловых системах в стуктурах данных, называемых инодами. У каждой иноды есть свой уникальный номер, а чтобы операционная система могла найти иноду по имени файла, она использует жесткую ссылку (hard link). Подводя итоги, файлы, которые мы обычно видим на компьютере – это жесткие ссылки, в которых содержится номер иноды, а в иноде содержится информация о файле и его местоположение на устройстве. Этих жестких ссылок, которые ссылают на одну и ту же иноду, может быть несколько, по сути это способ обращения к одному и тому же файлу по разным именам и с разных директорий, но внутри одной файловой системы, потому что жесткая ссылка – часть файловой системы. Когда вы удаляете последнюю жесткую ссылку на файл, файловая система очищает inode запись и помечает местоположение данных файла как свободное, хоть там и лежат данные. Когда появится необходимость записать новый файл, файловая система запишет туда новые данные, но пока этого не произошло, есть вероятность восстановить эти данные.
С точки зрения операционной системы, файловая система – это драйвер, модуль ядра. Этот драйвер предоставляет интерфейс, через который программы могут взаимодействовать с файлами. И в момент монтирования файловой системы вы можете указать специальные опции монтирования, например, чтобы файловая система была только для чтения. На GNU/Linux системах есть возможность установить модули для работы с множеством различных типов файловых систем, включая файловые системы других операционных систем, допустим NTFS. Но на NTFS нет некоторых функций, необходимых для работы линукса – допустим, прав, как в UNIX-подобных системах и т.п., в следствии чего невозможно установить Linux на NTFS, хотя и можно использовать такую файловую систему для хранения пользовательских файлов. Windows системы же не содержат нужных драйверов для работы с файловыми системами EXT4 или XFS, на которых обычно устанавливается Linux. Из-за чего, если у вас 2 операционные системы на компьютере, на Линуксе видны файлы Windows, а чтобы увидеть содержимое линуксовых файловых систем, на Windows надо установить специальные утилиты.
Есть множество различных типов файловых систем, различающихся функционалом и возможностями, но самые используемые на Linux – EXT4 и XFS. Сейчас я рассказал только о том, что такое файловая система, чтобы мы могли рассмотреть работу с файлами в следующих видео. А к теме “Работа с файловыми системами” мы еще вернёмся.
Источник
Изучаем GNU/Linux часть 42. Основы сетей
Продолжаем изучать GNU/Linux и готовиться к сертификации от Red Hat (RHCSA).
Для тех, кто видит мои посты впервые — я стараюсь очень лёгким языком с нуля научить вас работать с операционной системой GNU/Linux. Зачем? Потому что — Стоит ли делать курс по RHCSA?
Для продолжения курса потребуются знания работы сети, а это огромный пласт знаний. По сетям в интернете материала, наверное, больше, чем по линуксам. Но я всё же постараюсь объяснить основы и по мере продвижения курса буду затрагивать различные детали работы сети, связанные с той или иной темой. Сразу предупрежу, что я очень сильно упрощаю, так как это не курс по сетям, я расскажу только то, что считаю необходимым на данном этапе.
И так как это выход на новый уровень и начало для изучения многих новых технологий, это будет началом новой главы для данного курса.
P.S. Текстовые варианты и вопросы доступны по ссылке — https://gitlab.com/doatta/gnu-linux-rhcsa
Найдены возможные дубликаты
GNU/Linux
697 постов 13.1K подписчик
Правила сообщества
Все дистрибутивы хороши.
Чем вас не устроил фундаментальный труд «Сети для самых маленьких»?
Там всё супер понятно и лаконично. Причем от нулевых знаний до продвинутых.
Тем, что там
1) «предполагается, что вы уже читали»
2) Рассказ на 10 тем, наполненный наполненный кучей ненужного для начинающих.
Это нужно каким-нибудь начинающим сетевым администраторам. Не спорю, курс хороший. Но я рассматриваю куда проще, без всяких mpls, vpn, вланов и прочего, что на данном этапе не нужно. При этом затрагиваю сеть не с точки зрения сетевого админа, а с точки зрения системного.
Остановиться когда знания достаточно можно в любой момент, информация идёт по нарастающей.
И на то что уже должно быть прочитано даже ссылки приведены их просто нужно открыть.
блять, уже год собираюсь пересмотреть все эти видео
блять, уже год пилю эти видео 😀
Плюсанул! Достал тут распберри (в смысле она просто лежала, пока я думал, куда ее применить и вот тут возник повод) — развернул на ней librelec. а там — репозитории, исходники. потом дебиан развернул. прям как обратно в админство окунулся. Но, бытует мнение, что у красноглазиков катаракты не бывает:)))
Это не холивар — никого не хотел обидеть, правда!! Авторам респект, постараюсь найти время поглядеть ваши посты, а то слегка заплыл мелкомягким жирком.
Раньше работали с линуксами, а сейчас админите windows? =)
вашпе ничего не админю:)
да так себе — надо было изучать не технику, софт и компьютеры, а людей.
не грустите, всё наладится =)
Ни чуть не грущщу:)
Классно, но для rhcsa абсолютно ничего из этого не нужно.
А вот что нужно, так это понимать, что цель экзамена — настроить конкретно эту экзаменационную тачку, чтобы она работала. Поэтому, самое важное по сетям (по убыванию важности): 1. Фаервол. Чем отличается firewalld и iptables. Как их включать/отключать (и кстати не забыть надежно погасить iptables). Как работать с firewalld. Как при этом не наколоться с selinux. 2. Интерфейсы на тачке. Поднять/опустить/настроить. имя хоста, dns. Как работать с nm-cli.
Не придираюсь, но почему бы не сразу что-то полезное не разбирать. Зачем эта вода?
Ну.
1) Курс по Основам GNU/LINUX И подготовке к RHCSA. Основная цель — научить работать с линуксами, и как конечная цель курса — достаточно знаний для сдачи экзамена. Но я не ограничиваюсь экзаменом, в курсе немало тем, которых нет на экзамене. Из этого вытекает:
2) Знать сеть нужно любому администратору. Даже если это был курс только по RHCSA, я без понятия, как можно не объяснив основы сетей рассказать о том, как настроить сеть на экзамене. «Просто вызубрите порядок действий»? А если человек ошибётся, опечатается? А если что-то не так? Знания сети, хотя бы минимальные, всё таки нужны.
3) Не нужно гасить iptables и никаких лишних действий делать. firewalld из коробки работает, достаточно просто для него прописать правила.
Для вас, возможно, это и вода. Но изучающим с нуля всё таки нужно всё это усвоить. Да и есть новички, у кого есть пробелы в понимании.
Источник
Изучаем GNU/Linux часть 6. Пути и директории (RHCSA)
Обязательно уделите время практике. Хороший результат — это когда вы подумали о результате, а пальцы за вас написали команду. Как язык — вы не вспоминаете каждое слово и как его употреблять. Научитесь также разговаривать с компьютером.
Дубликаты не найдены
GNU/Linux
697 постов 13.1K подписчик
Правила сообщества
Все дистрибутивы хороши.
1. Перечислите и попробуйте все способы зайти в домашнюю директорию своего пользователя.
2. Перечислите и попробуйте все способы зайти в директорию /usr/share/doc/man-pages , учитывая, что вы находитесь в домашней директории пользователя (1) или в директории /etc/ (2).
3. Скопируйте директорию Music в графическом интерфейсе (Files), вставьте в ту же директорию (название копии должно быть Music (copy) ) и попробуйте все способы зайти в новую директорию.
4. Переименуйте директорию Music (copy) и добавьте перед скобкой несколько пробелов. Попробуйте все способы зайти в эту директорию.
5. Зайдите в директорию /usr/share/applications . Затем зайдите в директорию /var/log/chrony. Перечислите и попробуйте все способы перемещаться между этими двумя директориями.
6. Находясь в домашней директории своего пользователя, посмотрите содержимое директории /usr/bin/ используя полный и относительный пути.
7. Находясь в домашней директории своего пользователя создайте директорию /tmp/testdir используя полный и относительный пути.
8. Находясь в директории /usr/share/applications создайте одной командой директорию /home/user/testdir1/testdir11/testdir111 и посмотрите разом содержимое всех поддиректорий директории /home/user/testdir1
9. Находясь в директории /var/log создайте одной командой директории /home/user/testdir2/testdir22 и /tmp/testdir2/testdir22, а затем посмотрите одной командой содержимое директорий /home/user/testdir2 и /tmp/testdir2/testdir22
10. Находясь в директории /tmp используйте одну команду и относительные пути (используя знак
), чтобы удалить директории /home/user/testdir1 и /tmp/testdir2/testdir22 с выводом информация об удалении.
Задания есть, ответов не хватает. Например, в формате постов на пикабу задание дается в посте в текстовой части после видео. Ответы в комментариях.
Пробежался по заданиям. Тут ещё и надо наизусть знать структуру директорий, где какая в какой лежат. Это явно перебор в уроке про команды.
В общем, видеоурок зачет, задания — незачёт)
Можете объяснить? я вроде ничего про «где какая в какой лежат» не давал в заданиях. Везде указал полные пути
Или что-то недоглядел?
Так чтобы указать полный путь любой папки, надо знать её местоположение
Хм.. полный путь — это и есть её местоположение
Например — /usr/share/applications
Это полный путь, потому что он начинается с корня ( / — в начале)
Так для того, чтобы указать путь к папке applications, нужно знать, где она лежит.
Без этого знания придется её поискать
Так в вопросах же я даю полные пути —
Находясь в директории /usr/share/applications создайте одной командой директорию /home/user/testdir1/testdir11/testdir111
Благодарю. Не нашел их в посте и комментах.
У вас в ответе на пятое задание пропущено в пути еще одно поднятие ../
Уже по первому заданию непонятно, как обучающийся должен узнать все эти способы, если они не озвучивались в видео. Вариант загуглить, конечно, хорош, но какой тогда смысл в курсе и видеоуроке.
Небольшое уточнение стоило сделать. Все эти способы после первого видео невозможно знать. Часть способов для тех, кто уже продвинулся вперёд и решил в какой-то момент повторить материал и теперь он знает, что способов больше.
Насколько эти знания нескольких способов практически полезны?
Все способы довольно полезны, потому что в различных условиях применяются различные способы
1) ну как-то сразу резкий вопрос. Это вы делали видео и корпели над ним. Обучающийся дай Бог половину информации воспринял. А вы сразу: «запомни, обобщи, систематизируй, выдай». Да ещё вспомни, где та самая «домашняя директория пользователя».
Попроще бы было в формате: используя команды «pwd», «ls» и «cd» перейдите в директорию «/home/user/». Перейдите в эту же директорию, используя только команду cd и клавишу «
«. Ну да, намёк жирный, зато голову ломать долго не надо.
Чтобы работать с файлами и директориями, в графическом интерфейсе есть программы, называемые файловыми менеджерами. У разных графических окружений могут быть разные программы, тот же GNOME, который стоит на CentOS, по умолчанию использует файловый менеджер под названием nautilus. Я думаю все знают, что можно делать с файлами и директориями – смотреть информацию о них, копировать, вырезать, удалять, переименовывать, создавать директории и всё такое. И в командой строке это также просто.
Мы знаем, что посмотреть содержимое директории можно с помощью команды ls. По умолчанию она показывает содержимое текущей директории. Заметьте, что ls показывает директории одним цветом, а файлы другим. Чтобы понять, в какой директории мы сейчас находимся, нужна команда pwd – print working directory. Когда вы открываете терминал, как правило он использует домашнюю директорию пользователя – это личная директория пользователя, где находятся все его файлы. С помощью ls можно смотреть содержимое и других директорий, для этого нужен путь к другой директории.
Кстати о пути . В корне находятся директории, внутри которых тоже есть какие-то директории. Например, в корне у нас есть директория home, где обычно лежат домашние директории пользователей, например нашего пользователя user, а внутри домашней директории пользователя есть какие-то его личные директории. То есть, чтобы мне зайти, допустим, в директорию Documents у пользователя user, мне нужно зайти в корень, потом открыть home, user и зайти в директорию Documents. Чтобы переходить по директориям в командной строке, используем команду cd – сhange directory – сменить директорию. И так, пишем cd /, то есть заходим в корень (слеш – это путь к корню), проверяем текующую директорию (pwd), и смотрим её содержимое(ls). Дальше пишем cd home и повторяем всё тоже самое. Не стесняйтесь использовать tab – допустим, пишете cd h, нажимаете tab и он автоматом добавляет ome, так как никаких других директорий, начинающихся на h здесь нет. Точно также для user и Documents. Чтобы нам сразу зайти в Documents, мы можем разом написать cd /home/user/Documents , разделяя директории знаком слэш.
Когда мы в начале указываем корень (/), а потом пишем первую директорию, которая находится в корне, а потом то что внутри и т.д. — это полный путь. /home/user/Documents – пример полного пути. Он всегда начинается со знака / — то есть мы возвращаемся в самое начало файловой системы и оттуда начинаем писать путь. Такой путь универсальный — где бы вы сейчас не находились, вы можете указать полный путь и попасть туда куда вам надо.
В домашнюю директорию пользователя можно вернуться просто написав cd. Теперь, я вижу(ls), что здесь есть директория Documents. Если я хочу зайти в эту директорию, мне не обязательно писать полный путь – cd /home/user/Documents, я могу просто написать cd Documents. Или допустим, давайте зайдём в cd /home/. Я могу написать cd user/Documents. То есть, если я строю путь не с корня, а с текущей директории, такой путь называется относительным. Но что, если я нахожусь в директории /home/user/Documents и хочу попасть на директорию выше, то есть в /home/user ? Для этого в каждой директории есть ссылки на вышестояющую директорию – две точки (..). Если я напишу cd .. , я попаду в /home/user . Я могу делать всякие комбинации, допустим, я нахожусь в директории Documents, я могу написать cd ../Pictures. То есть, я разом вернулся в директорию /home/user, а потом зашел в Pictures. Чтобы сразу вернуться туда, где я был раньше, я могу написать cd — . Также есть ссылка на текущую директорию – одна точка .
Зачем это нужно мы разберём чуть позже. Также есть готовая ссылка на домашнюю директорию нашего пользователя – тильда слэш (
/). Где бы мы не находились, мы всегда можем написать cd
/ и попасть в домашнюю директорию, либо использовать это для относительного пути, например cd
/Documents . Ну и возвращаясь к теме ls, мы можем посмотреть содержимое любой директории, где бы мы сейчас не находились, используя полный или относительный пути. Допустим, ls /home/user/Documents или ls Documents или ls
С путями разобрались. Теперь давайте посмотрим, как работать с директориями. Начнём с создания директории, для этого используем команду mkdir – make directory – создать директорию. В качестве аргумента мы должны указать название новой директории – допустим, mkdir test (ls). Можно разом создать несколько директорий – mkdir test1 test2 test3 (ls). Очень не рекомендую использовать пробелы в названиях, так как командная строка воспринимает пробелы как переход на новый аргумент или опцию, как я показал выше, если я напишу mkdir this is new directory, у меня создастся четыре директории. Но если всё же вам необходимо создать директорию с пробелами в названии, вы можете взять название новой директории в кавычки – mkdir “New Dir”. Теперь, чтобы зайти в эту директорию, нужно либо использовать кавычки, либо использовать специальный символ — \ (обратный слэш) перед пробелом. Это называется экранированием символов. В данном случае это позволит консоли игнорировать пробел как переход на новый аргумент.
Если я хочу создать сразу директорию 1, а внутри неё директорию 2, а внутри неё директорию 3, для этого нужна опция -p – parents – создавать родительские директории. То есть, написав mkdir -p 1/2/3 я создам несколько вложенных директорий.
Для удаления пустой директории используется команда rmdir – remove directory – удалить директорию. Например, rmdir test1. Можно разом удалять несколько директорий – rmdir test2 test3. Если директория не пустая, то rmdir откажется её удалять. Поэтому, когда вам нужно удалить директорию со всем содержимым, используется команда rm -r . Например, rm -r 1, тогда я удалю как 1, так и внутрилежающие директории 2 и 3. Вообще, rm используется для удаления файлов, но о файлах мы поговорим в следующий раз. А опцию -r вы часто будете встречать – она означает рекурсивно, то есть со всем, что находится внутри. Допустим, та же команда ls уже с большим -R покажет содержимое директории вместе с содержимым поддиректорий.
Осталось еще рассмотреть копирование, перемещение и прочее, но так эти команды совпадают с командами по работе с файлами, а ролик уже получился достаточно большим, оставшееся мы рассмотрим в следующий раз. Чтобы не забывать пройденное, обязательно практикуйтесь. Например, найдите в ролике все команды с опциями, которые я вводил, выпишите, повторите на различных директориях. Добейтесь того, чтобы вы знали без всяких раздумий, для чего нужна каждая из этих команд и ключей.
Источник