Linux права доступа к файлам и каталогам, команда chmod
В Linux подобных операционных системах для каждого каталога и файла можно задать права доступа. Если быть точнее, то права доступа автоматически задаются при создании файлов/каталогов, а Вы можете их изменять. Для чего это нужно? Например, Вам нужно, чтобы к Вашему файлу имели доступ только сотрудники отдела, в котором Вы работаете, другими словами только пользователи Вашей группы. Или Вы создали обычный текстовый файл, содержащий инструкции командного интерпретатора. Чтобы этот файл стал сценарием, ему нужно дать права на выполнение.
Основные права доступа
Существуют три вида прав доступа:
- чтение (read);
- запись (write);
- выполнение (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. Существуют два способа указания прав доступа:
- Символьный - когда указываются символы, задающие право доступа r,w,x;
- Абсолютный - в виде трех чисел, например 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 |
111 | 7 |
Аналогично произведем разбор прав для членов группы владельца. Получится двоичное 100, т.е. восьмеричное 4. С третьим набором (---) все вообще просто - 000, т.е. 0.
Записываем полученные числа в восьмеричной системе в порядке "владелец-группа-остальные". Получается число 640 - это и есть права доступа. Для того, чтобы установить данные права доступа, выполним команду:
chmod 640 <имя_файла>
Наиболее популярные права доступа
- 644 - владельцу можно читать и изменять файл, остальным только читать;
- 666 - читать и изменять файл можно всем пользователям;
- 777 - всем можно читать, изменять и выполнять файл.
Примечание, для каталога право выполнения - это право просмотра оглавления каталога.
Иногда символьный метод оказывается проще. Например, у нас есть файл script, который нужно сделать исполнимым, для этого можно применить команду:
chmod +x script_name
Для того чтобы снять право выполнения, указывается параметр -x:
chmod -x script_name
Подробнее с командой chmod можно ознакомиться открыв мануал:
$ man chmod