Linux права доступа к файлам и каталогам, команда chmod

В Linux подобных операционных системах для каждого каталога и файла можно задать права доступа. Если быть точнее, то права доступа автоматически задаются при создании файлов/каталогов, а Вы можете их изменять. Для чего это нужно? Например, Вам нужно, чтобы к Вашему файлу имели доступ только сотрудники отдела, в котором Вы работаете, другими словами только пользователи Вашей группы. Или Вы создали обычный текстовый файл, содержащий инструкции командного интерпретатора. Чтобы этот файл стал сценарием, ему нужно дать права на выполнение.

Основные права доступа

Существуют три вида прав доступа:

  1. чтение (read);
  2. запись (write);
  3. выполнение (execute).

Для каталога право на выполнение означает право на просмотр содержимого этого каталога.

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

Как просмотреть права доступа

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

ls -l

lexone@OmenDeb:~$ ls -l
итого 88
drwxr-xr-x 3 lexone lexone  4096 сен 15  2018 Android
drwxrwxrwx 3 lexone lexone  4096 янв 13 20:33 AndroidKeyStore
drwxr-xr-x 3 lexone lexone  4096 янв 18 19:56 AndroidStudio
drwxr-xr-x 4 lexone lexone  4096 фев 12 13:07 AndroidStudioProjects
drwxr-xr-x 3 lexone lexone  4096 ноя  8 15:56 apk
drwxr-xr-x 3 lexone lexone  4096 окт 30 22:28 leaflet
drwxr-xr-x 6 lexone lexone  4096 ноя 24 22:16 New Unity Project
drwxr-xr-x 3 lexone lexone  4096 июл 17  2018 SDK
drwxrwxr-x 3 lexone lexone  4096 ноя 24 20:45 Unity-2018.2.7f1
drwxr-xr-x 4 lexone lexone  4096 апр  7 13:48 VirtualBox VMs
drwxrwxrwt 2 root   root    4096 янв  9 21:09 VMachines
drwxr-xr-x 2 lexone lexone  4096 июн 30  2018 Видео
drwxr-xr-x 9 lexone lexone  4096 окт 20 12:07 Документы
drwxr-xr-x 5 lexone lexone 16384 апр  8 10:16 Загрузки
drwxr-xr-x 6 lexone lexone  4096 апр  2 20:54 Изображения
drwxr-xr-x 2 lexone lexone  4096 июл 20  2018 Музыка
drwxr-xr-x 2 lexone lexone  4096 май 25  2018 Общедоступные
drwxr-xr-x 5 lexone lexone  4096 апр  4 20:26 Рабочий стол
drwxr-xr-x 2 lexone lexone  4096 май 25  2018 Шаблоны

В этом листинге видно, что данная команда вывела список всех файлов и каталогов в данной директории, где самый первый столбец это столбец с правами доступа к файлам/каталогам вида drwxrwxrwx.

Разберем поподробнее, что значит каждый символ в описании прав на примере каталога /Android:

drwxr-xr-x 3 lexone lexone 4096 сен 15 2018 Android

  • Первый символ – тип файла. d – директория, дефис – это файл, l – ссылка, могут быть и другие типы, но о них поговорим в отдельной статье;
  • Последующие три символа (rwx) определяют права доступа владельца файла или каталога. Первый – чтения, второй – запись, третий – выполнение. Как можно увидеть, в данном случае владельцу разрешено всё;
  • Следующие три символа (r-x) задают права доступа для членов группы владельца. Можно отобразить содержимое, x для каталога означает разрешение на обход каталога. Это позволяет группе получить доступ к файлам и папкам в каталоге. “Выполнение” каталога разрешает вам двигать по иерархии, даже если вы не знаете что внутри.
  • Последние три символа (r-x) задают права доступа для прочих пользователей. Они имеют аналогичные с предыдущей группой права.

Изменение прав доступа, команда chmod

Права доступа задаются командой chmod. Существуют два способа указания прав доступа:

  1. Символьный – когда указываются символы, задающие право доступа r,w,x;
  2. Абсолютный – в виде трех чисел, например 666.

В мире UNIX чаще всего используют абсолютный способ указания прав доступа. Рассмотрим его подробнее.

Для примера используем права rw-r—–

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

Возьмем отдельный набор прав для владельца: rw-

Чтение разрешено – записываем 1, т.к. в информатике единица означает истину, запись разрешена – ставим еще одну 1, а вот выполнение запрещено, поэтому тут будет 0. На выходе имеем число 110 в двоичной системе исчислений. Если перевести число 110 в восьмеричную систему, получится число 6.

Двоичная системаВосьмеричная система
000 0
001 1
010 2
011 3
100 4
101 5
110 6
1117

Аналогично произведем разбор прав для членов группы владельца. Получится двоичное 100, т.е. восьмеричное 4. С третьим набором (—) все вообще просто – 000, т.е. 0.

Записываем полученные числа в восьмеричной системе в порядке “владелец-группа-остальные”. Получается число 640 – это и есть права доступа. Для того, чтобы установить данные права доступа, выполним команду:

chmod 640 <имя_файла>

Наиболее популярные права доступа

  • 644 – владельцу можно читать и изменять файл, остальным только читать;
  • 666 – читать и изменять файл можно всем пользователям;
  • 777 – всем можно читать, изменять и выполнять файл.

Примечание, для каталога право выполнения – это право просмотра оглавления каталога.

Иногда символьный метод оказывается проще. Например, у нас есть файл script, который нужно сделать исполнимым, для этого можно применить команду:

chmod +x script_name

Для того чтобы снять право выполнения, указывается параметр -x:

chmod -x script_name

Подробнее с командой chmod можно ознакомиться открыв мануал:

$ man chmod