Файловая система Linux
Linux отличается от Windows архитектурой файловой системы Linux и на мой взгляд в лучшую сторону. Структура фалов идёт не от диска C:\, а от корня /. Операционная система, конечно, стоит на одном из дисков, sda например, но Линукс очень гибкая операционная система и позволяет распределить системные и иные директории по разным дискам при надобности или установить ОС на RAID массив. Структура чётко разделена, все файлы лежат там где необходимо, например в директории /home - файлы пользователей с их настройками, в /lib (library) - системные библиотеки итп. везде порядок! И не может быть как в Wndows - чёрти где зачастую настройки программ.
Является плюсом отсутствие файла реестра в Linux, который добавляет тормозов Windows. Все настройки раскиданы по файлам, такое структурное решение работает куда лучше.
Отдельно стоит разъяснить про диски, если в Windows диски начинаются от C, D итд. И являются корнем, то в Linux главным считается корень системы / в котором уже живут все файлы, директории, диски и прочие устройства. Диски могут монтироваться в одну из директорий(папок): media, dev или mnt. Или куда угодно по желанию пользователя, читайте как примонтировать диск в Linux.
В media попадают динамически подключённые диски, точнее там находится устройство к которому пользователь может обращаться как к обычной директории, так же точка доступа появляется в файловом менеджере. Будет подписан как жёсткий диск, обращение к нему будет по названию /media/имя-пользователя/имя-диска (метка тома/label или длинный UUID (хеш-код) если метки нет.)
В dev попадают все накопительные устройства, которые именуются по порядку sda, sdb, sdc итд. Путь к устройству /dev/sda итд. (dev - devices - устройства). Диски именуются в зависимости от типа их подключения: NVMe - nvme0n1, SATA - sda, а IDE - hda.. т.е. sda - SATA DISK A и дальше в алфавитном порядке. Если буквы закончатся, диски начнут называться как /dev/sdaa, /dev/sdab...
mnt - точка(директория) для монтирования временных файловых систем. (обычно не используется)
Дисковые, флеш итп. устройства называются как sda, sdb, sdc итд. Дисковые разделы в устройстве (логические тома) как sda1, sda2 итп. С томами идёт непосредственная работа, они несут в себе файловые системы, файлы итп.
Имейте ввиду, в Линуксе регистр букв в названии файлов имеет значение, имена name.txt и naMe.txt являются разными файлами, в Виндовс одним и тем же файлом.
Файловая система для Линукс какую выбрать?
Если в Windows сейчас модная NTFS, то файловая система для Linux - это кошмар для новичка. Их очень много и статей по интернету много устаревших, всё что необходимо знать - самая последняя и актуальная EXT4. Её использует на своих серверах Google и ещё большая часть серверного мира, а там особые требования к надёжности. В текущее время есть ещё разработки, но EXT4 уже доказала свою надёжность и имеет пару преимуществ: она немного быстрее NTFS и она справляется с фрагментацией (разбросу частей файла по всему диску, где есть пустые ячейки и последующим скатыванием в тормоза всей системы) с учётом того, что диск не забит под завязку. Таким образом нет необходимости в процессе дефрагментации диска - вот как здорово!
Как работает файловая система в Линукс
Файловая система в Линукс имеет несколько уровней: есть суперпользователь root, которому принадлежат директории системы. И есть пользователи, которые доступа к системе не имеют (только чтение и оно также может быть запрещено). По умолчанию, в сборках дистрибутивов типа Ubuntu, Linux Mint итп. доступа к root извне нет, что повышает безопасность. Пользователи имеют свою директорию, в которой могут проводить свою деятельность, куда сохраняются их настройки - директория /home/имя-пользователя/... (на отдельном диске можно установить владельцем текущего пользователя и так же пользоваться файлами или поставить разрешения(права) для всех пользователей, см. ниже). Таким простым и изящным образом решена проблема вирусов. Конечно присутствует вероятность, что пользователь поставит вредоносное приложение из вне или взломают репозиторий (то место от куда загружаются и устанавливаются программы, заранее проверенные разработчиками и прошедшие контроль), программе при установке дадут минимально необходимы права для её установки и в дальнейшем она, будучи запущенной из под пользователя, не сможет редактировать системные файлы. В общем забудьте об антивирусах и тормозах системы из-за постоянных проверок.
А ещё, ни один файл на диске не сможет запуститься/выполниться, если у него на это нет прав.
Права Линукс chmod
Любая директория/файл имеет владельца и группу (в определённые группы могут входить несколько пользователей). Их можно по правой клавиши мыши сменить в свойствах или в консоли.
Права chmod могут быть заданы как в числовом(абсолютном) формате(режиме), так и в буквенном(символьном).
Числовой:
sudo chmod -R 777 /media/$USER/diskname/needir
sudo - запросим права суперпользователя для данной операции, укажем программу которая это будет делать chmod. -R - чтоб скрипт прошёл рекурсивно по всем вложенным директориям и файлам. Укажем права, и директорию назначения.
Права 777: первая цифра - пользователь; вторая - группа; третья - остальные (в смысле не являющиеся пользователями системы, подключённые удалённо итп);
Цифры значат:
- 0 - всё запрещено
- 1 - 3 пропускаю, они обычно не используются
- 4 - только чтение
- 5 - чтение и выполнение
- 6 - чтение и запись
- 7 - всё разрешено
Буквенный:
sudo chmod -R a+rwx /media/$USER/diskname/needir # Записи равноценны sudo chmod -R +rwx /media/$USER/diskname/needir sudo chmod -R ugo+rwx /media/$USER/diskname/needir
Первая или несколько указывают на то, для кого применяем права:
u - пользователь; g - группа; o - остальные; a - все;
Вторая, действие: - запрещение; + разрешение; = присвоение;
Третья или несколько сами права: r - чтение, w - запись, x - выполнение;
Найти все директории и назначить права по умолчанию:
find /media/$USER/diskname/needir -type d -exec chmod 755 {} \;
Найти все файлы и назначить права по умолчанию:
find /media/$USER/diskname/needir -type f -exec chmod 644 {} \;
В файловом менеджере можно включить колонку "права доступа" и там увидеть обозначение в буквенном режиме, что на мой взгляд не удобно, например: 777 выглядит как rwxrwxrwx; 755 = rwxr-xr-x; 644 = w-r--r--; т.е. пользователь 3 буквы: чтение, запись, выполнение; далее группа и остальные по 3 символа. Ещё перед директориями ставится флаг в файловом менеджере:
- - отсутствие флага
- b - блочное устройство (block device)
- с - символьное устройство (character device)
- d - директория (directory)
- D - дверь (door)
- l - символическая ссылка (symbolic link)
- p - конвейер (pipeline)
- s - сокет (unix socket)
т.е на 1 символ больше в начале.. -rwxr-xr-x или drwxr-xr-x
У chmod есть ещё варианты, я их не привожу - этого достаточно.
Файловая система только для чтения Linux
Если файловая система доступна только для чтения в Linux, имеется ввиду если подключили диск, флешку итп и она не даёт записывать на диск, а только просматривать, то это значит мы упёрлись в права пользователя, что делать?
Если в файловом менеджере помечен серым пункт вырезать итп. (нет возможности вырезать директорию), та же проблема и то же решение.
Если в файловом менеджере есть выпадающее меню по правой кнопке - действия root. То нажмём на директорию в /media/имя-пользователя/ на имя-диска(label) и в выпадающем меню - Установить владельцем активного пользователя, всё, можно пользоваться этими файлами. (имейте ввиду, бывает глюк, права в свойствах не отображаются после смены, хотя по факту уже изменены - переоткройте файловый менеджер, чтоб он перечитал.)
В файловом менеджере Dolphin это расширение (в Linux Mint уже стоит) называется Root Actions Servicemenu. На другой сборке установить можно в Настройка Dolphin - Действия - Загрузить новые.. Ещё есть подобные, например, Simple Root Actions Menu. (Не пользуюсь, консоль же есть.)
Как всегда можно просто воспользоваться консолью:
sudo chown -R $USER:$USER /media/$USER/diskname # Корректней, но группа может отдаваться пустой, она совпадает с пользователем sudo chown -R $USER:$GROUP /media/$USER/diskname # Или разрешить запись всем sudo chmod -R 777 /media/$USER/diskname
sudo - запросить права суперпользователя на текущую операцию
chmod - программа выполняющая операции
Далее параметры:
-R означает рекурсивно пройти по всем файлам и директориям внутри.
$USER, $GROUP - подставить данные текущего пользователя.
777 - установка разрешений на чтение и запись для владельца, группы и остальных пользователей.
В конце путь к файлу или дирректории, которая подвергнется экзекуции.