Расшифровка разрешений файловой системы Linux

Опубликовано: 2017-02-24

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

Группы и типы разрешений

Весь контроль доступа к файлам и папкам определяется в файловой системе с использованием следующей информации:

  • Три группы разрешений: u для владельца, g , группа, o или a , все пользователи.
  • Три типа разрешений: r , чтение, x , выполнение, w , запись.

Типы разрешений — это символы «r», «x» и «w», называемые флагами, и отображаются как таковые, если вы каким-то образом перечислите разрешения для файла или папки. Неустановленные флаги обозначаются символом «-». Групповые разрешения используются в командах, которые изменяют владельца и группу файла, что мы вскоре рассмотрим.

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

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

Откройте терминал и введите следующую команду:

$ сенсорный тест

$ ls -la тест

-rw-r–r– 1 йоргос посох 0 23 фев 17:07 тест

Строка «-rw-r–r–» содержит интересующую нас информацию о правах доступа к файловой системе. Остальные поля слева направо отображают следующую информацию:

  • сколько ссылок на этот файл (1)
  • идентификатор пользователя-владельца (yorgos)
  • Идентификатор группы (персонал)
  • Длина файла в байтах (0)
  • Дата создания (23 февраля)
  • Время создания (17:07)
  • Имя файла (тест)

Биты разрешения

Вы заметите, что существует 9 различных комбинаций групп и типов разрешений, но 10 позиций флажков. Первый показывает флаг типа файла, а второй указывает сами разрешения. Типы файлов могут быть: «-» для файлов, «l» для символических ссылок (это ссылки файловой системы, которые просто указывают на другой файл) и «d» для каталогов. Поскольку первый символ/флаг в нашем примере — «-», мы говорим о простом файле. Продолжая, давайте разберем поле разрешений:

: Тип файла (может содержать l, - или d)

rw- : права на чтение и запись (без выполнения). Эти разрешения принадлежат владельцу.

r– : разрешение на чтение, без разрешения на запись и выполнение. Эти разрешения относятся к пользователям, принадлежащим к группе.

r– : разрешение на чтение, без записи и выполнения. Наконец, эти разрешения касаются всех остальных.

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

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

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

$ chmod <режим> <файл>

<режим> определяется следующими символами:

r флаг чтения

w флаг записи

x флаг выполнения

u флаг разрешения пользователя/владельца

g флаг разрешения группы

o флаг разрешения других пользователей

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

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

$ chown тест g+x
$ ls -l тест
-rwxrwxrwx 1 yorgos staff 0 23 фев 17:07 тест

Или, может быть, вам нужно полностью заблокировать всех остальных. Они не смогут ни прочитать, ни записать, ни выполнить файл:

$ chown o-rwx тест
$ ls -l тест
-rwxrwx— 1 yorgos staff 0 23 фев 17:07 тест

Здесь мы видим, что все последние флаги сброшены на «-».
Если вы хотите увидеть больше примеров, обратитесь к странице руководства для chmod, введя следующую команду:

$ человек chmod

Владельцы и группы

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

Команда chown принимает различные параметры, которые каким-то образом изменяют ее поведение, но чаще всего используется следующее:

# chown <владелец> <файл>

Или же

# chown <владелец:группа> <файл>

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

# chown никого не тестировать

# ls -l тест

-rwxrwxrwt 1 никто персонал 0 23 фев 17:07 тест

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

Аналогично команда:

# chown Nobody: проверка колеса

# ls -l проверка

-rwxrwxrwt 1 никто колесо 0 23 фев 17:07 тест


Изменяет владельца файла на none и группу на wheel .

Если вы хотите узнать больше о команде и ее различных параметрах, обратитесь к странице руководства chown, введя команду:

$ мужчина чаун

Специальные разрешения

Помимо типов и групп разрешений, о которых мы уже упоминали в статье, есть еще несколько, называемых «специальными разрешениями».

Это следующие:

с       Флаг «Установить идентификатор пользователя» и «Установить идентификатор группы».

т       Липкий флаг.

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

$ chmod u+s тест
$ ls -l проверка
-rwsrwx—   1 йоргос   сотрудники   0 23 фев 17:07 тест

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

Липкий бит, или «t», особенно полезен. При установке в каталоге, который обычно является общим, например /tmp, файлы, созданные там, могут быть переименованы или удалены только их соответствующими владельцами. Если липкий бит не установлен, владелец каталога не имеет над ними контроля.

Вы можете сделать каталог «липким», выполнив следующую команду:

$ chmod +t /каталог

Восьмеричное представление

Помимо использования флагов для определения разрешений, таких как «r» и «w», вы также можете использовать числовые значения. Команда chmod присваивает разрешениям следующие значения:

«р» = 4

«ш» = 2

«х» = 1

Таким образом, чтобы настроить файл на чтение/запись/выполнение для владельца и чтение/выполнение для всех остальных, что означает «-rwxr-xr-x», мы вычисляем числовое значение как таковое:

гвх = 4+2+1 = 7

гх = 4+1 = 5

Наконец, мы выдаем команду:

$chmod 755 тест
$ls – тест
-rwxr-xr-x   1 йоргос   сотрудники   21 фев 24 02:08 тест

Практикуйтесь самостоятельно, используя различные разрешения и числовые значения, чтобы освоиться!