Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Операционные системы
  4. Linux
  5. Гайд для новичков: структура файлов в Linux

Гайд для новичков: структура файлов в Linux

Запланировано Прикреплена Закрыта Перенесена Linux
1 Сообщения 1 Постеры 7 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MugiwaraM Не в сети
    MugiwaraM Не в сети
    Mugiwara
    написал отредактировано
    #1

    В Linux все — это файлы. Понимание структуры файловой системы критично для системного администратора, разработчика и даже обычного пользователя. Это позволит вам:

    • Находить нужные программы и конфигурации
    • Правильно устанавливать ПО
    • Разбираться в ошибках и логах
    • Не случайно удалить что-то важное
    • Безопасно работать с системой

    Корневой каталог (/)

    Linux использует иерархическую структуру, начинающуюся с единственного корня — /. Это отличие от Windows, где несколько дисков (C:, D:) с собственными корнями.

    ls /
    

    Вы увидите примерно такое:

    bin    boot   dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
    

    Каждый из этих каталогов имеет строго определённое предназначение. Давайте разберёмся в каждом.

    Основные директории

    /bin — исполняемые файлы (бинарники) для пользователей

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

    Примеры команд:

    ls /bin
    
    # Вы увидите:
    # bash  cat  chmod  cp  date  echo  grep  kill  ln  ls  mkdir  more  mv  ps  pwd  rm  sed  sh  sort  tar  touch  uname
    

    Примеры использования:

    # Эти команды находятся в /bin:
    ls /home                    # программа ls
    cp file1.txt file2.txt      # программа cp
    mkdir new_folder            # программа mkdir
    cat file.txt                # программа cat
    

    Почему это нужно: Если система не загружается в GUI, вы сможете загрузиться в минималистичный режим и использовать эти команды для восстановления.

    /sbin — системные команды (super user binary)

    Предназначение: команды для администратора (root), необходимые для управления системой.

    Примеры команд:

    ls /sbin
    
    # Вы увидите команды, требующие прав администратора:
    # ifconfig  iptables  fdisk  mkfs  mount  reboot  shutdown  useradd  usermod  visudo
    

    Примеры использования:

    # Команды, требующие sudo:
    sudo shutdown -h now        # выключить компьютер
    sudo reboot                 # перезагрузка
    sudo fdisk -l              # просмотр дисков
    sudo useradd newuser       # создать пользователя
    

    Почему это нужно: Система разделяет «обычные» и «админские» команды для безопасности. Обычный пользователь не должен случайно выключить сервер.

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

    Предназначение: личные файлы каждого пользователя системы.

    Структура:

    /home/
    ├── alice/
    │   ├── Documents/
    │   ├── Downloads/
    │   ├── Pictures/
    │   ├── .bashrc
    │   ├── .ssh/
    │   └── projects/
    └── bob/
        ├── Documents/
        ├── .bashrc
        └── work/
    

    Примеры работы:

    # Кто я?
    whoami
    # alice
    
    # Где моя домашняя директория?
    pwd
    # /home/alice
    
    # Или сокращённо через переменную:
    echo $HOME
    # /home/alice
    
    # Символ ~ представляет домашнюю директорию:
    cd ~                        # перейти в /home/alice
    cd ~/Documents              # перейти в /home/alice/Documents
    

    Важные скрытые файлы (начинаются с точки):

    # Показать скрытые файлы:
    ls -la ~
    
    # Вы увидите:
    # .bashrc          — конфигурация bash-шелла
    # .bash_history    — история команд
    # .ssh/            — SSH-ключи для доступа на серверы
    # .gitconfig       — конфигурация Git
    # .config/         — конфигурации приложений
    

    Почему это нужно: Каждый пользователь изолирован друг от друга. Ваши файлы в /home/alice не видны пользователю bob.

    /root — домашняя директория администратора

    Предназначение: домашняя папка пользователя root (администратора).

    # Если вы root:
    pwd
    # /root
    
    # Если вы обычный пользователь, вы не можете туда заходить:
    ls /root
    # ls: cannot open directory '/root': Permission denied
    
    # Но под sudo сможете:
    sudo ls /root
    

    Почему это нужно: root — это особый пользователь с полными правами. Его файлы держат отдельно от /home.

    /etc — конфигурационные файлы

    Предназначение: конфигурации системы и приложений. Это текстовые файлы, которые управляют поведением программ и системы.

    Примеры конфигов:

    ls /etc | head -20
    
    # Вы увидите:
    # bash.bashrc              — конфиги bash для всех пользователей
    # fstab                    — какие диски монтировать при загрузке
    # hostname                 — имя компьютера
    # hosts                    — локальная таблица DNS
    # passwd                   — данные пользователей
    # shadow                   — хэши паролей (только для root)
    # ssh/                     — конфиги SSH-сервера
    # nginx/                   — конфиги веб-сервера nginx
    # postgresql/              — конфиги PostgreSQL
    # cron.d/                  — расписание автоматических задач
    

    Примеры работы:

    # Посмотреть имя компьютера:
    cat /etc/hostname
    # mycomputer
    
    # Посмотреть таблицу DNS:
    cat /etc/hosts
    # 127.0.0.1       localhost
    # ::1             localhost
    # 192.168.1.100   mycomputer
    
    # Посмотреть данные пользователей (без паролей):
    cat /etc/passwd
    # root:x:0:0:root:/root:/bin/bash
    # postgres:x:116:120:PostgreSQL administrator:/var/lib/postgresql:/bin/bash
    # alice:x:1000:1000:Alice User:/home/alice:/bin/bash
    
    # Посмотреть, какие диски монтированы:
    cat /etc/fstab
    # UUID=abc123  /           ext4  defaults  0 0
    # UUID=def456  /boot       ext4  defaults  0 0
    # UUID=ghi789  /home       ext4  defaults  0 0
    

    Конфигурирование сервисов:

    # Конфиг PostgreSQL:
    cat /etc/postgresql/15/main/postgresql.conf | grep max_connections
    # max_connections = 100
    
    # Конфиг SSH-сервера:
    cat /etc/ssh/sshd_config | grep Port
    # Port 22
    
    # Конфиг Nginx:
    cat /etc/nginx/nginx.conf
    

    Почему это нужно: Если программа работает неправильно, ответ часто находится в /etc. Например, если веб-сайт не открывается, проверьте конфиг nginx в /etc/nginx/.

    /var — переменные данные (logs, cache, databases)

    Предназначение: данные, которые меняются во время работы системы: логи, кэши, очереди писем, временные базы данных.

    Структура:

    ls /var
    
    # Основные директории:
    # log/       — логи приложений
    # cache/     — кэшированные данные
    # tmp/       — временные файлы
    # spool/     — очереди (писем, заданий на печать)
    # lib/       — данные баз данных (PostgreSQL, MySQL)
    # run/       — информация о запущенных процессах (PID-файлы)
    

    Примеры логов:

    # Логи системы:
    sudo tail -f /var/log/syslog              # основной системный лог (Ubuntu/Debian)
    sudo tail -f /var/log/messages            # основной системный лог (RHEL/CentOS/Fedora)
    
    # Логи Nginx:
    sudo tail -f /var/log/nginx/access.log    # кто заходил на сайт
    sudo tail -f /var/log/nginx/error.log     # ошибки веб-сервера
    
    # Логи PostgreSQL:
    sudo tail -f /var/log/postgresql/postgresql.log
    
    # Логи SSH (попытки входа):
    sudo tail -f /var/log/auth.log            # попытки входа (Ubuntu/Debian)
    sudo tail -f /var/log/secure              # попытки входа (Fedora/CentOS)
    

    Работа с логами:

    # Посмотреть последние 20 строк:
    sudo tail -n 20 /var/log/nginx/error.log
    
    # Смотреть логи в реальном времени:
    sudo tail -f /var/log/nginx/access.log
    
    # Найти ошибки за последний час:
    sudo grep "error" /var/log/nginx/error.log | tail -50
    
    # Посчитать неудачные попытки SSH за день:
    sudo grep "Failed password" /var/log/auth.log | wc -l
    

    Данные приложений:

    # Где хранит данные PostgreSQL:
    ls -la /var/lib/postgresql/
    
    # Где хранит кэш приложений:
    ls -la /var/cache/
    
    # Где находятся PID-файлы запущенных сервисов:
    ls -la /var/run/
    # или
    ls -la /run/
    

    Почему это нужно: Когда что-то ломается, вы идёте в /var/log и читаете, что произошло. Свободное место на диске часто занимают старые логи в /var/log.

    /usr — программы и библиотеки для пользователей

    Предназначение: большинство установленных программ, библиотек и документации.

    Структура:

    ls /usr
    
    # Основные директории:
    # bin/       — исполняемые файлы программ
    # sbin/      — системные команды (требуют права администратора)
    # lib/       — библиотеки, необходимые программам
    # include/   — заголовочные файлы для разработчиков
    # share/     — данные, не зависящие от архитектуры (документация, иконки)
    # local/     — программы, установленные вручную
    

    Примеры:

    # Где находится Python:
    which python3
    # /usr/bin/python3
    
    # Где находится Node.js:
    which node
    # /usr/bin/node
    
    # Где находятся библиотеки Node.js:
    ls /usr/lib/node_modules/
    # npm  @angular  @types  webpack  ...
    
    # Где находятся библиотеки C:
    ls /usr/lib/x86_64-linux-gnu/ | head
    # libc.so.6  libpthread.so.0  libssl.so.1.1  ...
    
    # Где находится документация:
    ls /usr/share/doc/ | head
    # adduser  apt  base-files  bash  curl  git  ...
    
    # Программы, установленные локально (вручную):
    ls /usr/local/bin/
    

    Почему это нужно: Когда вы устанавливаете программу через apt или yum, она идёт в /usr. Программы, которые вы компилируете сами, обычно идут в /usr/local.

    /lib и /lib64 — системные библиотеки

    Предназначение: критически важные библиотеки, необходимые для работы системы и программ из /bin и /sbin.

    # Посмотреть содержимое:
    ls /lib | head
    # libc.so.6  libc-2.31.so  libm.so.6  libpthread.so.0  ...
    
    # Это динамические библиотеки — они загружаются программами во время запуска
    

    Почему это нужно: Это стандартная C-библиотека и другие критические компоненты. Без них система не будет работать.

    /tmp — временные файлы

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

    # Создать временный файл:
    echo "temporary data" > /tmp/myfile.txt
    
    # Посмотреть:
    cat /tmp/myfile.txt
    # temporary data
    
    # Очистить /tmp (обычно происходит при перезагрузке):
    sudo rm -rf /tmp/*
    

    Важно: файлы в /tmp часто удаляются при перезагрузке. Не сохраняйте там важные данные.

    Почему это нужно: Когда установщик программы или скрипт нужно что-то распаковать, он использует /tmp.

    /dev — устройства (диски, USB, консоли)

    Предназначение: специальные файлы, которые представляют физические устройства.

    # Посмотреть содержимое:
    ls /dev | head
    
    # Основные устройства:
    # sda, sdb       — жёсткие диски
    # sda1, sda2     — разделы на дисках
    # null           — чёрная дыра (всё, что туда пишут, удаляется)
    # zero           — источник нулевых байт
    # urandom        — источник случайных чисел
    # tty            — текущая консоль пользователя
    # pts/0, pts/1   — виртуальные терминалы (при SSH)
    

    Примеры использования:

    # Посмотреть все диски:
    lsblk
    # NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    # sda      8:0    0   500G  0 disk
    # ├─sda1   8:1    0   512M  0 part /boot
    # ├─sda2   8:2    0   200G  0 part /
    # └─sda3   8:3    0 299.5G  0 part /home
    
    # Получить случайные числа:
    head -c 100 /dev/urandom | od -An -tx1
    
    # «Удалить» данные (отправить в никуда):
    echo "this will disappear" > /dev/null
    cat /dev/null
    
    # Посмотреть, кто вы (текущий TTY):
    tty
    # /dev/pts/0
    

    Почему это нужно: Если вам нужно отформатировать диск, вы работаете с /dev/sda1, а не с буквой диска, как в Windows.

    /boot — файлы загрузки ядра

    Предназначение: ядро Linux и файлы, необходимые для загрузки системы.

    ls /boot
    
    # Вы увидите:
    # vmlinuz-5.15.0-56-generic    — ядро Linux
    # initrd.img-5.15.0-56-generic — начальный RAM-диск
    # grub/                        — конфиг загрузчика GRUB
    

    Почему это нужно: Если загрузчик сломана, система не загрузится. Это критический раздел.

    /proc и /sys — информация о системе (виртуальные файловые системы)

    Предназначение: информация о запущенных процессах и параметрах ядра.

    Примеры:

    # Информация о процессоре:
    cat /proc/cpuinfo | head -20
    
    # Информация о памяти:
    cat /proc/meminfo
    # MemTotal:        8000000 kB
    # MemFree:         4000000 kB
    # MemAvailable:    5500000 kB
    
    # Информация о конкретном процессе (PID 1234):
    ls /proc/1234/
    # cmdline  environ  fd  maps  mem  status  ...
    
    # Информация о загруженных модулях ядра:
    cat /proc/modules
    
    # Информация об обновления ядра:
    cat /proc/sys/kernel/hostname
    # mycomputer
    

    Почему это нужно: /proc — это способ получить информацию о системе прямо из ядра. Это не физические файлы, а интерфейс к ядру.

    /mnt и /media — точки монтирования

    Предназначение: директории, где вы монтируете (подключаете) диски и USB-накопители.

    # Вставить USB-накопитель и монтировать его:
    sudo mount /dev/sdb1 /mnt/usb
    
    # Теперь содержимое USB доступно в /mnt/usb:
    ls /mnt/usb
    # file1.txt  file2.txt  ...
    
    # Отмонтировать:
    sudo umount /mnt/usb
    

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

    /opt — дополнительные программы

    Предназначение: программы и приложения, установленные вручную или от третьих сторон (не через менеджер пакетов).

    # Примеры:
    ls /opt
    
    # Может быть:
    # google/          — браузер Google Chrome
    # mongodb/         — база данных MongoDB (если установлена вручную)
    # my_app/          — какая-то дополнительная программа
    

    Почему это нужно: Это альтернатива /usr/local для больших приложений.

    /srv — данные сервисов

    Предназначение: данные, которые обслуживают веб-приложения и сервисы.

    # Примеры:
    ls /srv
    
    # Может быть:
    # www/            — содержимое веб-сайтов
    # ftp/            — файлы FTP-сервера
    # git/            — Git-репозитории
    

    Почему это нужно: Если вы хостите веб-сайт, его файлы могут находиться в /srv/www.

    Полная иерархия в одной таблице

    Директория Предназначение Примеры
    / Корневая директория —
    /bin Команды для всех ls, cp, bash, cat
    /sbin Команды для администратора shutdown, reboot, fdisk
    /home Домашние папки пользователей /home/alice, /home/bob
    /root Домашняя папка root конфиги root
    /etc Конфигурации систем и приложений nginx, ssh, postgresql, fstab
    /var Переменные данные логи, кэши, базы данных
    /usr Программы и библиотеки пользователей python, node, npm, man-страницы
    /lib Системные библиотеки libc, libpthread
    /tmp Временные файлы временные данные приложений
    /dev Файлы устройств sda (диски), tty (консоли)
    /boot Файлы загрузки ядро Linux, GRUB
    /proc Информация о процессах информация от ядра
    /sys Информация о системе и ядре параметры ядра
    /mnt Точки монтирования USB, внешние диски
    /media Автоматические монтирования USB (автомонтирование)
    /opt Дополнительные программы proprietary applications
    /srv Данные сервисов содержимое веб-сайтов

    Практические примеры

    Пример 1: Установка программы и её поиск

    # Установить Git:
    sudo apt install git    # или sudo yum install git
    
    # Где он находится:
    which git
    # /usr/bin/git
    
    # Где находится конфиг Git:
    cat ~/.gitconfig        # в домашней директории
    
    # Где находятся скрытые настройки Git:
    ls ~/.config/git/
    

    Пример 2: Разбираемся с ошибкой веб-сервера

    # Nginx не запускается. Проверяем конфиг:
    sudo nginx -t
    # nginx: configuration syntax is ok
    
    # Читаем логи ошибок:
    sudo tail -f /var/log/nginx/error.log
    # 2024/01/09 22:30:15 [emerg] 12345#0: bind() to 0.0.0.0:80 failed
    # — Не может занять порт 80. Что-то уже его использует.
    
    # Проверяем, что слушает на 80:
    sudo netstat -tlnp | grep :80
    # или
    sudo ss -tlnp | grep :80
    

    Пример 3: Освобождаем место на диске

    # Диск переполнен. Где больше всего файлов?
    du -sh /*
    # 10G     /home
    # 5.2G    /var
    # 3.1G    /usr
    # 1.5G    /opt
    
    # /var занимает много места — логи?
    du -sh /var/*
    # 4.5G    /var/log
    
    # Какие логи самые большие:
    du -sh /var/log/* | sort -hr | head
    # 3.2G    /var/log/nginx
    # 1.0G    /var/log/postgresql
    
    # Очистить старые логи Nginx (оставляем последние 100 MB):
    sudo sh -c 'tail -c 100M /var/log/nginx/access.log > /var/log/nginx/access.log.tmp && mv /var/log/nginx/access.log.tmp /var/log/nginx/access.log'
    
    # Или использовать logrotate (встроенный инструмент):
    sudo logrotate -f /etc/logrotate.d/nginx
    

    Пример 4: Работа с конфигурацией SSH

    # Где находятся SSH-ключи:
    ls ~/.ssh/
    # authorized_keys   — какие ключи может использовать другие пользователи для входа
    # id_rsa            — ваш приватный ключ
    # id_rsa.pub        — ваш публичный ключ
    # config            — конфиг SSH-клиента
    # known_hosts       — ключи серверов, к которым вы подключались
    
    # Конфиг SSH-сервера:
    sudo cat /etc/ssh/sshd_config | grep -E "^[^#]" | head
    # Port 22
    # PermitRootLogin no
    # PasswordAuthentication no
    # PubkeyAuthentication yes
    
    # Перезагрузить SSH-сервер после изменения конфига:
    sudo systemctl restart sshd
    

    Пример 5: Проблема с монтированием диска

    # Хотим автоматически монтировать диск при загрузке:
    # Сначала узнаём UUID:
    sudo blkid
    # /dev/sda1: UUID="abcd1234-5678-90ef-ghij-klmnopqrstuv" TYPE="ext4"
    
    # Редактируем /etc/fstab:
    sudo nano /etc/fstab
    
    # Добавляем строку:
    # UUID=abcd1234-5678-90ef-ghij-klmnopqrstuv  /mnt/storage  ext4  defaults  0  2
    
    # Проверяем:
    mount -a        # смонтировать всё, что описано в fstab
    df -h           # посмотреть смонтированные диски
    

    Безопасность: что нельзя трогать

    Никогда не удаляйте и не изменяйте:

    • /bin, /sbin, /lib — система не будет работать
    • /boot — система не загрузится
    • /dev — не будет доступа к диску и периферии
    • /etc/passwd, /etc/shadow — потеряете доступ к системе
    • /sys, /proc — это виртуальные файловые системы, они только для чтения

    Будьте осторожны с:

    • /etc — изменения в конфигах могут сломать сервисы
    • /var/lib — данные баз данных
    • /home — персональные данные пользователей

    Используйте резервные копии перед изменением:

    # Перед редактированием конфига:
    sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
    
    # Если что-то сломалось:
    sudo mv /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf
    

    Полезные команды для исследования

    # Показать полную иерархию директорий:
    tree /home -L 2
    
    # Показать дисковое пространство по директориям:
    du -sh /home/* /var/* /usr/*
    
    # Показать все смонтированные файловые системы:
    df -h
    
    # Найти все файлы больше 100 MB:
    find / -type f -size +100M 2>/dev/null
    
    # Найти все файлы, изменённые за последний день:
    find /home -type f -mtime -1
    
    # Показать размер каждой директории:
    du -sh /home /var /usr /opt
    
    # Посчитать количество файлов в директории:
    find /home -type f | wc -l
    

    Заключение

    Структура файлов в Linux логична и согласована:

    1. Системные команды — /bin и /sbin
    2. Пользовательские данные — /home
    3. Конфигурации — /etc
    4. Логи и переменные данные — /var
    5. Программы и библиотеки — /usr
    6. Временные файлы — /tmp
    7. Оборудование — /dev

    Постепенно, при работе с Linux, вы автоматически запомните, где искать нужные вам файлы. Главное — понимать логику расположения, а не заучивать наизусть.

    1 ответ Последний ответ
    1

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2025 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы