CHMOD: Мастер-ключ к вашим файлам. Полное руководство по управлению правами доступа в Linux

CHMOD: Мастер-ключ к вашим файлам. Полное руководство по управлению правами доступа в Linux

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

Что такое права доступа?

Представьте, что каждый файл в системе — это комната с тремя типами посетителей: владелец (user), группа (group) и все остальные (others). Для каждого из них можно отдельно настроить три действия: чтение (read), запись (write) и выполнение (xecute). Эти права отображаются в виде строки символов, например, rwxr-xr--.

Право на выполнение (x) для каталога имеет особое значение — оно позволяет войти в эту папку и получить доступ к её содержимому. Без этого права вы не сможете открыть директорию, даже если у вас есть права на чтение файлов внутри неё.

Два способа использования chmod: Символьный и числовой

Команда chmod предлагает две основные системы записи прав: интуитивно понятную символьную и компактную числовую (восьмеричную).

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

Этот метод позволяет изменять права, добавляя (+) или убирая (-) конкретные разрешения для определённых категорий пользователей.

  • chmod u+x script.sh — добавляет право на выполнение для владельца.
  • chmod g-w document.txt — убирает право на запись для группы.
  • chmod o=r file.conf — устанавливает для «остальных» только право на чтение.
  • chmod a+r public.txt — добавляет право на чтение для всех (a = all).

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

Здесь каждому праву соответствует цифра: r=4, w=2, x=1. Права для каждой категории суммируются.

  1. 755 (rwxr-xr-x): Владелец — всё (4+2+1=7), группа и остальные — чтение и выполнение (4+1=5). Классические права для исполняемых файлов.
  2. 644 (rw-r--r--): Владелец — чтение и запись (6), группа и остальные — только чтение (4). Стандарт для обычных файлов.
  3. 777 (rwxrwxrwx): Полный доступ для всех. Крайне небезопасно! Используйте с большой осторожностью.
  4. 700 (rwx------): Только владелец имеет полный доступ. Идеально для конфиденциальных файлов.

Команда ls -l — ваш лучший друг для проверки текущих прав доступа. Первые 10 символов в выводе этой команды как раз и показывают тип файла и права для владельца, группы и остальных.

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

1. Защита конфиденциального документа

chmod 600 secret_plan.txt — только вы сможете читать и редактировать этот файл.

2. Создание общего рабочего каталога для команды

chmod 775 shared_project/ — все участники группы смогут читать, писать и заходить в папку, остальные — только читать и заходить.

3. Запуск скрипта

Сначала сделайте файл исполняемым: chmod +x my_script.sh или точнее chmod u+x my_script.sh. Теперь его можно запустить: ./my_script.sh.

4. Рекурсивное изменение прав

Ключ -R позволяет применить права ко всем файлам и подпапкам внутри директории: chmod -R 755 /var/www/my_site/. Используйте рекурсию осознанно!

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

Как отменить все права на выполнение?

Используйте команду chmod a-x filename. Это безопасный способ заблокировать случайный запуск файлов.

Что делать, если я случайно поставил права 777?

Немедленно исправьте на более строгие, например, chmod 755 для папок или 644 для файлов. Проверьте систему на предмет несанкционированного доступа.

Почему я не могу изменить права файла, даже будучи владельцем?

Возможно, файл имеет атрибут «неизменяемый» (immutable). Проверьте командой lsattr и, если нужно, снимите флаг i утилитой chattr.

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

Для файла: r — открыть и прочитать, w — изменить, x — запустить как программу. Для папки: r — посмотреть список файлов внутри, w — создавать/удалять файлы в папке, x — войти в папку (самое важное право для директории).

Как сделать файл доступным только для чтения всем?

chmod a=r filename или chmod 444 filename. Даже владелец не сможет его редактировать, пока снова не изменит права.