sadrix logoSadriX
Минцифры готовит обязательную регистрацию IMEI смартфонов, купленных за границей
Гайды

Как работают права chmod и chown в Linux: простое объяснение с примерами

Пошаговое руководство для новичков: от понимания rwx до безопасного изменения прав и владельцев файлов

08 733 просмотров6 мин
0
Поделиться:TelegramVK

Введение

Если вы недавно перешли на Linux или просто столкнулись с ошибкой «Permission denied», эта статья для вас. Права доступа — одна из основ безопасности и удобства работы в Linux. Каждый файл и каталог имеет владельца, группу и набор разрешений для трёх категорий пользователей. Инструменты chmod и chown позволяют эти разрешения и владельцев менять.

В гайде мы разберём:

  • что означают буквы r, w, x и как их читать в выводе ls -l;

  • как работают числовой и символьный режимы chmod;

  • как менять владельца и группу через chown;

  • какие права выставлять для типовых задач (веб-сервер, скрипты, общие папки);

  • типичные ошибки и как их избежать.

Материал рассчитан на новичков, но будет полезен и тем, кто хочет систематизировать знания.

Требования

  • Любой Linux-дистрибутив (Ubuntu, Debian, Fedora, CentOS, Arch и т.д.).

  • Доступ к терминалу.

  • Права суперпользователя (sudo) для смены владельца и изменения прав чужих файлов.

  • Базовое понимание командной строки: cd, ls, pwd.

Шаг 1. Как читать права: вывод ls -l

Откройте терминал и выполните:

ls -l

Вы увидите строки вида:

-rw-r--r-- 1 user user 1024 Jan 1 12:00 file.txt
drwxr-xr-x 2 user user 4096 Jan 1 12:00 dir

Разберём первую строку -rw-r--r--:

  • Первый символ — тип: - обычный файл, d каталог, l символическая ссылка.

  • Следующие 9 символов разбиты на три группы по 3:

- rw- — права владельца (user);

- r-- — права группы (group);

- r-- — права остальных (others).

Буквы означают:

  • r (read) — чтение: для файла — просмотр содержимого, для каталога — список файлов внутри.

  • w (write) — запись: для файла — изменение, для каталога — создание/удаление файлов.

  • x (execute) — выполнение: для файла — запуск как программы/скрипта, для каталога — вход в него (cd).

  • - — право отсутствует.

Далее идут: количество жёстких ссылок, владелец, группа, размер, дата и имя.

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

Linux делит всех на три категории:

1. Владелец (user, u) — пользователь, которому принадлежит файл. 2. Группа (group, g) — группа владельца. 3. Остальные (others, o) — все прочие пользователи.

Есть ещё a (all) — все три категории сразу. Права проверяются по первой подходящей категории: если вы владелец, применяются права владельца, даже если права группы шире.

Шаг 3. Числовой режим chmod

Каждое право имеет числовой вес:

  • r = 4

  • w = 2

  • x = 1

Сумма весов даёт цифру для категории. Например:

  • rwx = 4+2+1 = 7

  • rw- = 4+2 = 6

  • r-x = 4+1 = 5

  • r-- = 4

  • --- = 0

Три цифры задают права для владельца, группы и остальных. Примеры:

  • chmod 755 file → rwxr-xr-x

  • chmod 644 file → rw-r--r--

  • chmod 600 file → rw-------

  • chmod 777 file → rwxrwxrwx (опасно!)

Синтаксис:

chmod 755 script.sh

Шаг 4. Символьный режим chmod

Символьный режим удобен, когда нужно изменить только часть прав. Формат: [категория][оператор][права].

  • Категории: u, g, o, a.

  • Операторы: + добавить, - убрать, = установить точно.

  • Права: r, w, x.

Примеры:

chmod u+x script.sh      # владельцу добавить выполнение
chmod go-w file.txt      # убрать запись у группы и остальных
chmod a+r file.txt       # всем добавить чтение
chmod u=rw,go=r file.txt # владельцу rw, группе и остальным только r

Можно комбинировать через запятую.

Шаг 5. Рекурсивное изменение прав

Флаг -R применяет изменения ко всем вложенным файлам и каталогам:

chmod -R 755 /var/www/html

Будьте осторожны: рекурсивно менять права на системных каталогах (/, /etc, /usr) опасно. Сначала проверьте, что делает команда, на тестовом каталоге.

Шаг 6. Смена владельца: chown

Команда chown меняет владельца и/или группу файла. Синтаксис:

chown пользователь файл
chown пользователь:группа файл
chown :группа файл

Примеры:

sudo chown user file.txt
sudo chown user:developers file.txt
sudo chown -R www-data:www-data /var/www/html

Флаг -R — рекурсивно. Для смены только группы есть команда chgrp, но chown :group делает то же самое.

Шаг 7. Специальные биты: SUID, SGID, Sticky

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

  • SUID (4) — программа выполняется с правами владельца файла. Пример: /usr/bin/passwd.

  • SGID (2) — программа выполняется с правами группы; для каталога — новые файлы наследуют группу каталога.

  • Sticky (1) — в каталоге удалять файлы может только владелец файла (или root). Классический пример: /tmp.

Установка:

chmod 4755 program     # SUID
chmod 2755 shared_dir  # SGID
chmod 1777 /tmp        # Sticky

В выводе ls -l SUID отображается как s вместо x у владельца, SGID — у группы, Sticky — как t в конце.

Шаг 8. Права по умолчанию: umask

Когда вы создаёте файл или каталог, права назначаются автоматически с учётом маски umask. Посмотреть текущую маску:

umask

Обычно 022. Это значит: из базовых прав (666 для файлов, 777 для каталогов) вычитаются биты маски. Для файлов получится 644, для каталогов 755.

Изменить маску на текущую сессию:

umask 027

Чтобы задать постоянно, добавьте строку в ~/.bashrc или ~/.profile.

Шаг 9. Практические примеры

Веб-сервер (Apache/Nginx):

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

Скрипт:

chmod 755 backup.sh
./backup.sh

Приватный ключ SSH:

chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh

Общая папка для группы:

sudo chown :developers /srv/project
sudo chmod 2775 /srv/project

Шаг 10. Как проверить результат

После изменений всегда проверяйте:

ls -l file.txt
stat file.txt

stat покажет права в числовом и символьном виде, владельца, группу и специальные биты.

Типичные ошибки

1. chmod 777 на всё — открывает файлы для записи всем. Это дыра в безопасности. Используйте минимально необходимые права. 2. Рекурсивный chmod на системных каталогах — может сломать систему. Никогда не делайте chmod -R 777 /. 3. Забыли sudo — смена владельца требует прав root. Без sudo получите «Operation not permitted». 4. Путаница с категориями — помните, что права проверяются по первой подходящей категории: владелец → группа → остальные. 5. Игнорирование umask — новые файлы могут получать не те права, которые вы ожидаете. 6. Снятие x с каталога — без x нельзя войти в каталог и обратиться к файлам внутри, даже если у файлов есть права. 7. Изменение прав без бэкапа — перед массовыми операциями делайте резервную копию или тестируйте на копии.

FAQ

Что означает ошибка «Permission denied»? У вас нет нужного права (r, w или x) на файл или каталог. Проверьте ls -l и при необходимости измените права через chmod или владельца через chown.

Чем отличается chmod от chown? chmod меняет права доступа (r/w/x), а chown — владельца и группу файла.

Как дать всем полный доступ? chmod 777 file или chmod a+rwx file. Но это небезопасно — используйте только в изолированной среде.

Почему после chmod 644 скрипт не запускается? Потому что нет бита выполнения x. Нужно chmod 755 script.sh или chmod +x script.sh.

Как узнать, какие права у файла в числовом виде? Выполните stat -c "%a %n" file — покажет числовое значение прав.

Можно ли изменить права на файл, который мне не принадлежит? Только если вы root или у вас есть соответствующие полномочия (например, через sudo).

Что такое sticky bit и зачем он нужен? Это специальный бит, который запрещает удалять файлы в каталоге всем, кроме владельца файла. Применяется для общих каталогов вроде /tmp.

Итог

Права доступа в Linux — это не сложно, если запомнить три категории пользователей и три типа прав. chmod управляет правами, chown — владельцем и группой. Используйте числовой режим для быстрой установки прав, символьный — для точечных изменений. Всегда следуйте принципу минимальных привилегий: давайте только те права, которые действительно нужны. И не забывайте проверять результат через ls -l или stat. Теперь вы сможете уверенно решать задачи с правами доступа и избегать типичных ошибок.

Читайте также

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.