Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером
Права доступа
Основы командной строки
Часто разработчики сталкиваются с ошибкой доступа:
/etc/myfile
: cannot : Permission deniedОна указывает, что текущий пользователь не имеет прав на создание файлов в каталоге /etc. Почему? Все дело в правах доступа, которые мы изучим в этом уроке.
Кроме имени пользователя и группы, с каждым файлом ассоциированы права доступа:
- r — чтение (read)
- w — запись (write)
- x — исполнение (execute)
Причем эти права задаются для трех типов пользователей:
- Владельца (User)
- Пользователей, входящих в ту же группу (Group)
- Остальных (Other) — тех, кто не попал в предыдущие две
Разберем на примере:
# Пример строчки из вывода команды ls -la 1 kirill.m kirill.m 3771 Aug 31 2015 .bashrcЗапись слева представляет собой один из вариантов описания прав доступа (permissions). Для удобства чтения разделим эту запись на группы символов:
-— этот символ обозначает, что перед нами файлrw-— права первого типа (для владельца файла). Владелец может читать этот файл (r) и писать в него (w). Прочерк в конце означает, что этот файл нельзя исполнятьr--— права второго типа (для группы владельца). В нашем случае такие права есть у тех, кто входит в группуkirill.m. Записьr--говорит о наличии доступа только для чтения, а изменение и исполнение запрещены.r--— права третьей группы (все остальные). В нашем случае права совпадают со второй группой, поэтому файл доступен только для чтения
Не важно, какой файл или директорию мы смотрим — порядок прав в этой группе всегда один и тот же — чтение-запись-исполнение, а прочерк означает отсутствие этого права:
А кто может удалить этот файл? Для ответа на этот вопрос важно знать владельца, группу и права той директории, в которой лежит файл .bashrc. Сам файл не может обозначить прав на свое удаление, потому что права всегда берутся из той директории, в которой файл находится.
Удалить файл можно, только если у вас есть возможность писать в эту директорию:
/home/ | kirill
drwxr-xr-x 5 kirill.m kirill.m 4096 Aug 29 11:34 kirill.mДомашняя директория имеет другие права:
- В самом начале вместо
-стоитd, которая обозначает директорию - Права для владельца —
rwx, а для всех остальных —r-x. Из этого описания видно, что только пользователь может писать внутрь своей домашней директории
Что такое x в отношении директорий? Это право позволяет перемещаться в директорию и обращаться ко всем расположенным в ней файлам и каталогам. Обращаться можно при условии, что эти файлы доступны на чтение, запись или выполнение. Например, если положить доступный на чтение файл в директорию с правом x, то вы сможете прочитать этот файл. Если убрать с этой директории право x, то вы лишитесь доступа к файлу.
Но что тогда такое чтение? Здесь все более интуитивно понятно. По сути, директория — это список файлов, поэтому право на чтение позволяет прочитать этот список, а именно вывести список имен файлов, содержащихся в директории.
Но представим, что вы хотите посмотреть не простой список имен файлов, а список с дополнительной информацией — как при выводе ls -l. Тогда потребуется еще и право x, потому что в этом случае надо обращаться к файлам за их метаданными (владелец, группа, дата изменения, права и др.). В любом случае без права r вы не сможете посмотреть содержимое директории.
В статьях, книгах и руководствах иногда используется другой способ описания прав доступа: 755. Это не одно число, а три числа. Каждое из которых представляет собой группу rwx для наших типов пользователя в том же порядке: для владельца, входящих в группу и всех остальных. Число 0 означает, что нет никаких прав для данного типа пользователей:
| A | B | C | D |
|---|---|---|---|
| # | Permission | rwx | Binary |
| 7 | read, write and execute | rwx | 111 |
| 6 | read and write | rw- | 110 |
| 5 | read and execute | r-x | 101 |
| 4 | read only | r– | 100 |
| 3 | write and execute | -wx | 011 |
| 2 | write only | -w- | 010 |
| 1 | execute only | –x | 001 |
Попробуем перевести несколько примеров из буквенной формы в числовую:
drwxr-xr-xсоответствует755-rw-r--r--соответствует644
Однако пользователь root находится вне этой системы. Для него не имеет никакого значения наличие любых прав — суперпользователь может все.
Для изменения владельца файлов или директорий можно использовать утилиту chown. В самом простом использовании команда принимает имя пользователя и файл (или директорию) для которого нужно сменить пользователя:
kirill .bashrcДля изменения прав доступа к файлам и директориям можно использовать утилиту chmod. Утилита принимает права доступа и путь к файлу. Права доступа можно записывать обоими способами. С помощью знаков + и - права добавляются или удаляются соответственно:
+r file.txt
754 file.txtДополнительные материалы

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
130 курсов, 2000+ часов теории
1000 практических заданий в браузере
360 000 студентов
Наши выпускники работают в компаниях:
При запуске команды «sfc /scannow» некоторые пользователи сталкиваются с сообщением об ошибке «Для использования программы sfc необходимы права администратора и выполнение сеанса консоли» несмотря на то, что запускается команда под пользователем, который уже является администратором.
В этом материале подробно о том, почему так происходит, как это исправить и что делать, если прав администратора на компьютере нет, а выполнить проверку и восстановление системных файлов необходимо.
Выполнение команды от имени администратора
Даже если учетная запись пользователя Windows имеет права администратора, большинство программ, включая командную строку, по умолчанию запускаются с правами обычного пользователя.

В этом случае при попытке использовать команды, требующие повышенных прав, вы получите сообщение об ошибке, в нашем случае — «Для использования программы sfc необходимы права администратора и выполнение сеанса консоли».
Решение простое: запустить командную строку от имени администратора и лишь после этого выполнять команду. Два быстрых способа сделать это в Windows 11 и Windows 10:
- Начните набирать «Командная строка» в поиске на панели задач, затем либо нажмите правой кнопкой мыши по результату и выберите пункт «Запуск от имени администратора», либо нажмите по такому пункту в панели справа.

- Нажмите клавиши Win+R на клавиатуре, введите cmd в окно «Выполнить» и нажмите клавиши Ctrl+Shift+Enter — это выполнит запуск консоли с правами администратора.

Если права администратора отсутствуют
В случае, если у вашего пользователя нет прав администратора в системе, а выполнить sfc /scannow необходимо, вы можете:
- Зайти в среду восстановления и использовать пункт «Командная строка» в ней: в Windows 11 при этом она будет запущена с правами администратора, а запрос пароля не появится. В Windows 10 вам потребуется выбрать пользователя с правами администратора и ввести пароль, потому способ может не подойти. Учитывайте, что при использовании этого метода потребуется модифицировать саму команду sfc, подробнее об этом в статье: Восстановление системных файлов Windows 11.
- Использовать WinPE для восстановления системных файлов. Этот метод сработает независимо от версии Windows и прав пользователя.
Надеюсь, материал был полезен для начинающих пользователей, столкнувшихся с проблемой. Если остаются вопросы, вы можете задать их в комментариях ниже, я постараюсь помочь.


