← Назад к вопросам

Как изменить права на папку в Linux

1.0 Junior🔥 182 комментариев
#Linux и администрирование

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Изменение прав доступа к папке в Linux: Полное руководство

В Linux права доступа к файлам и папкам управляются с помощью команд chmod (change mode) и chown (change owner). Для папок применяются те же принципы, что и для файлов, но с важными нюансами, связанными с рекурсивным изменением и особым значением битов прав.

Основы: Права доступа в Linux

Права доступа состоят из трёх категорий пользователей:

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

Для каждой категории определяются три типа прав:

  • Чтение (read, r) — для папки: возможность просматривать список содержимого (команда ls).
  • Запись (write, w) — для папки: возможность создавать, удалять и переименовывать файлы и подпапки внутри.
  • Исполнение (execute, x) — для папки: право на вход (traverse) в папку (команда cd). Это ключевое отличие от файлов!

Синтаксис команды chmod

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

1. Символьный (буквенный) метод

Формат: chmod [опции] <категория><оператор><права> <имя_папки>

  • Категории: u (владелец), g (группа), o (остальные), a (все, по умолчанию).
  • Операторы: + (добавить), - (забрать), = (установить точно).
  • Права: r, w, x.
# Примеры использования символьного метода
# Дать группе право на запись в папку reports
chmod g+w reports/

# Забрать у всех остальных право на чтение и запись папки private
chmod o-rw private/

# Установить точные права: владелец - всё, группа - чтение и вход, остальные - ничего
chmod u=rwx,g=rx,o= shared_folder/

2. Восьмеричный (цифровой) метод

Каждая категория кодируется цифрой от 0 до 7, суммируя права:

  • 4 = чтение (r)
  • 2 = запись (w)
  • 1 = исполнение/вход (x)
  • 0 = нет прав

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

# Примеры использования цифрового метода (самый распространённый способ)
# Права 755: владелец - rwx, группа - r-x, остальные - r-x
# Это стандартные права для веб-папок, доступных для чтения всем.
chmod 755 public_html/

# Права 770: владелец и группа - rwx, остальные - нет прав
chmod 770 team_project/

# Права 700: только владелец имеет полный доступ, все остальные заблокированы
chmod 700 secret_data/

Ключевые опции и рекурсивное изменение

Для работы с содержимым папки используется ключ -R (recursive).

# Рекурсивно изменить права для всей папки и всего её содержимого
chmod -R 755 /var/www/my_site/

# Рекурсивно добавить право на исполнение для всех подпапок (чтобы в них можно было зайти),
# но не для обычных файлов внутри. Часто используется при развёртывании.
find /opt/myapp/ -type d -exec chmod 755 {} \;

Специальные биты прав: SUID, SGID и Sticky Bit

Для папок особенно важен SGID-бит (Set Group ID). Если он установлен на папке, все новые файлы и подпапки, созданные в ней, будут наследовать группу владельца самой папки, а не первичную группу пользователя, который их создал. Это критически важно для общих директорий в командах.

# Установить SGID бит (вторая цифра в начале): 2775
chmod 2775 /shared/team_folder/
# Или символьным методом
chmod g+s /shared/team_folder/

Изменение владельца и группы: команда chown

Права бессмысленны без правильного владельца. Команда chown меняет владельца и/или группу.

# Сменить владельца папки на пользователя www-data
chown www-data /var/www/html

# Сменить группу папки на dev-team
chown :dev-team /projects/api

# Рекурсивно сменить и владельца, и группу
chown -R deploy:deploy /opt/application/

# Установить SGID бит И сменить группу для совместной работы
chown :dev-team /shared_space && chmod 2775 /shared_space

Практические рекомендации и безопасность

  1. Принцип минимальных привилегий: Давайте ровно столько прав, сколько нужно для работы. Не используйте 777 (полный доступ всем) на продакшене — это грубая ошибка безопасности.
  2. Права по умолчанию: На итоговые права влияет umask пользователя. Например, umask 0022 забирает право на запись у группы и остальных.
  3. Проверка прав: Всегда проверяйте результат команд ls -la или stat.
    ls -ld /path/to/folder  # Ключ -d покажет права самой папки, а не её содержимого
    drwxr-sr-x 2 deploy dev-team 4096 ... /shared  # Здесь виден SGID бит ('s' вместо 'x' у группы)
    
  4. Контекст SELinux/AppArmor: В современных дистрибутивах помимо традиционных прав DAC (Discretionary Access Control) существуют системы принудительного контроля доступа (MAC), такие как SELinux. Если после корректной настройки chmod/chown доступ всё равно запрещён, проверьте контекст безопасности: ls -Z и управляйте им командами chcon, semanage fcontext, restorecon.

Итог: Базовая операция chmod 755 папка решает многие задачи. Однако для эффективного администрирования и обеспечения безопасности необходимо глубоко понимать различия между правами для файлов и папок, уметь применять рекурсивные изменения и использовать специальные биты, особенно SGID, для организации корректной совместной работы.

Как изменить права на папку в Linux | PrepBro