HTML Diff
3 added 3 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Часто разработчики сталкиваются с<strong>ошибкой доступа</strong>:</p>
1 <p>Часто разработчики сталкиваются с<strong>ошибкой доступа</strong>:</p>
2 <p>Она указывает, что текущий пользователь не имеет прав на создание файлов в каталоге /etc. Почему? Все дело в правах доступа, которые мы изучим в этом уроке.</p>
2 <p>Она указывает, что текущий пользователь не имеет прав на создание файлов в каталоге /etc. Почему? Все дело в правах доступа, которые мы изучим в этом уроке.</p>
3 <p>Кроме имени пользователя и группы, с каждым файлом ассоциированы права доступа:</p>
3 <p>Кроме имени пользователя и группы, с каждым файлом ассоциированы права доступа:</p>
4 <ul><li><strong>r</strong>- чтение (<em>read</em>)</li>
4 <ul><li><strong>r</strong>- чтение (<em>read</em>)</li>
5 <li><strong>w</strong>- запись (<em>write</em>)</li>
5 <li><strong>w</strong>- запись (<em>write</em>)</li>
6 <li><strong>x</strong>- исполнение (<em>execute</em>)</li>
6 <li><strong>x</strong>- исполнение (<em>execute</em>)</li>
7 </ul><p>Причем эти права задаются для трех типов пользователей:</p>
7 </ul><p>Причем эти права задаются для трех типов пользователей:</p>
8 <ul><li>Владельца (User)</li>
8 <ul><li>Владельца (User)</li>
9 <li>Пользователей, входящих в ту же группу (Group)</li>
9 <li>Пользователей, входящих в ту же группу (Group)</li>
10 <li>Остальных (Other) - тех, кто не попал в предыдущие две</li>
10 <li>Остальных (Other) - тех, кто не попал в предыдущие две</li>
11 </ul><p>Разберем на примере:</p>
11 </ul><p>Разберем на примере:</p>
12 - <p>Запись слева представляет собой один из вариантов описания прав доступа (<em>permissions</em>). Для удобства чтени разделим эту запись на группы символов:</p>
12 + <p>Запись слева представляет собой один из вариантов описания прав доступа (<em>permissions</em>). Для удобства чтения разделим эту запись на группы символов:</p>
13 <ul><li>- - этот символ обозначает, что перед нами файл</li>
13 <ul><li>- - этот символ обозначает, что перед нами файл</li>
14 <li>rw- - права первого типа (для владельца файла). Владелец может читать этот файл (r) и писать в него (w). Прочерк в конце означает, что этот файл нельзя исполнять</li>
14 <li>rw- - права первого типа (для владельца файла). Владелец может читать этот файл (r) и писать в него (w). Прочерк в конце означает, что этот файл нельзя исполнять</li>
15 <li>r-- - права второго типа (для группы владельца). В нашем случае такие права есть у тех, кто входит в группу kirill.m. Запись r-- говорит о наличии доступа только для чтения, а изменение и исполнение запрещены.</li>
15 <li>r-- - права второго типа (для группы владельца). В нашем случае такие права есть у тех, кто входит в группу kirill.m. Запись r-- говорит о наличии доступа только для чтения, а изменение и исполнение запрещены.</li>
16 <li>r-- - права третьей группы (все остальные). В нашем случае права совпадают со второй группой, поэтому файл доступен только для чтения</li>
16 <li>r-- - права третьей группы (все остальные). В нашем случае права совпадают со второй группой, поэтому файл доступен только для чтения</li>
17 </ul><p>Не важно, какой файл или директорию мы смотрим - порядок прав в этой группе всегда один и тот же - чтение-запись-исполнение, а прочерк означает отсутствие этого права:</p>
17 </ul><p>Не важно, какой файл или директорию мы смотрим - порядок прав в этой группе всегда один и тот же - чтение-запись-исполнение, а прочерк означает отсутствие этого права:</p>
18 <p>А кто может удалить этот файл? Для ответа на этот вопрос важно знать владельца, группу и права той директории, в которой лежит файл .profile. Сам файл не может обозначить прав на свое удаление, потому что права всегда берутся из той директории, в которой файл находится.</p>
18 <p>А кто может удалить этот файл? Для ответа на этот вопрос важно знать владельца, группу и права той директории, в которой лежит файл .profile. Сам файл не может обозначить прав на свое удаление, потому что права всегда берутся из той директории, в которой файл находится.</p>
19 <p>Удалить файл можно, только если у вас есть возможность писать в эту директорию:</p>
19 <p>Удалить файл можно, только если у вас есть возможность писать в эту директорию:</p>
20 <p>Домашняя директория имеет другие права:</p>
20 <p>Домашняя директория имеет другие права:</p>
21 <ul><li>В самом начале вместо - стоит d, которая обозначает директорию</li>
21 <ul><li>В самом начале вместо - стоит d, которая обозначает директорию</li>
22 <li>Права для владельца - rwx, а для всех остальных - r-x. Из этого описания видно, что только пользователь может писать внутрь своей домашней директории</li>
22 <li>Права для владельца - rwx, а для всех остальных - r-x. Из этого описания видно, что только пользователь может писать внутрь своей домашней директории</li>
23 </ul><p>Что такое x в отношении директорий? Это право позволяет перемещаться в директорию и обращаться ко всем расположенным в ней файлам и каталогам. Обращаться можно при условии, что эти файлы доступны на чтение, запись или выполнение. Например, если положить доступный на чтение файл в директорию с правом x, то вы сможете прочитать этот файл. Если убрать с этой директории право x, то вы лишитесь доступа к файлу.</p>
23 </ul><p>Что такое x в отношении директорий? Это право позволяет перемещаться в директорию и обращаться ко всем расположенным в ней файлам и каталогам. Обращаться можно при условии, что эти файлы доступны на чтение, запись или выполнение. Например, если положить доступный на чтение файл в директорию с правом x, то вы сможете прочитать этот файл. Если убрать с этой директории право x, то вы лишитесь доступа к файлу.</p>
24 <p>Но что тогда такое чтение? Здесь все более интуитивно понятно. По сути, директория - это список файлов, поэтому право на чтение позволяет прочитать этот список, а именно вывести список имен файлов, содержащихся в директории.</p>
24 <p>Но что тогда такое чтение? Здесь все более интуитивно понятно. По сути, директория - это список файлов, поэтому право на чтение позволяет прочитать этот список, а именно вывести список имен файлов, содержащихся в директории.</p>
25 <p>Но представим, что вы хотите посмотреть не простой список имен файлов, а список с дополнительной информацией - как при выводе ls -l. Тогда потребуется еще и право x, потому что в этом случае надо обращаться к файлам за их метаданными (владелец, группа, дата изменения, права и др.). В любом случае без права r вы не сможете посмотреть содержимое директории.</p>
25 <p>Но представим, что вы хотите посмотреть не простой список имен файлов, а список с дополнительной информацией - как при выводе ls -l. Тогда потребуется еще и право x, потому что в этом случае надо обращаться к файлам за их метаданными (владелец, группа, дата изменения, права и др.). В любом случае без права r вы не сможете посмотреть содержимое директории.</p>
26 <p>В статьях, книгах и руководствах иногда используется другой способ описания прав доступа: 755. Это не одно число, а три числа. Каждое из которых представляет собой группу rwx для наших типов пользователя в том же порядке: для владельца, входящих в группу и всех остальных. Число 0 означает, что нет никаких прав для данного типа пользователей:</p>
26 <p>В статьях, книгах и руководствах иногда используется другой способ описания прав доступа: 755. Это не одно число, а три числа. Каждое из которых представляет собой группу rwx для наших типов пользователя в том же порядке: для владельца, входящих в группу и всех остальных. Число 0 означает, что нет никаких прав для данного типа пользователей:</p>
27 - <p>Попробуем перевести несколько примеров из буквенной формы в числовую:</p>
27 + <p>Попробуем перевести несколько примеров из буквенной формы в числовую. Числа складываются из 4 (r) + 2 (w) + 1 (x). Например: 755 = (4+2+1)(4+1)(4+1), 644 = (4+2)(4)(4).</p>
28 <ul><li>drwxr-xr-x соответствует 755</li>
28 <ul><li>drwxr-xr-x соответствует 755</li>
29 <li>-rw-r--r-- соответствует 644</li>
29 <li>-rw-r--r-- соответствует 644</li>
30 </ul><p>Однако пользователь root находится вне этой системы. Для него не имеет никакого значения наличие любых прав - суперпользователь может все.</p>
30 </ul><p>Однако пользователь root находится вне этой системы. Для него не имеет никакого значения наличие любых прав - суперпользователь может все.</p>
31 <p>Для изменения владельца файлов или директорий можно использовать утилиту chown (от англ. change owner). В самом простом использовании команда принимает имя пользователя и файл (или директорию) для которого нужно сменить пользователя:</p>
31 <p>Для изменения владельца файлов или директорий можно использовать утилиту chown (от англ. change owner). В самом простом использовании команда принимает имя пользователя и файл (или директорию) для которого нужно сменить пользователя:</p>
32 - <p>Для изменения прав доступа к файлам и директориям можно использовать утилиту chmod (от англ. change mode). Утилита принимает права доступа и путь к файлу. Права доступа можно записывать обоими способами. С помощью знаков + и - права добавляются или удаляются соответственно:</p>
32 + <p>Для изменения прав доступа к файлам и директориям можно использовать утилиту chmod (от англ. change mode). Утилита принимает права доступа и путь к файлу. Права доступа можно записывать обоими способами. С помощью знаков + и - права добавляются или удаляются соответственно. По умолчанию chmod +r добавляет право чтения для всех (u, g, o):</p>
33  
33