Это вторая статья в нашей серии о переходе на Linux. Если вы пропустили первый, вы можете найти его здесь. Как упоминалось ранее, существует несколько причин, по которым вы можете перейти на Linux. Возможно, вы используете или разрабатываете код для Linux в своей работе или можете просто попробовать что-то новое.
В любом случае наличие Linux на вашем основном рабочем столе поможет вам быстро ознакомиться с методами и инструментами, которые вам понадобятся. В этой статье мы расскажем о Linux: файлах, файловых системах и дисках.
Если вы работаете с Mac, Linux должен чувствовать себя достаточно знакомым вам, поскольку Mac использует файлы, файловые системы и диски довольно близко к тому, как это делает Linux. С другой стороны, если ваш опыт — это в первую очередь Windows, доступ к дискам под Linux может показаться немного запутанным. Как правило, Windows назначает букву диска (например, C:\) на каждый системный диск. Linux не делает этого. Вместо этого Linux представляет собой единую иерархию файлов и каталогов для всего, что есть в вашей системе.
Давайте посмотрим на пример. Предположим, вы используете компьютер с основным жестким диском, CD-ROM с папками «Книги и Видео» и флэш-накопитель USB с каталогом «AndreyEx». В Windows вы увидите следующее:
C:\ [Hard drive] ├ System ├ System32 ├ Program Files ├ Program Files (x86) └ <дополнительные папки> D:\ [CD-ROM] ├ Книги └ Видео E:\ [флэш-накопитель] └ AndreyEx
Вместо этого типичная система Linux:
/ (самый верхний каталог, называемый корневым каталогом) [Hard drive] ├ bin ├ etc ├ lib ├ sbin ├ usr ├ <дополнительные каталоги> └ media └ <ваш логин> ├ cdrom [CD-ROM] │ ├ Книги │ └ Видео └ Kingme_USB [флэш-накопитель] └ AndreyEx
Если вы используете графическую среду, как правило, диспетчер файлов в Linux будет представлять компакт-диск и USB-накопитель с иконками, которые выглядят как устройство, поэтому вам может не понадобиться знать конкретный каталог мультимедиа.
Linux подчеркивает то, что называемые файловыми системами. Файловая система представляет собой набор структур на носителях (например, жесткий диск), которые отслеживают все файлы и каталоги на носителе. Без файловой системы мы могли хранить информацию на жестком диске, но все данные были бы в беспорядочном беспорядке. Мы не знали бы, какие блоки данных принадлежат файлу. Возможно, вы слышали такие имена, как Ext4, XFS и Btrfs. Это типы файловой системы Linux.
На всех типах носителей, содержащих файлы и каталоги, есть файловая система. Различные типы носителей могут использовать определенные типы файловой системы, которые оптимизированы для носителя. Поэтому CD-ROM использует типы файловой системы ISO9660 или UDF. USB-накопители обычно используют FAT32, поэтому их можно легко обменивать с другими компьютерными системами.
Windows также использует файловые системы. Он просто не говорит о них столько же. Например, когда вы вставляете CD-ROM, Windows будет читать структуры файловой системы ISO9660, присваивать ему букву диска и отображать файлы и каталоги под буквой (например, D:\). Поэтому, если вы разбираетесь в деталях, технически Windows назначает букву диска файловой системе, а не всему диску.
Используя тот же пример, Linux также будет читать структуры файловой системы ISO9660, но вместо буквы диска он подключит файловую систему к каталогу (процесс называется установкой). Затем Linux отобразит файлы и каталоги на компакт-диске в прилагаемом каталоге (например: /media/<ваш логин>/cdrom).
Поэтому, чтобы ответить на вопрос «Где мой C:\?»? В Linux нет C:\. Он работает по-другому.
Windows хранит файлы и каталоги (также называемые папками) в своей файловой системе. Однако Linux позволяет вставлять в файловую систему и другие вещи. Эти дополнительные типы вещей являются собственными объектами в файловой системе, и они фактически отличаются от обычных файлов. Linux позволяет создавать и использовать жесткие ссылки, символические ссылки, именованные каналы, узлы устройств и сокеты в дополнение к обычным файлам и каталогам. Здесь мы не будем разбираться во всех типах объектов файловой системы, но есть несколько полезных для этого сведений.
Жесткие ссылки используются для создания одного или нескольких псевдонимов для файла. Каждый псевдоним — это другое имя для одного и того же содержимого на диске. Если вы редактируете файл под одним именем файла, изменения отображаются также под другими именами файлов. Например, вы могли бы AndreyEx_Resume_2018.doc иметь жесткую связь с Resume.doc. (Обратите внимание, что вы можете создать жесткую ссылку, используя команду ln из командной строки.) Таким образом вы можете найти и отредактировать AndreyEx_Resume_2018.doc, а затем отправить AndreyEx_Resume_2018.doc своим потенциальным клиентам, чтобы помочь им отслеживать, что там происходит — который будет содержать все ваши обновления.
Символьные ссылки немного похожи на ярлыки Windows. Запись файловой системы содержит путь к другому файлу или каталогу. Во многих отношениях они работают как жесткие ссылки, поскольку они могут создавать псевдоним для другого файла. Однако символические ссылки могут содержать каталоги псевдонимов, а также файлы, а символические ссылки могут ссылаться на элементы в другой файловой системе на разных носителях, где жесткие ссылки не могут. (Обратите внимание, что вы можете создавать символические ссылки также с помощью команды ln, но с опцией -s .)
Еще одно большое различие между Windows и Linux связано с разрешениями на объекты файловой системы (файлы, каталоги и другие). Windows реализует довольно сложный набор разрешений для файлов и каталогов. Например, пользователи и группы могут иметь разрешения на чтение, запись, выполнение, изменение и т. д. Пользователям и группам может быть предоставлено разрешение на доступ ко всему в каталоге с исключениями или им не разрешено ничего разрешать в каталоге с исключениями.
Однако большинство людей, использующих Windows, не используют специальные разрешения; поэтому удивительно, когда они обнаруживают, что набор разрешений по умолчанию используется и применяется в Linux. Linux может применять более сложные разрешения с помощью SELinux или AppArmor. Однако большинство установок Linux используют встроенные разрешения по умолчанию.
В разрешениях по умолчанию каждый элемент в файловой системе имеет набор разрешений для владельца файла, группы для файла и для всех остальных. Эти разрешения позволяют: читать, писать и выполнять. У разрешений есть иерархия. Во-первых, он проверяет, является ли пользователь (имя пользователя) владельцем и имеет разрешение. Если нет, то он проверяет, находится ли ваш пользователь (имя пользователя) в группе для файла, и у группы есть разрешение. Если нет, тогда он проверяет, имеет ли все остальные разрешение. Существуют и другие настройки разрешений, но наиболее часто используются три набора из трех.
Если вы используете командную строку, и вы наберете ls -l, вы можете увидеть разрешения, представленные как:
rwxrw-r-- 1 andreyex destroyer 27 Aug 33rd 19:35 rolldice.sh
Буквы в начале, rwxrw-r—, показывают разрешения. В этом случае владелец (andreyex) может читать, записывать и выполнять файл (первые три буквы, rwx); члены группы destroyer могут читать и записывать файл, но не выполнять (второй три буквы, rw-); и все остальные могут читать только файл (последние три буквы, r—).
(Обратите внимание, что в Windows, чтобы сделать исполняемый файл сценария, вы делаете расширение файла чем-то конкретным, например, .bat. В Linux расширение файла ничего не значит для операционной системы. Вместо этого его разрешения должны быть установлены так, чтобы файл является исполняемым.)
Если вы получаете отказ в разрешении на доступ, скорее всего, вы пытаетесь запустить программу или команду, требующую прав администратора, или вы пытаетесь получить доступ к файлу, который не имеет разрешений для вашей учетной записи пользователя, чтобы получить к нему доступ. Если вы пытаетесь сделать что-то, требующее прав администратора, вам нужно будет переключиться на учетную запись пользователя root, войдя в систему под учетной записью root или используя вспомогательную программу sudo в командной строке, которая позволит вам временно запустить как root. Инструмент sudo, конечно же, попросит пароль, чтобы убедиться, что у вас действительно есть разрешение.
Windows преимущественно использует тип файловой системы NTFS для жестких дисков. В Linux вы можете выбрать, какой тип файловой системы вы хотите использовать для жесткого диска. Различные типы файловых систем отличаются различными характеристиками. Основной файловой системой Linux, используемой сегодня, является Ext4. Тем не менее, вы можете выбирать из множества типов файловой системы во время установки, например: Ext3 (предшественник Ext4), XFS, Btrfs, UBIFS (для встроенных систем) и т. д. Если вы не знаете, какую из них использовать, Ext4 будет работать отлично.