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

Какая команда может изменить права доступа?

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

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

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

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

Команда chmod для изменения прав доступа в Linux/Unix

Основной командой для изменения прав доступа (permissions) к файлам и каталогам в Linux и Unix-подобных системах является chmod (от change mode). Эта команда позволяет управлять правами чтения (r), записи (w) и выполнения (x) для трех категорий пользователей: владельца (owner), группы (group) и остальных (others).

Синтаксис и методы использования chmod

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

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

В этом формате права изменяются с помощью буквенных обозначений:

  • u (user) — владелец файла.
  • g (group) — группа файла.
  • o (others) — все остальные пользователи.
  • a (all) — все категории (эквивалент ugo).
  • + — добавление права.
  • - — удаление права.
  • = — установка точного набора прав.

Примеры использования символьного формата:

# Добавить право на выполнение для владельца
chmod u+x script.sh

# Добавить чтение и запись для группы и остальных
chmod go+rw data.txt

# Удалить право на запись для остальных
chmod o-w secret.txt

# Установить точные права: владелец — чтение/запись, группа — чтение, остальные — ничего
chmod u=rw,g=r,o= file.conf

2. Числовой (восьмеричный) формат

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

  • 4 — право на чтение (r).
  • 2 — право на запись (w).
  • 3 — право на выполнение (x). Сумма чисел определяет комбинацию прав (например, 7 = 4+2+1 означает полные права).

Примеры числового формата:

# Установить права 755: владелец — rwx, группа и остальные — r-x
chmod 755 script.sh

# Установить права 644: владелец — rw-, группа и остальные — r--
chmod 644 config.yaml

# Установить права 600: только владелец может читать и писать
chmod 600 private.key

Ключевые опции команды chmod

  • -R или --recursive — рекурсивное изменение прав для каталогов и их содержимого.
    # Рекурсивно установить права 755 для каталога /app и всех его файлов
    chmod -R 755 /app
    
  • -v или --verbose — вывод информации о каждом измененном файле.
  • -c или --changes — вывод информации только об измененных файлах.
  • --reference=FILE — скопировать права с указанного файла.
    # Установить для file2 те же права, что и у file1
    chmod --reference=file1 file2
    

Важные нюансы и best practices

  • Права на каталоги: Для каталогов право на выполнение (x) означает возможность доступа (cd) к каталогу. Без этого права нельзя просмотреть содержимое каталога, даже если есть права на чтение (r) файлов внутри.
  • Безопасность: Избегайте излишних прав (например, 777), особенно для системных файлов или веб-серверов. Это может привести к уязвимостям.
  • SUID/SGID биты: chmod также управляет специальными битами:
    • chmod u+s file — установка SUID (Set User ID), позволяет выполнять файл с правами владельца.
    • chmod g+s dir — установка SGID (Set Group ID) для каталогов, файлы внутри наследуют группу каталога.
  • Sticky bit: chmod +t dir — установка sticky bit для каталогов (например, /tmp), разрешает удаление файлов только их владельцам.

Пример комплексного использования

# Установить права 750 для скрипта (владелец — rwx, группа — r-x, остальные — нет прав)
chmod 750 deploy.sh

# Рекурсивно установить права 644 для всех .conf файлов в /etc
find /etc -name "*.conf" -exec chmod 644 {} \;

# Для веб-каталога: каталоги — 755, файлы — 644
chmod -R 755 /var/www/html/
find /var/www/html -type f -exec chmod 644 {} \;

Альтернативные команды для управления доступом

  • chown — изменение владельца и группы файла (например, chown user:group file).
  • chgrp — изменение группы файла.
  • setfacl/getfacl — работа с расширенными списками контроля доступа (ACL) для более гибких настроек.

Таким образом, chmod — это фундаментальный инструмент управления правами в Linux, критически важный для обеспечения безопасности, контроля доступа и корректной работы приложений. Правильное использование chmod требует понимания как синтаксиса, так и контекста (например, разницы между файлами и каталогами). В DevOps-практике эта команда активно применяется в скриптах развертывания, настройке серверов и управлении конфигурациями.

Какая команда может изменить права доступа? | PrepBro