Домашняя » как » Как работают разрешения для файлов Linux?

    Как работают разрешения для файлов Linux?

    Если вы уже некоторое время используете Linux (и даже OS X), вы, вероятно, столкнетесь с ошибкой «permissions». Но что именно они, и почему они необходимы или полезны? Давайте взглянем изнутри.

    Пользовательские разрешения

    В свое время компьютеры были огромными машинами, которые были невероятно дорогими. Чтобы максимально использовать их, были подключены несколько компьютерных терминалов, что позволило многим пользователям одновременно заниматься своими делами. Обработка и хранение данных осуществлялась на машине, а сами терминалы были не более чем средством просмотра и ввода данных. Если вы думаете об этом, то в значительной степени мы получаем доступ к данным в «облаке»; посмотрите на Amazon Cloud Mp3-систему, Gmail и Dropbox, и вы заметите, что, хотя изменения можно вносить локально, все хранится удаленно.

    (Изображение: «тупой» терминал Zenith Z-19; кредит: ajmexico)

    Чтобы это работало, отдельные пользователи должны иметь учетные записи. У них должен быть выделенный участок области хранения, и им нужно разрешать запускать команды и программы. Каждый получает определенные «пользовательские разрешения», которые определяют, что они могут и не могут делать, где в системе они имеют и не имеют доступа, а чьи файлы они могут и не могут изменять. Каждый пользователь также помещается в различные группы, которые предоставляют или ограничивают дальнейший доступ.

    Доступ к файлам

    В этом дурацком многопользовательском мире мы уже установили границы того, что могут делать пользователи. Но как насчет того, что они получают доступ? Ну, у каждого файла есть набор разрешений и владелец. Обозначение владельца, обычно связываемое при создании файла, объявляет, к какому пользователю он принадлежит, и только этот пользователь может изменять свои права доступа..

    В мире Linux разрешения делятся на три категории: чтение, запись и выполнение. Доступ «чтение» позволяет просматривать содержимое файла, доступ «запись» позволяет изменять содержимое файла, а «выполнять» позволяет запускать набор инструкций, таких как сценарий или программа. Каждая из этих категорий применяется к разным классам: пользователю, группе и миру. «Пользователь» означает владельца, «группа» означает любого пользователя, который находится в той же группе, что и владелец, а «мир» означает кого-либо и всех..

    Папки также могут быть ограничены с этими разрешениями. Например, вы можете разрешить другим людям в вашей группе просматривать каталоги и файлы в вашей домашней папке, но не кому-либо за пределами вашей группы. Возможно, вы захотите ограничить доступ «на запись» только для себя, если только вы не работаете над каким-либо общим проектом. Вы также можете создать общий каталог, который позволяет любому просматривать и изменять файлы в этой папке..

    Изменение разрешений в Ubuntu

    графический интерфейс пользователя

    Чтобы изменить права доступа к файлу, которым вы владеете в Ubuntu, просто щелкните файл правой кнопкой мыши и выберите «Свойства».

    Вы можете изменить, может ли Владелец, Группа или Другие читать и писать, только для чтения или ничего не делать. Вы также можете установить флажок, чтобы разрешить выполнение файла, и это включит его для владельца, группы и других одновременно..

    Командная строка

    Вы также можете сделать это через командную строку. Перейдите в каталог, в котором есть файлы, и введите следующую команду, чтобы просмотреть все файлы в списке:

    ls -al

    Рядом с каждым файлом и каталогом вы увидите специальный раздел, в котором изложены имеющиеся у него разрешения. Это выглядит так:

    -rwxrw-р-

    р означает «читать», вес означает «написать», а Икс означает «выполнить». Каталоги будут начинаться с «d» вместо «-». Вы также заметите, что есть 10 пробелов, которые содержат значение. Вы можете проигнорировать первый, а затем есть 3 набора по 3. Первый набор для владельца, второй набор для группы, и последний набор для мира.

    Чтобы изменить права доступа к файлу или каталогу, давайте рассмотрим базовую форму команды chmod.

    chmod [класс] [оператор] [права доступа] файл

    Файл chmod [ugoa] [+ or -] [rwx]

    Сначала это может показаться сложным, но, поверьте мне, это довольно легко. Сначала давайте посмотрим на классы:

    • U: Это для владельца.
    • г: это для группы.
    • о: это для всех остальных.
    • а: это изменит разрешения для всего вышеперечисленного.

    Далее операторы:

    • +: Знак плюс добавит следующие разрешения.
    • -: Знак минус удалит разрешения, которые следуют.

    Все еще со мной? И последний раздел такой же, как когда мы проверяли права доступа к файлу:

    • r: разрешает чтение.
    • w: разрешает запись.
    • x: разрешает выполнение.

    Теперь давайте вместе. Допустим, у нас есть файл с именем «todo.txt», который имеет следующие разрешения:

    -RW-RW-г-

    То есть владелец и группа могут читать и писать, а мир может только читать. Мы хотим изменить разрешения на эти:

    -rwxr-

    То есть владелец имеет полные права, и группа может читать. Мы можем сделать это в 3 этапа. Сначала мы добавим разрешение на выполнение для пользователя..

    chmod u + x todo.txt

    Затем мы удалим разрешение на запись для группы.

    chmod g-w todo.txt

    Наконец, мы удалим разрешения на чтение для всех остальных пользователей..

    chmod o-r todo.txt

    Мы также можем объединить их в одну команду, например так:

    chmod u + x, g-w, o-r todo.txt

    Вы можете видеть, что каждый раздел разделен запятыми и нет пробелов.

    Вот некоторые полезные разрешения:

    • -rwxr-xr-x: владелец имеет полные права, группа и другие пользователи могут читать содержимое файла и выполнять.
    • -rwxr-r-: владелец имеет полные права, группа и другие пользователи могут только читать файл (полезно, если вы не возражаете против просмотра ваших файлов другими пользователями)..
    • -rwx-: владелец имеет полные разрешения, остальные - нет (полезно для личных скриптов).
    • -rw-rw--: владелец и группа могут читать и писать (полезно для совместной работы с членами группы).
    • -rw-r-r-: владелец может читать и писать, групповые и другие пользователи могут только читать файлы (полезно для хранения личных файлов в общей сети).
    • -rw--: владелец может читать и писать, все остальные не имеют (полезно для хранения личных файлов).

    Есть несколько других вещей, которые вы можете сделать с помощью chmod - например, setuid и setgid - но они немного глубоки, и большинству пользователей в действительности не нужно их использовать..

    Корневые или суперпользовательские и системные файлы

    В настоящее время мы не всегда запускаем системы с несколькими пользователями. Почему мы все еще должны беспокоиться о разрешениях?

    Ну, Unix и его производные - Linux, OS X и другие - также различают вещи, управляемые пользователем, действия, выполняемые администратором или с правами администратора, и действиями, выполняемыми самой системой. Таким образом, вещи, которые являются неотъемлемой частью системы, требуют изменения прав администратора или доступа к ним. Таким образом, вы ничего не напутаете случайно.

    В Ubuntu для внесения изменений в системные файлы вы используете «sudo» или «gksudo», чтобы получить эквивалент привилегий администратора. В других дистрибутивах вы переключаетесь на «root» или «super-user», который фактически делает то же самое, пока вы не выйдете из системы..

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


    Имеются разрешения на доступ к файлам для обеспечения базовой системы безопасности среди пользователей. Изучение того, как они работают, может помочь вам настроить базовый общий доступ в многопользовательской среде, защитить «общедоступные» файлы и дать вам представление о том, когда что-то не так с владением системным файлом.

    Думаешь, ты можешь объяснить вещи проще? Есть исправление? Хотите вспомнить старые времена? Сделайте перерыв и изложите свои мысли в комментариях.