Права доступа к файлам на Raspberry Pi

Разберём, что представляют собой права доступа на Raspberry Pi, кто имеет возможность читать, записывать и запускать файлы, а также работать с каталогами.

Root пользователь (суперпользователь)

ОС Raspberry Pi, прежде носившая название Raspbian, является официальной операционной системой для Raspberry Pi.

См. также

Варианты Операционных систем для Raspberry Pi 4

Она представляет собой модифицированную версию дистрибутива Debian Linux с многопользовательской архитектурой.

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

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

В ОС Raspberry Pi по умолчанию вход выполняется под учётной записью «pi». Привилегий аккаунта pi как правило хватает для выполнения стандартных задач.

Тем не менее иногда требуется внести изменения, затрагивающие всю систему. Оптимальный способ — воспользоваться правами пользователя root при помощи команд su и sudo.

Su и Sudo

Команда su расшифровывается как «замещающий пользователь» (англ. — substitute user). При вызове она позволяет выполнять операции в командной строке от лица другого пользователя. Синтаксис:

$ su username

Если имя пользователя не указано, su по умолчанию подразумевает пользователя root.

Также перед именем пользователя можно добавить -, чтобы перенять его настройки и привилегии.

Учтите, что для переключения на указанного пользователя необходимо предварительно ввести его пароль.

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

$ exit

Кроме того, можно использовать sudo (англ. — super user do) для запуска действий от имени пользователя root. Подобно su, команда требует пароль для аутентификации. Однако вместо пароля указанного пользователя запрашивается ваш собственный пароль.

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

Теперь, разобравшись с суперпользователем и способами получения доступа через su и sudo, перейдём к файловой системе.

Разрешения пользователя

Для просмотра прав доступа к файлам в текущем каталоге выполните команду:

$ ls -l

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

$ ls -l filename.txt

Синтаксис прав доступа к файлам выглядит так:

-rwxr-xr–

Запись прав доступа состоит из 10 символов. Первый символ указывает на тип файла, а оставшиеся девять определяют уровень доступа для различных категорий пользователей.

Первый символ принимает значение - или d. Символ - означает, что перед нами файл, а d указывает на каталог (directory).

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

Разбивка выглядит следующим образом:

  1. Первые три символа — пользователь (user) — разрешения владельца файла.

  2. Следующие три символа — группа (group) — разрешения для группы пользователей.

  3. Последние три символа — остальные (others) — разрешения для всех, кто имеет доступ к компьютеру.

При этом три символа в каждой группе означают следующие уровни доступа:

  1. read (чтение) — даёт возможность просматривать содержимое указанного файла или каталога;

  2. write (запись) — даёт возможность изменять или удалять указанный файл или каталог;

  3. execute (выполнение) — даёт возможность запускать или копировать указанный файл или каталог.

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

После выполнения команды:

$ ls -l filename.txt

Получим следующий результат:

-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

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

$ chmod

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

Для изменения прав доступа применяется команда chmod, что расшифровывается как «изменить режим» (англ. — change the mode). Синтаксис:

$ chmod mode filename

Справка. Для изменения прав доступа к файлам и папкам, принадлежащим вам, права суперпользователя не требуются.

Они необходимы лишь при работе с объектами за пределами вашей учётной записи. Для этого можно воспользоваться su или sudo.

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

Символьный формат

Пример использования команды chmod:

$ sudo chmod u-r filename.txt

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

Таблица 1: целевая группа пользователей chmod

Буква

Значение

u

Текущий пользователь

g

Файловая группа

o

Другие, не входящие в группу владельца

a

Все

За первым символом следует указание действия. В таблице 2 представлены три символа, доступные для использования.

Таблица 2: действие chmod

Символ

Значение

+

Добавляет / включает разрешение

Удаляет / отключает разрешение

=

Игнорирует текущие разрешения и создает новые

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

Таблица 3: разрешение файла chmod

Буква

Значение

r

Read (чтение)

w

Write (запись)

x

Execute (запуск, выполнение)

X

Выполнить для папок

Существует множество частных случаев применения прав доступа. Иногда кажется, что они функционируют в точном соответствии со своими названиями. Однако на практике это не всегда так. Рассмотрим ряд ситуаций:

  1. Просматривать содержимое папки можно лишь при наличии разрешения на выполнение. Разрешение на чтение действует только в отношении отдельных файлов.

  2. Переименовать файл удастся лишь при наличии разрешения на выполнение. Разрешение на запись позволяет менять только содержимое файла. Имя файла сюда не входит.

  3. Запустить файл с кодом через стороннее приложение можно, имея лишь разрешение на чтение.

Восьмеричный формат

Альтернативный способ задания прав доступа — восьмеричный формат. Как следует из названия, он использует восьмеричную систему счисления для обозначения прав доступа в команде chmod.

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

Таблица 4: Восьмеричный формат

Цифра

Read (чтение)

Write (запись)

Execute (выполнение)

7

r

w

x

6

r

w

-

5

r

-

x

4

r

-

-

3

-

w

x

2

-

w

-

1

-

-

x

0

-

-

-

К примеру, эквивалент символьной команды:

sudo chmod 4 filename

записывается как:

sudo chmod u+r filename

Наконец, если требуется изменить все разрешения внутри папки или каталога, применяется рекурсивный ключ -r. Его можно указывать в любом месте команды chmod, если он не перекрывает другие параметры.