Linux

Права доступа в Linux: полное руководство по chmod и chown

Это руководство подробно объясняет, как устроены права доступа в Linux. Вы научитесь проверять, интерпретировать и изменять права с помощью команд chmod и chown. После прочтения вы сможете уверенно настраивать безопасность файловой системы.

Обновлено 17 февраля 2026 г.
15-30 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+

Введение / Зачем это нужно

В Linux многопользовательская система, где каждый файл и каталог имеет владельца и группу. Права доступа контролируют, кто может читать, изменять или выполнять файлы. Понимание прав доступа критически важно для безопасности, предотвращения ошибок "Permission denied" и корректной работы сервисов. После этого руководства вы сможете уверенно настраивать права для любых сценариев.

Требования / Подготовка

Перед началом убедитесь, что у вас есть:

  • Доступ к терминалу Linux (локально или через SSH).
  • Базовые знания навигации в командной строке.
  • Для операций изменения владельца или специальных битов потребуются права суперпользователя (sudo).

Шаг 1: Основы прав доступа: владелец, группа, остальные

Каждый файл и каталог в Linux имеет три категории пользователей:

  • Владелец (user) — пользователь, создавший объект.
  • Группа (group) — пользователи, входящие в группу-владельца.
  • Остальные (others) — все остальные пользователи системы.

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

  • r (read) — чтение содержимого файла или списка файлов в каталоге.
  • w (write) — изменение файла или создание/удаление в каталоге.
  • x (execute) — запуск файла как программы или вход в каталог (для cd).

Шаг 2: Как читать права доступа: команда ls -l

Чтобы увидеть права, выполните:

ls -l имя_файла

Пример вывода:

-rwxr-xr-- 1 alice developers 4096 Feb 17 10:00 script.sh

Расшифровка первых 10 символов:

  • - — тип объекта (- файл, d каталог, l символьная ссылка).
  • rwx — права владельца (alice: читать, писать, выполнять).
  • r-x — права группы (developers: читать и выполнять).
  • r-- — права остальных (только чтение).

Шаг 3: Типы прав: read, write, execute

  • Чтение (r): для файла — просмотр содержимого; для каталога — список файлов (ls).
  • Запись (w): для файла — изменение содержимого; для каталога — создание, удаление, переименование файлов (требуется также x на каталоге).
  • Выполнение (x): для файла — запуск как программы; для каталога — вход (cd) и доступ к метаданным.

Шаг 4: Изменение прав с помощью chmod

Команда chmod изменяет права. Есть два режима:

Числовой (восьмеричный)

Каждой категории соответствует трехбитное число. Права суммируются: r=4, w=2, x=1. Пример: rwx = 7, rw- = 6, r-x = 5, r-- = 4. Установка rwxr-xr-x (755):

chmod 755 script.sh

Символьный

Синтаксис: chmod [who][operator][permissions]

  • who: u (владелец), g (группа), o (остальные), a (все, по умолчанию).
  • operator: + (добавить), - (удалить), = (установить точно).
  • permissions: r, w, x, s (setuid/setgid), t (sticky bit).

Примеры:

chmod u+x script.sh    # Добавить execute для владельца
chmod g-w script.sh    # Удалить write для группы
chmod o=r script.sh    # Установить только чтение для остальных
chmod a+x script.sh    # Добавить execute для всех

Шаг 5: Изменение владельца и группы: chown и chgrp

Для смены владельца используйте chown:

sudo chown new_owner файл

Для смены и владельца, и группы:

sudo chown new_owner:new_group файл

Только группа:

sudo chgrp new_group файл
# или
sudo chown :new_group файл

Эти команды требуют прав суперпользователя.

Шаг 6: Специальные биты: setuid, setgid и sticky bit

Помимо rwx, есть специальные биты:

  • setuid (4000) — файл выполняется с правами владельца, а не текущего пользователя. Используется для программ вроде passwd.
    sudo chmod 4755 /usr/bin/passwd
    

    В ls -l отображается как rwsr-xr-x (s вместо x для владельца).
  • setgid (2000) — для файла: выполнение от имени группы-владельца; для каталога: новые файлы наследуют группу каталога.
    sudo chmod 2770 каталог
    

    Отображается как rwxrwsr-x (s для группы).
  • sticky bit (1000) — на каталогах: только владелец файла может удалить/переименовать его, даже если у остальных есть w на каталог. Пример — /tmp.
    sudo chmod 1777 /tmp
    

    Отображается как rwxrwxrwt (t вместо x для остальных).

Шаг 7: Расширенные права: ACL

Стандартных прав иногда недостаточно. POSIX ACL позволяет задавать права для конкретных пользователей или групп, не входящих в основные категории.

Установка прав для пользователя:

sudo setfacl -m u:username:rwx файл

Удаление:

sudo setfacl -x u:username файл

Просмотр:

getfacl файл

В ls -l ACL обозначается + в конце строки прав (например, -rwxr-xr--+).

Проверка результата

После изменений проверьте права командой ls -l. Для ACL используйте getfacl для детального просмотра. Убедитесь, что строка прав (или ACL) соответствует ожидаемым.

Возможные проблемы

  • Permission denied при выполнении команды: недостаточно прав (требуется sudo) или попытка выполнить файл без x.
  • Потеря прав при копировании: cp по умолчанию сбрасывает права. Используйте cp -p для сохранения.
  • Неправильный числовой режим: запомните, что каждый разряд — отдельная категория. chmod 777 дает полные права всем — опасная практика.
  • Сброс setuid/setgid: при изменении через символьный режим без u+s/g+s специальные биты могут сброситься. Используйте числовой режим или явно укажите u+s.
  • ACL не работает: файловая система должна быть смонтирована с опцией acl (например, для ext4 в /etc/fstab). Проверьте mount | grep / или tune2fs -l /dev/sdX | grep 'Default mount options'.

Часто задаваемые вопросы

Что такое битовые права в Linux?
Как изменить владельца файла в Linux?
Что такое setuid, setgid и sticky bit?
Как проверить текущие права файла?

Полезное

Проверка текущих прав файла
Расшифровка строки прав доступа
Изменение прав с помощью chmod (числовой режим)
Изменение прав с помощью chmod (символьный режим)
Изменение владельца и группы файла
Работа с расширенными ACL