Привилегии в Linux: что это и как с этим работать

Published by Leave your thoughts

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

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

Требования

  • Базовые навыки работы с Linux.
  • Сервер Linux (опционально).

Пользователи Linux

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

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

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

cat /etc/passwd

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

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

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

Группы Linux

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

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

cat /etc/group

Права собственности и доступа к файлам

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

Для просмотра прав доступа используется команда ls. Она имеет длинный список опций (например, ls -l myfile). Чтобы просмотреть настройки доступа к файлам в текущем каталоге, запустите команду без аргументов:

ls -l

Чтобы запросить содержимое каталога /etc, введите:

ls -l /etc

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

В целом вывод команды ls довольно легко понять, кроме, пожалуй, первого столбца, который описывает права доступа к файлу. Он выглядит примерно так:

drwxrwxrwx
drwxrwx---
-rw-rw----
drwx------
-rw-------

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

d rwx(1) rwx(2) rwx(3)

где:

  • d – поле типа файла.
  • rwx(1) – права пользователя-владельца файла.
  • rwx(2) – права группы-владельца.
  • rwx(3) – права остальных пользователей.

Типы файлов

В Linux существует два основных типа файлов: обычные и специальные.

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

Файл является специальным, если в поле типа содержится буква. Такие файлы обрабатываются операционной системой иначе, чем обычные файлы. Символ в поле типа файла указывает, к какому виду специальных файлов относится  определенный файл. Самым распространённым видом специальных файлов является каталог (или директория), он определяется символом d (как в примере выше). В системе Linux существует несколько видов специальных файлов, но данная тема выходит за рамки этой статьи.

Классы доступа

Как говорилось ранее, каждый файл имеет настройки для трёх категорий (или классов) доступа:

  1. пользователя – владельца файла;
  2. группы – владельца файла (к этому классу относятся все члены группы, в которой состоит пользователь – владелец файла);
  3. и остальных пользователей (к этому классу относятся все пользователи, которые не принадлежат к предыдущим классам).

Такого порядка привилегий придерживаются все дистрибутивы Linux.

Виды доступа

Каждая категория имеет три вида доступа, каждый из которых обозначается отдельным символом:

  • r (read) – право на чтение файла,
  • w (write) – право на изменение (редактирование),
  • x (execute) – право на запуск (в некоторых особых случаях вместо х может использоваться другой символ).

Если вместо символа стоит дефис, значит, данный класс не имеет соответствующего права доступа. Например:

drwxrwx—

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

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

Рассмотрим подробнее, что именно даёт каждый вид доступа.

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

Право на чтение файла

Право на чтение обычного файла – это возможность просматривать его содержимое.

Право на чтение каталога позволяет пользователю просматривать имена файлов, хранящихся в нём.

Право на изменение файла

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

Если у пользователя есть право на изменение каталога, то такой пользователь может удалить каталог, изменять его содержимое (то есть, создавать, переименовывать или удалять файлы в нём) и содержимое хранящихся в нём файлов.

Право на запуск

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

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

Примеры привилегий

Теперь рассмотрим несколько полезных общих примеров прав доступа к файлу.

  • -rw——-: доступ к файлу имеет только пользователь-владелец файла.
  • -rwxr-xr-x: любой пользователь системы может запустить такой файл.
  • -rw-rw-rw-: любой пользователь системы имеет право на изменение такого файла.
  • drwxr-xr-x: любой пользователь системы может читать данный каталог.
  • drwxrwx—: содержимое каталога могут читать и изменять только пользователь и группа-владелец.

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

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

Примечание: Чтобы научиться изменять права доступа, читайте это руководство. В нем речь идёт об использовании команд chown, chgrp и chmod.

Заключение

Теперь вы знакомы с основными понятиями, связанными с правами доступа и собственности в окружении Linux.

Tags:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>