Как работают права доступа к файлам в Linux?

Опубликовано: 2022-01-29

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

Разрешения пользователя

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

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

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

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

error reading

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

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

no write perm

Реклама

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

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

графический интерфейс

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

ubuntu permissions

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

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

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

лс-ал

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

-rwxrw-r–

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

Реклама

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

chmod [класс][оператор][разрешение] файл

chmod [ugoa][+ или –] [rwx] файл

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

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

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

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

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

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

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

-rw-rw-r–

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

-rwxr—–

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

chmod u+x todo.txt

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

chmod gw todo.txt

Реклама

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

chmod или todo.txt

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

chmod u+x,gw или 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» или «суперпользователя», который фактически делает то же самое, пока вы не выйдете из системы.

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


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

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