Права доступа к файлам — фундамент работы с Linux: будь то просто открытие PDF или запуск сложных программ. Кажется, что разобраться с ними легко, но на деле тут полно нюансов, о которых забывают даже опытные пользователи.
Права определяют, кому что разрешено делать с файлом
С файлами и их правами вы сталкиваетесь почти сразу — стоит лишь попытаться открыть или сохранить что-то новое. Каждый файл (вернее, его inode) хранит свои права. Именно они решают, кто сможет читать данный файл или вносить в него изменения.
Если права на чтение отсутствуют — при открытии файла появится ошибка. Нет права на запись — блокируется и сохранение изменений:
Три уровня пользователей — три набора прав
Права состоят из видов действий и категорий пользователей. Есть три действия — чтение, запись и выполнение. А вот присваиваться эти действия могут сразу трем категориям.
Для каждого файла определён владелец и группа. Вы можете оказаться: владельцем, участником группы файла, либо просто “остальными”.
В результате, права разбиваются на три цепочки по три — возможны всевозможные комбинации. К примеру, файл открыт для всех на чтение, редактировать его может только владелец, а запускать — исключительно члены группы. И так далее.
Почему обозначения прав такие загадочные?
Чаще всего права отображаются в виде строки из 9 символов, вроде такой:
Это краткая запись состояния трёх прав для каждой пользовательской группы. Слева направо указываются: право читать, писать и выполнять — сначала для владельца, затем для группы, после — для остальных. Буква означает наличие права, дефис — его отсутствие.
Важно: "o" — это не от "owner" (владелец), а сокращённо от "other" (прочие пользователи). Не путайте: "u" всегда означает пользователя, "o" — остальных.
Разбив строку, мы видим:
Здесь владелец полноценно распоряжается файлом, группе разрешено читать и запускать его, остальным — только запуск разрешён.
Узнать права проще всего через команду ls
Самый быстрый способ посмотреть права — команда ls. Обычный вызов выдаст только имена файлов, а вот с флагом -l вы получите подробности, включая права доступа:
Сразу после первого символа (он показывает тип: «d» — каталог, «-» — файл) идут девять символов — те самые права для каждой категории.
Хотите больше информации о правах? Используйте stat
ls — отличное решение для быстрой проверки, но деталями порадует stat. Эта команда выдаёт гораздо больше сведений о файле и ещё позволяет настроить формат вывода под себя.
Вот пример команды, которая покажет имя файла и его права:
Обратите внимание: stat может работать немного по-разному на разных системах. Пример выше подходит для Ubuntu, а для macOS вариант такой: stat -f '%N %Sp' filename. Всегда сверяйтесь с вашим мануалом.
Как сменить права на файлы: команда chmod
Главный инструмент для изменения прав — chmod («change mode»). Поначалу команда кажется сложноватой: столько вариантов! Но если освоите основы, — дальше всё элементарно.
Самый простой пример использования:
Эта команда добавляет право на чтение всем для файла myfile. Буква «a» обозначает "all" — все сразу: u (user), g (group), o (other). Знак « » — прибавить право, «-» — убрать, «=» — выставить точно. «r» — чтение, вместо него могут быть «w» (запись), «x» (выполнение).
Права можно изменять сразу для нескольких категорий:
Такая команда разрешает владельцу и читать, и редактировать файл, а остальным — только читать. Запускать файл не сможет никто.
Важно: менять права через chmod вы можете только в пределах своих файлов (если не действуете через root).
Рекомендую освоить пару базовых сценариев с chmod — это реально сэкономит время. Команда очень гибкая, её можно подстроить под любые задачи.
Хотите запустить файл как программу? Проверьте его права!
Только право на выполнение делает файл запускаемым — но и тут есть тонкости. Это как "флажок", разрешающий воспринимать файл как программу. Обычно такое право требуется исполняемым бинарникам или скриптам (например, .sh-файлам).
Интересный момент: если убрать право на выполнение, файл нельзя будет просто "запустить", но всё равно получится передать его интерпретатору вручную. Так что это больше защита от случайного запуска, а не жёсткий запрет на исполнение.
Не забывайте: права — это страховка от ошибок, а не абсолютная безопасность
Право на запуск — далеко не панацея. В целом, права в Linux — это скорее "ограждения", а не неприступные замки от взлома.
Например, а запретит ли отсутствие права на запись удаление файла?
Команда rm удаляет файл независимо от того, указано ли право на запись! Звучит неожиданно, но это особенность системы прав в Linux. Владелец, как правило, может в любой момент восстановить любые права через chmod. Так что rm всегда пытается "пробить" ограничения, если вы тот самый владелец.
Вывод прост: права нужны не для суперзащиты ваших данных, а чтобы случайно не стереть или не испортить что-то важное.
Для каталогов права работают совсем иначе!
Каталоги в Linux — те же файлы, только особого типа, и у них свои правила. Значение прав здесь меняется:
Право на чтение каталога означает, что вы увидите список его содержимого. Нет этого права — команда ls выдаст ошибку:
Право на запись позволяет создавать новые файлы или переименовывать старые непосредственно в каталоге:
Право на выполнение для каталогов — особый случай. Оно не про запуск, а про возможность "зайти внутрь" каталога:
Не только терминал: меняйте права и в графических менеджерах!
В Ubuntu файловый менеджер ("Файлы") позволяет одним кликом увидеть или изменить права: просто откройте пункт "Свойства":
В нижней части появится строка с текущими правами и статусом "Выполнить". Кликнув по ней, можно задать разные права для каждой категории пользователей:
В macOS всё нужное видно в "Finder": нужно только открыть "Свойства" (Get Info) у файла:
В окне отобразятся права для пользователя, группы и всех остальных. Учтите: через Finder нельзя назначать право на выполнение.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru