Рассмотрим что такое права доступа на 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).
Остальные девять - это фактически три группы по три символа. Эти группы относятся к типам пользователей, к которым применяются разрешения (привилегии).
Разделяется синтаксис так:
- Первые три символа - пользователь (user) - разрешения для владельца файла.
- Следующие три символа - группа (group) - разрешения для группы пользователей.
- Последние три символа - все остальные (others) - разрешения для всех, у кого есть доступ к компьютеру.
Кроме того, три символа в каждой группе представляют уровень доступа:
- read (чтение) - позволяет просматривать содержимое указанного файла или каталога;
- write (запись) - позволяет изменить или удалить указанный файл или каталог;
- 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 | Все |
После первого символа вы указываете действие, которое хотите предпринять. В таблице 2 показаны три символа, которые вы можете использовать.
Символ | Значение |
+ | Добавляет / включает разрешение |
– | Удаляет / отключает разрешение |
= | Игнорирует текущие разрешения и создает новые |
Наконец, вы указываете разрешение, которое хотите изменить. В таблице 3 показаны права доступа к файлам.
Буква | Значение |
r | Read (чтение) |
w | Write (запись) |
x | Execute (запуск, выполнение) |
X | Выполнить для папок |
Есть много особых случаев, когда используются права доступа к файлам. Иногда кажется, что они будут работать так, как предполагают их названия. Но это не всегда так. Посмотрим на некоторые ситуации:
- Вы можете просматривать содержимое папки, только если у вас есть разрешение на выполнение. Разрешение на чтение работает только с отдельными файлами.
- Вы можете переименовать файл, только если у вас есть разрешение на выполнение. Разрешение на запись позволяет изменять только содержимое файла. Имя файла не включается.
- Вы можете запустить файл кода с помощью стороннего приложения только с разрешением на чтение.
Восьмеричный формат
Другой способ представления прав доступа к файлу - использование восьмеричного формата. Как следует из названия, восьмеричный формат использует восьмеричную систему счисления для обозначения прав доступа к файлам в команде chmod.
В таблице 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
, если он не перекрывается.