Введение в разрешения Linux

Введение

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

В этом учебнике будет рассмотрено, как просматривать и понимать владение и разрешения в Linux. Если вам нужен учебник по изменению разрешений, вы можете прочитать Основы разрешений в Linux и как использовать Umask на VPS.

Предварительные требования

Убедитесь, что вы понимаете концепции, рассмотренные в предыдущих учебниках этой серии:

Для выполнения этого руководства вам понадобится доступ к облачному серверу. Вы можете следовать этому руководству по созданию виртуального сервера DigitalOcean.

О пользователях

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

В Linux существуют два типа пользователей: системные пользователи и обычные пользователи. Традиционно системные пользователи используются для запуска неинтерактивных или фоновых процессов в системе, в то время как обычные пользователи используются для входа в систему и запуска процессов в интерактивном режиме. Когда вы впервые инициализируете и входите в систему Linux, вы можете заметить, что по умолчанию создано множество системных пользователей для запуска служб, от которых зависит операционная система. Это нормально.

Вы можете просмотреть всех пользователей в системе, посмотрев содержимое файла /etc/passwd. Каждая строка в этом файле содержит информацию о одном пользователе, начиная с его имени пользователя (имя перед первым :). Вы можете вывести содержимое файла passwd с помощью команды cat:

  1. cat /etc/passwd
Output
… sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh

Суперпользователь

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

Также возможно настроить другие учетные записи пользователей с возможностью предполагать “права суперпользователя”. Это часто называется наличием sudo, потому что пользователи, которым разрешено временно получать права суперпользователя, делают это, предваряя команды на уровне администратора командой sudo. Фактически, создание обычного пользователя с привилегиями sudo для административных задач считается хорошей практикой. Таким образом, вы можете быть более консервативны в использовании учетной записи пользователя root.

О группах

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

Вы можете просмотреть все группы в системе и их членов, посмотрев файл /etc/group, так же, как вы делали бы с /etc/passwd для пользователей. Эта статья не охватывает управление группами.

Теперь, когда вы знаете, что такое пользователи и группы, давайте поговорим о владении файлами и правах доступа!

Просмотр владения и прав доступа

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

Самый распространенный способ просмотра прав доступа к файлу – использовать команду ls с опцией длинного списка -l, например, ls -l myfile. Если вы хотите просмотреть права доступа ко всем файлам в текущем каталоге, выполните команду без аргумента myfile, вот так:

  1. ls -l

Примечание: Если вы находитесь в пустом домашнем каталоге и еще не создали файлы для просмотра, вы можете следовать за мной, перечислив содержимое каталога /etc, выполнив эту команду: ls -l /etc

Вот примерный снимок экрана вывода ls -l, с метками каждого столбца вывода:

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

Режим понимания

Для объяснения значения всех группировок и букв вот разбор метаданных режима первого файла в приведенном выше примере:

Тип файла

В Linux существует два типа файлов: обычные и специальные. Тип файла указывается первым символом режима файла – в этом руководстве он будет называться “полем типа файла”.

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

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

Классы разрешений

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

Три класса разрешений работают следующим образом:

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

Чтение символьных разрешений

Следующее, на что нужно обратить внимание, – это наборы из трех символов. Они обозначают разрешения в символьной форме, которые имеет каждый класс для данного файла.

В каждой триаде разрешения на чтение, запись и выполнение представлены следующим образом:

  • Чтение: Обозначается символом r в первой позиции
  • Запись: Обозначается символом w во второй позиции
  • Выполнение: Обозначается символом x на третьей позиции. В некоторых особых случаях здесь может быть другой символ

A hyphen (-) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--, the file is “read-only” to the group that is associated with the file.

Понимание Чтение, Запись, Выполнение

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

Вот разбор доступа, который предоставляют три типа разрешений пользователю:

Чтение

Для обычного файла разрешение на чтение позволяет пользователю просматривать содержимое файла.

Для каталога разрешение на чтение позволяет пользователю просматривать имена файлов в каталоге.

Запись

Для обычного файла разрешение на запись позволяет пользователю изменять и удалять файл.

Для каталога разрешение на запись позволяет пользователю удалять каталог, изменять его содержимое (создавать, удалять и переименовывать файлы в нем) и изменять содержимое файлов, к которым у пользователя есть разрешение на запись.

Выполнение

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

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

Примеры режимов (и разрешений)

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

  • -rw-------: Файл, доступный только владельцу
  • -rwxr-xr-x: Файл, исполняемый каждым пользователем в системе. “Мировой исполняемый” файл
  • -rw-rw-rw-: Файл, открытый для изменений каждым пользователем в системе. “Мировой доступный для записи” файл
  • drwxr-xr-x: Директория, которую каждый пользователь системы может читать и получить доступ
  • drwxrwx---: Директория, которую может изменять (включая ее содержимое) ее владелец и группа
  • drwxr-x---: Директория, к которой имеет доступ ее группа

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

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

Вывод

Теперь у вас должно быть хорошее понимание того, как работают владение и права в Linux. Чтобы узнать, как изменить эти права, используя chown, chgrp и chmod, обратитесь к статье Основы прав в Linux и как использовать umask на VPS.

Если вы хотите узнать больше о основах Linux, прочтите следующий учебник в этой серии, Введение в перенаправление ввода-вывода в Linux.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions