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

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

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

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

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

ошибка чтения
ошибка чтения

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

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

не писать пермь
не писать пермь

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

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

GUI

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

разрешения убунту
разрешения убунту

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

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

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

Изображение
Изображение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изображение
Изображение

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

Вот несколько полезных разрешений:

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

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

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

Изображение
Изображение

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

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

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

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

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

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