Иногда при работе с файлами можно увидеть такое сообщение — «Отсутствует доступ к файлу». Сам файл есть, он на вашем компьютере, вы его главный и единственный пользователь, но почему-то вам не дают распоряжаться файлами. В чём дело?
А дело в том, что в операционной системе есть две важные сущности, которые отвечают за этот процесс:
- Пользователи — о них мы говорили недавно.
- Права доступа — об этом поговорим сейчас.
При чём тут операционная система
Когда вы хотите что-то сделать с файлом на компьютере, это действие происходит не напрямую: оно проходит через операционную систему. Копирование, переименование, чтение файла — всё через операционку.
Когда операционка получает задачу, например переименовать файл, она может броситься делать это сразу; а может провести какие-то дополнительные проверки — например, существует ли этот файл и нет ли в новом названии запрещённых символов или служебных обозначений. Это делается для безопасности работы компьютера, чтобы он ненароком не сломал сам себя.
Среди проверок может быть и проверка прав доступа.
Что такое права доступа
Так вот, у каждого пользователя в системе есть свои права: они определяют, что может делать этот пользователь, а что нет. Что они включают в себя:
- Какие файлы и папки пользователь может прочитать.
- В какие файлы и папки он может записать данные.
- Какие программы может запустить, какие инструкции исполнить.
Если операционная система видит, что пользователь хочет сделать что-то за пределами своих прав, она должна его остановить.
Какие ещё есть пользователи на компьютере кроме нас
Даже если вы работаете за компьютером в гордом одиночестве, параллельно с вами работают системные службы и сервисы. Обычно у каждой это службы есть либо свой «системный пользователь», либо они объединены в едином пользователе «система»:
- менеджер печати, который отвечает за печать на принтере;
- система работы сети — она следит за всеми сетями и организует доступ к ним для всех приложений;
- системные процессы, которые занимаются техническими задачами — файловой системой, драйверами и приложениями.
Если в Windows открыть диспетчер задач, вы заметите этих скрытых пользователей и службы:
Почему права доступа разные и зачем это нужно
Основная задача разделения прав доступа — чтобы один пользователь не мог помешать работе другого пользователя и системы в целом.
Например, в Windows есть пользователь SYSTEM (Система) или Администратор, а в MacOS и Linux — root. Они отвечают за самые важные параметры и настройки компьютера, поэтому у них самый высокий уровень доступа — они могут делать с любыми файлами что угодно. При этом им могут принадлежать какие-то свои файлы и папки, к которым доступ может быть запрещён для других пользователей.
У других служебных пользователей уровень доступа другой — они могут распоряжаться только своими файлами, но запретить к ним доступ другим пользователям они тоже могут.
А обычному пользователю можно работать только со своими файлами и с теми, к которым разрешили доступ другие пользователи. Поэтому мы можем просматривать разные системные файлы, но удалить что-то действительно важное нам не позволят права доступа.
Чтение, запись и исполнение
Чаще всего в файловых системах используются три категории доступа — на чтение, запись и исполнение. Они могут применяться одновременно или по отдельности для разных категорий пользователей.
Например, одному файлу можно назначить права «Все могут читать, но писать и запускать может только администратор». А какой-нибудь папке общего доступа можно сказать «В тебя могут писать файлы все, читать тоже все».
Как поменять права доступа
В MacOS и Linux права доступа меняются двумя командами:
chown
меняет владельца и группу
chmod
управляет разрешениями файла
Подробнее про эти команды поговорим в статье про скрипты в операционных системах.
В Windows права доступа меняются сложнее — нужно щёлкнуть правой кнопкой мыши по файлу, выбрать вкладку «Безопасность», в ней нажать кнопку «Изменить» и в новом окне добавить пользователей или настроить права для тех, кто есть в списке:
Как заполучить безграничную власть
Чтобы получить системные права на всё, нужно зайти в неё, имея права суперпользователя или администратора. В Linux это можно сделать двумя способами:
- Залогиниться в «Терминал» под именем и с паролем суперпользователя.
- Перед исполнением опасной команды использовать команду sudo. Она позволяет выполнить следующую за ней команду от имени администратора системы root.
Например, если в Ubuntu набрать в терминале команду sudo rm -rf --no-preserve-root
, она сначала спросит пароль администратора системы, а потом начнёт удалять все файлы и папки в текущей папке. Если вы предварительно оказались в корневой папке своей системы, то эта команда молча сотрёт всё, что было на диске, в том числе системные файлы. Системное ядро запаникует, консоль зависнет, и ваш компьютер превратится в тыкву. Это настоящая команда саморазрушения. Пруф:
Что дальше
Кроме файлов с разными правами доступа, на компьютере можно найти скрытые папки. Зачем они нужны и почему они скрытые — об этом поговорим в следующей статье.