## File System Linux

Файловая система - единая иерархическая структура, описывающая хранение и извлечение данных.

### Файловая система ([стандарт FHS](https://refspecs.linuxfoundation.org/fhs.shtml)) [Linux](./2.0.1%20Linux.md)

**FHS (Filesystem Hierarchy Standard**, стандарт иерархии файловой системы) - унифицированное расположение (стандарт) основных файлов и каталогов в UNIX-системах.

[Стандарт](https://refspecs.linuxfoundation.org/fhs.shtml) описывает следующие директории в корневом каталоге (/). `tree -d -L 1`:

* **/lib** - Библиотеки, необходимые для запуска программ в `/bin` и `/sbin`.
* **/bin** - Основные [системные утилиты терминала (CLI)](/1%20Common/1.3%20Terminal/1.3.3%20CLI/), необходимые для работы ОС;
* **/sbin** - (system binary) используемые администратором системы (например, fsck, init, sha256). Для их выполнения может потребоваться привилегии root;


* **/boot** - Файлы, необходимые для загрузки системы, включая загрузчик и [ядро](/2%20ComputerScience/2.0%20Linux/2.0.2%20Processor(CPU).md).
* **/dev** - Файлы устройств, обеспечивающие интерфейс для взаимодействия с оборудованием компьютера.
* **/etc** - Конфигурационные файлы системы (настройки).


* **/home** - Домашние директории пользователей, кроме `root` (для него отдельная папка).
* **/root** - Домашний каталог пользователя `root`.


* **/media** - Точки монтирования для съемных носителей (например, CD-ROM, USB).
* **/opt** - Дополнительное программное обеспечение, которое устанавливается в виде пакетов.


* **/mnt** - Точки временного монтирования файловых систем.
* **/srv** - Данные для служб, предоставляемых этой системой (например, веб-сервер, FTP).

* **/tmp** - Временные файлы, которые могут быть удалены при перезагрузке.
* **/run** - Временные файлы, которые создаются и используются во время работы системы.

* **/usr** - Вторичная иерархия для данных пользователя; включает большинство многопользовательских команд и данных. Устанавливаемое ПО будет падать именно сюда.
* **/usr/bin or /usr/sbin** - Аналогия с /bin и /sbin, но нам /usr/bin не критичны для запуска ОС, предназначены скорее для пользователей (не ОС);
* **c** - вы компилируете программу самостоятельно/скачиваете стороннюю утилиту. Н/р: wget, python3, docker и git;
* **/var** - Переменные файлы, такие как журналы, временные файлы и почта (изменяемый файлы программ).

### В MacOS 

Директория `/System` в `macOS` является ключевой частью файловой системы операционной системы, содержащей важные системные компоненты, необходимые для функционирования macOS. 

Подкаталоги `tree -d -L 1`:

* **Applications**: системные приложения, которые поставляются с покупкой macOS. Н/р: Safari, Calendar, System Preferences и др.;

* **Cryptexes**: связан с криптографическими или системными компонентами macOS. Данный каталог может содержать данные, связанные с безопасностью системы или шифрованием;

* **Developer**: инструменты и библиотеки, необходимые для разработки программного обеспечения;

* **DriverKit**: драйверы, необходимые для поддержки оборудования и периферийных устройств, совместимых с macOS.

* **Library**: системные библиотеки и ресурсы, необходимые для функционирования ОС и приложений.

* **Volumes**: точка монтирования для всех доступных томов и дисков. Н/р: подключенные внешние жесткие диски, USB-накопители и сетевые тома будут отображаться здесь.

* **iOSSupport**: включает ресурсы, используемые для взаимодействия macOS с устройствами iOS или эмуляции среды iOS для разработки и тестирования.


## Типы файлов 

```
$ ls -l
total 4
drwxr-xr-x  2 user user 4096 Jan 01 00:00 directory  # Каталог
-rw-r--r--  1 user user    0 Jan 01 00:00 file.txt  # Обычный файл
lrwxrwxrwx  1 user user    7 Jan 01 00:00 symlink -> file.txt  # Символическая ссылка
crw-rw-rw-  1 root root  1, 5 Jan 01 00:00 /dev/zero  # Символьное устройство
brw-rw----  1 root disk  8, 0 Jan 01 00:00 /dev/sda  # Блочное устройство
prw-r--r--  1 user user    0 Jan 01 00:00 fifo  # Именованный канал (FIFO)
srwxr-xr-x  1 user user    0 Jan 01 00:00 socket  # Сокет
```

[Атрибуты владения](/1%20Common/1.3%20Terminal/1.3.3%20CLI/1.3.3.3%20Chmod.md) были описаны мной ранее. 

## Пользователи и система

Список пользователей можно посмотреть в `/etc/passwd`, его полное имя и домашний каталог/оболочка с которой запускается при заходе в систему.

> На macOS информация о пользователях хранится в Open Directory, и `/etc/passwd` может не отображать всех пользователей, зарегистрированных в системе. Для просмотра `dscl . -list /Users`

Пароли хранятся в `/etc/shadow`. 😈 hashcat`ом можно [забрутфорсить](/2%20ComputerScience/2.5%20Cybersecurity/2.5.1%20Cryptology.md) хэш и вычислить парольную комбинацию. 

Видос с примером на MacOS:[Grabbing and cracking macOS password hashes (with dscl and hashcat)](https://www.youtube.com/watch?v=b3yypGo4J2k)

---

[2.0.2 Precessor (CPU) Theme](./2.0.2%20Processor(CPU).md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) |  [2.0.4 Concurrency(параллельность) and Multitasking(многозадачность) Theme Folder](./2.0.4%20ConcurrencyAndMultitasking/)