Урок по треку Linux 7 мин

Файловая система и права за 7 минут

Дерево каталогов, inode, жёсткие и символьные ссылки, chmod, chown, umask, SUID и sticky bit.

В Linux всё начинается с одного корня /. Диски, флешки и сетевые шары не получают букв, а монтируются в каталоги этого дерева.

Куда что кладут

  • /etc: конфиги системы и сервисов.
  • /var: изменяемые данные: логи (/var/log), очереди, кеши, базы.
  • /home/<user>: домашние каталоги, у root свой /root.
  • /tmp: временные файлы, часто чистится при перезагрузке.
  • /usr/bin, /usr/lib: программы и библиотеки из пакетов; /usr/local для собранного вручную; /opt для сторонних приложений целиком.
  • /proc и /sys: виртуальные ФС ядра. Это не файлы на диске, а окно в состояние процессов и устройств.
  • /dev: файлы устройств (/dev/sda, /dev/null).

Inode и имя файла

Файл на диске это inode: номер, владелец, права, размер, время и указатели на блоки данных. Имени в inode нет. Имя живёт в каталоге: каталог это таблица «имя → номер inode». Поэтому:

  • ls -i показывает номер inode;
  • mv внутри одной ФС только переписывает запись в каталоге, данные не копируются;
  • место может кончиться по inode, когда байты ещё есть (миллионы мелких файлов). Проверка: df -i.

Жёсткие и символьные ссылки

ln data.txt hard.txt      # жёсткая: вторая запись на тот же inode
ln -s data.txt soft.txt   # символьная: отдельный файл с путём внутри

Жёсткая ссылка равноправна с оригиналом: удалили data.txt, данные живы, пока счётчик ссылок (вторая колонка ls -l) больше нуля. Нельзя делать на каталог и между разными ФС. Символьная ссылка хранит путь: удалили цель, ссылка «висит». Зато работает на каталоги и через границы ФС.

Права: rwx для трёх классов

-rwxr-x--- 1 deploy www 4096 ... app.sh

Первый символ: тип (- файл, d каталог, l ссылка). Дальше три тройки: владелец, группа, остальные. Цифрами: r=4, w=2, x=1, значит rwxr-x--- это 750.

Для каталога смысл другой:

  • r: можно прочитать список имён;
  • w: можно создавать, удалять и переименовывать файлы внутри (даже чужие, если нет sticky bit);
  • x: можно войти и обратиться к файлу по имени.

Удаление файла зависит от прав на каталог, а не на сам файл.

chmod 640 secret.conf        # rw-r-----
chmod u+x,g-w deploy.sh      # символьная форма
chown deploy:www app.sh      # владелец и группа
chmod -R g+rX shared/        # X: x только каталогам и уже исполняемым

umask

umask убирает биты у новых файлов. Базовые права: 666 для файлов, 777 для каталогов. При umask 022 файл получит 644, каталог 755. При umask 027 файл 640, каталог 750. Бит x новому файлу umask не добавит никогда.

Специальные биты

  • SUID (4xxx, s в правах владельца): программа запускается с правами владельца файла. Пример: /usr/bin/passwd пишет в /etc/shadow, принадлежащий root. На скриптах ядро SUID игнорирует.
  • SGID (2xxx): на каталоге новые файлы наследуют группу каталога. Удобно для общих папок команды.
  • Sticky bit (1xxx, t в конце): в каталоге удалить файл может только его владелец. Так устроен /tmp (1777).

Поиск SUID-файлов при аудите: find / -perm -4000 -type f 2>/dev/null.

Root и capabilities

Root (UID 0) обходит проверки прав. Современное ядро дробит его силу на capabilities: например CAP_NET_BIND_SERVICE разрешает слушать порты ниже 1024 без полного root. Это основа безопасности контейнеров.

Частые ошибки

  • Ставят chmod 777, чтобы «заработало». Чинить надо владельца или группу.
  • Путают права каталога и файла: файл 600, а его всё равно удалили, потому что каталог доступен на запись.
  • Делают chmod -R 755 по всему проекту и получают исполняемые конфиги. Для смешанных деревьев есть X или find -type d / find -type f.
  • Думают, что удаление файла освобождает место. Если процесс держит файл открытым, место вернётся только после закрытия (об этом в модуле про диски).

Что спросят на собесе

  • Что такое inode и чем жёсткая ссылка отличается от символьной.
  • Как читать -rwxr-x--- и что значит x у каталога.
  • Какие права получит новый файл при umask 027.
  • Что такое SUID, SGID и sticky bit, зачем sticky у /tmp.
  • Почему место на диске есть, а файл создать нельзя.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.