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

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

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

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

Это модифицированная версия дистрибутива 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 показаны четыре буквы, обозначающие каждую группу пользователей.

БукваЗначение
uТекущий пользователь
gФайловая группа
oДругие, не входящие в группу владельца
aВсе
Таблица 1: целевая группа пользователей chmod

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

СимволЗначение
+Добавляет / включает разрешение
Удаляет / отключает разрешение
=Игнорирует текущие разрешения и создает новые
Таблица 2: действие chmod

Наконец, вы указываете разрешение, которое хотите изменить. В таблице 3 показаны права доступа к файлам.

БукваЗначение
rRead (чтение)
wWrite (запись)
xExecute (запуск, выполнение)
XВыполнить для папок
Таблица 3: разрешение файла chmod

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

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

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

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

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

ЦифраRead
(чтение)
Write
(запись)
Execute
(выполнение)
7rwx
6rw-
5r-x
4r--
3-wx
2-w-
1--x
0---
Таблица 4: Восьмеричный формат

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

sudo chmod 4 filename

является:

sudo chmod u+r filename

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

4 ноября 2020 в 17:59 | Обновлено 7 ноября 2020 в 01:19 (редакция)
Опубликовано: | Оригинал
Статьи,

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

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