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