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

Вступление

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

В этом руководстве мы рассмотрим, как просматривать и понимать владение и разрешения Linux. Если вы ищете учебник по изменению разрешений, ознакомьтесь с этим руководством: https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on- a-vps # types-permissions [Основы разрешений Linux и как использовать Umask на VPS]

Предпосылки

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

Доступ к серверу Linux не обязателен, чтобы следовать этому руководству, но его использование позволит вам получить из первых рук опыт. Если вы хотите настроить его, check эту ссылку для помощи.

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

Как упоминалось во введении, Linux является многопользовательской системой. Мы должны понять основы Linux users и groups, прежде чем мы сможем говорить о владении и разрешениях, потому что они являются сущностями, к которым относятся права и права доступа. Давайте начнем с основ того, что пользователи.

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

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

cat /etc/passwd

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

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

Также возможно настроить другие учетные записи пользователей с возможностью получения «прав суперпользователя». На самом деле, создание нормального пользователя с привилегиями + sudo + для задач системного администрирования считается лучшей практикой.

О группах

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

Простой способ просмотреть все группы и их участников - посмотреть в файле + / etc / group + на сервере. Мы не будем рассматривать управление группами в этой статье, но вы можете запустить эту команду, если вам интересно узнать о ваших группах:

cat /etc/group

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

Просмотр прав собственности и разрешений

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

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

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

Вот пример скриншота того, как может выглядеть вывод, с метками каждого столбца вывода:

изображение: https: //assets.digitalocean.com/articles/linux_basics/ls-l.png [ls -l]

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

Понимание режима

Чтобы объяснить, что означают все группировки и буквы, взгляните на этот крупный план mode первого файла в приведенном выше примере:

изображение: https: //assets.digitalocean.com/articles/linux_basics/mode.png [Разбивка режимов и разрешений]

Тип файла

В Linux существует два основных типа файлов: normal и special. Тип файла указывается первым символом mode файла - в этом руководстве мы будем называть его полем file type.

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

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

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

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

Давайте посмотрим, какие пользователи принадлежат к каждому классу разрешений:

  • * Пользователь *: owner файла принадлежит этому классу

  • * Группа *: члены группы файла принадлежат этому классу

  • * Другое *: все пользователи, которые не являются частью классов user или group, принадлежат этому классу.

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

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

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

  • * Чтение *: Обозначается знаком + r + в первой позиции

  • * Запись *: Обозначается знаком + w + во второй позиции

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

Дефис (+ - +) вместо одного из этих символов означает, что соответствующее разрешение недоступно для соответствующего класса. Например, если триада group для файла - + r - +, файл доступен только для чтения группе, связанной с файлом.

Понимание чтения, записи, выполнения

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

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

Read

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

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

Написать

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

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

казнить

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

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

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

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

  • + -rw ------- +: файл, который доступен только его владельцу

  • + -rwxr-xr-x +: файл, который исполняется каждым пользователем в системе. «Исполняемый мир» файл

  • + -rw-rw-rw- +: файл, открытый для изменения каждым пользователем в системе. «Пишущий на весь мир» файл

  • + drwxr-xr-x +: каталог, который каждый пользователь в системе может прочитать и получить к нему доступ

  • + drwxrwx --- +: каталог, который может быть изменен (включая его содержимое) его владельцем и группой.

  • + drwxr-x --- +: каталог, доступный для его группы

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

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

Изменение владельца и разрешений

Чтобы этот учебник был простым, мы не будем здесь рассказывать, как изменить владельца файла и разрешения. Чтобы узнать, как использовать + chown +, + chgrp + и + chmod + для выполнения этих задач, обратитесь к этому руководству: https://www.digitalocean.com/community/tutorials/linux-permissions-basics- and-how-to-use-umask-on-a-vps # types-permissions [Основы разрешений Linux и как использовать Umask на VPS].

Заключение

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

Related