Права доступа в Linux: чтение, запись, выполнение | rwx 755 644 | IT-tower

📑 Содержание

Когда вы выполняете команду ls -lah в терминале, перед вами появляется таблица из нескольких колонок. Для новичка это выглядит как набор символов: drwxr-xr-x, -rw-r--r--, lrwxrwxrwx. Но каждая буква и каждый символ в этой строке имеют строгий смысл. В этой статье разберем, что означает каждый тип прав, чем отличаются права для файлов и папок и как читать эту информацию без использования дополнительных команд.

Зачем нужны права в Linux

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

  • Кто может читать содержимое файла
  • Кто может изменять файл
  • Кто может запускать файл как программу
  • Кто может заходить в папку и видеть её содержимое
  • Кто может создавать и удалять файлы внутри папки

Без этой системы любой пользователь мог бы изменить системные файлы или прочитать чужие данные. Права — фундамент безопасности в Linux.

Разбор вывода `ls -lah`

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

Команда
ls -lah

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

Вывод `ls -lah`
total 128K
drwxr-xr-x  5 user group 4.0K Jan 15 10:30 .
drwxr-xr-x  3 root root  4.0K Jan 10 09:00 ..
-rw-r--r--  1 user group  12K Jan 15 10:25 config.php
drwxr-xr-x  2 user group 4.0K Jan 14 18:00 css
-rwxr-xr-x  1 user group  2.1K Jan 13 14:12 script.sh
lrwxrwxrwx  1 user group   11 Jan 12 11:00 link -> config.php

Разберем каждую колонку слева направо.

Колонка 1: Тип объекта и права доступа

Первая колонка — самая важная. Она состоит из 10 символов:

  • Первый символ — тип объекта (файл, папка, ссылка и т.д.)
  • Следующие 9 символов — права доступа для трех категорий пользователей

Пример: -rw-r--r--

  • Первый символ - означает обычный файл
  • rw- — права владельца
  • r-- — права группы
  • r-- — права остальных пользователей

Пример: drwxr-xr-x

  • Первый символ d означает папку (directory)
  • rwx — права владельца
  • r-x — права группы
  • r-x — права остальных

Колонка 2: Количество жестких ссылок

Число показывает, сколько жестких ссылок указывает на этот объект. Для файлов это обычно 1. Для папок — количество вложенных папок плюс 2 (ссылка на саму папку и ссылку из родительской папки).

Колонка 3: Владелец

Имя пользователя, которому принадлежит объект. Например, user или root.

Колонка 4: Группа

Имя группы, которой принадлежит объект. Например, group, www-data, root.

Колонка 5: Размер

Размер объекта в человекочитаемом формате (благодаря флагу -h): байты, килобайты, мегабайты. Для папок размер обычно 4.0K — это размер самой папки как структуры данных, а не сумма размеров файлов внутри.

Колонки 6–8: Дата и время изменения

Дата последнего изменения содержимого объекта.

Колонка 9: Имя объекта

Имя файла или папки. Для символических ссылок после имени идет стрелка -> и путь к целевому файлу.

Типы объектов: первый символ

Первый символ в колонке прав определяет тип объекта:

Символ Тип объекта Описание
- Обычный файл Текст, бинарный файл, изображение, скрипт
d Папка (директория) Контейнер для файлов и других папок
l Символическая ссылка Ярлык, указывающий на другой файл или папку
c Символьное устройство Устройство с потоковым доступом (клавиатура, терминал)
b Блочное устройство Устройство с блочным доступом (жесткий диск)
p Именованный канал (FIFO) Специальный файл для межпроцессного взаимодействия
s Сокет Специальный файл для сетевого взаимодействия

Для веб-разработки и администрирования сервера чаще всего встречаются три типа: - (файл), d (папка), l (ссылка).

Категории пользователей и типы прав

Три категории пользователей

Права в Linux назначаются трем категориям пользователей:

  1. Владелец (пользователь, указанный в колонке 3)
  2. Группа (пользователи, входящие в группу из колонки 4)
  3. Остальные (все остальные пользователи системы)

Для каждой категории выделяется три позиции: чтение, запись, выполнение. Если право отсутствует, на его месте стоит дефис -.

Пример: drwxr-xr-x

  • Владелец: rwx (чтение, запись, выполнение)
  • Группа: r-x (чтение, выполнение)
  • Остальные: r-x (чтение, выполнение)

Чтение (r)

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

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

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

Запись (w)

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

Для папки: право на создание, переименование и удаление файлов внутри папки. Это важно: право на запись в папку позволяет удалять файлы, даже если у пользователя нет прав на запись в сами файлы.

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

Выполнение (x)

Для файла: право на запуск файла как программы. Если файл — исполняемый бинарник или скрипт, пользователь может запустить его.

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

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

Чем отличаются права для файлов и папок

Ключевое различие — в интерпретации права на выполнение.

Право Файл Папка
Чтение (r) Можно прочитать содержимое Можно увидеть список файлов
Запись (w) Можно изменить содержимое Можно создавать/удалять файлы внутри
Выполнение (x) Можно запустить как программу Можно зайти в папку (cd)

Пример 1: файл `script.sh` с правами `rw-r--r--`

  • Владелец может читать и изменять скрипт, но не может его запустить
  • Группа и остальные могут только читать

Пример 2: папка `css` с правами `rwxr-xr-x`

  • Владелец может зайти в папку, создать файлы, удалить файлы
  • Группа и остальные могут зайти и увидеть список файлов, но не создавать новые

Пример 3: папка с правами `rw-r--r--`

  • Владелец может увидеть список файлов (чтение), но не может зайти в папку (нет выполнения)
  • Группа и остальные могут только увидеть список файлов

Пример 4: папка с правами `rwx------`

  • Только владелец может зайти и работать с папкой
  • Группа и остальные не имеют никакого доступа

Буквенный и числовой форматы

Чтение прав в буквенном формате

Права записываются тремя группами по три символа:

Структура прав
rwx r-x r-x
│   │   │
│   │   └── Остальные пользователи
│   └────── Группа
└────────── Владелец

Каждая группа читается одинаково:

  • r — чтение разрешено
  • w — запись разрешена
  • x — выполнение разрешено
  • - — право отсутствует

Примеры:

  • rwx — все права (чтение, запись, выполнение)
  • r-x — чтение и выполнение, без записи
  • r-- — только чтение
  • --- — никаких прав

Чтение прав в числовом формате

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

  • Чтение (r) = 4
  • Запись (w) = 2
  • Выполнение (x) = 1

Цифры складываются:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4
  • --- = 0 + 0 + 0 = 0

Примеры:

  • 755 = rwxr-xr-x (владелец: все права, группа и остальные: чтение и выполнение)
  • 644 = rw-r--r-- (владелец: чтение и запись, группа и остальные: только чтение)
  • 777 = rwxrwxrwx (все права для всех)
  • 600 = rw------- (только владелец может читать и писать)

Типичные значения:

  • 755 — папки и исполняемые скрипты
  • 644 — обычные файлы (текст, изображения, конфиги)
  • 600 — приватные файлы (ключи, пароли)
  • 700 — приватные папки

Специальные права и символические ссылки

setuid (s)

Если файл имеет бит setuid, при запуске он выполняется с правами владельца файла, а не пользователя, который его запустил. В выводе отображается как s на месте x для владельца.

Пример: -rwsr-xr-x — файл запускается с правами владельца.

setgid (s)

Для файлов — аналогично setuid, но выполняется с правами группы. Для папок — новые файлы наследуют группу папки, а не группу пользователя, создавшего файл.

Пример: drwxr-sr-x — папка с setgid.

sticky bit (t)

Для папок — запрещает удаление файлов всем, кроме владельца файла, владельца папки и суперпользователя. Часто используется для папки /tmp.

Пример: drwxrwxrwt — папка /tmp с sticky bit.

Символические ссылки: права `lrwxrwxrwx`

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

Символическая ссылка
lrwxrwxrwx 1 user group 11 Jan 12 11:00 link -> config.php

Ссылка link указывает на файл config.php. При попытке прочитать или изменить link система будет проверять права на config.php, а не на саму ссылку.

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

Пример 1: Конфигурационный файл

config.php
-rw-r--r-- 1 user group 12K Jan 15 10:25 config.php
  • Тип: обычный файл (-)
  • Владелец: user, права rw- (чтение, запись)
  • Группа: group, права r-- (только чтение)
  • Остальные: права r-- (только чтение)

Владелец может редактировать конфиг. Группа и остальные могут только читать. В числовом формате это 644.

Пример 2: Папка с ресурсами

assets
drwxr-xr-x 5 user group 4.0K Jan 15 10:30 assets
  • Тип: папка (d)
  • Владелец: user, права rwx (чтение, запись, выполнение)
  • Группа: group, права r-x (чтение, выполнение)
  • Остальные: права r-x (чтение, выполнение)

Владелец может создавать и удалять файлы в папке. Группа и остальные могут зайти и посмотреть содержимое, но не создавать файлы. В числовом формате это 755.

Пример 3: Исполняемый скрипт

deploy.sh
-rwxr-xr-x 1 user group 2.1K Jan 13 14:12 deploy.sh
  • Тип: обычный файл (-)
  • Владелец: user, права rwx (чтение, запись, выполнение)
  • Группа: group, права r-x (чтение, выполнение)
  • Остальные: права r-x (чтение, выполнение)

Владелец может запускать и редактировать скрипт. Группа и остальные могут только запускать и читать. В числовом формате это 755.

Пример 4: Приватный файл

id_rsa
-rw------- 1 user group 1.2K Jan 15 09:45 id_rsa
  • Тип: обычный файл (-)
  • Владелец: user, права rw- (чтение, запись)
  • Группа: group, права --- (никаких прав)
  • Остальные: права --- (никаких прав)

Только владелец может читать и изменять файл. Типично для приватных ключей. В числовом формате это 600.

Заключение

Права доступа в Linux — это система из трех типов прав (чтение, запись, выполнение), назначенных трем категориям пользователей (владелец, группа, остальные). Каждая буква в выводе ls -lah имеет строгий смысл: r — чтение, w — запись, x — выполнение, - — отсутствие права.

Ключевые моменты:

  • Первый символ определяет тип объекта: - файл, d папка, l ссылка
  • Права rwx записываются тремя группами: владелец, группа, остальные
  • Для папок право на выполнение означает возможность зайти внутрь
  • Числовой формат 755, 644, 600 — это сумма прав (4+2+1)
  • Права на символические ссылки не применяются — проверяются права целевого файла
✅ Итог: Понимание этих правил позволяет читать вывод ls -lah без дополнительных команд и диагностировать проблемы с доступом к файлам на сервере.

Готовы обсудить ваш проект?

Оставьте заявку, и я свяжусь с вами в течение 2 часов в рабочее время (Пн-Пт 9:00-18:00).