|
@@ -0,0 +1,143 @@
|
|
|
+# Права доступа к файлам Linux
|
|
|
+
|
|
|
+В Linux, благодаря системе полномочий, можно четко разграничивать доступ пользователям на файлы, различные возможности, к сервисам и пр.
|
|
|
+
|
|
|
+## **Права доступа к файлам**
|
|
|
+
|
|
|
+**Debian** или **Ubuntu** — это многопользовательские операционные системы, и у разных пользователей разные права. Например, один пользователь может читать и создавать одни файлы, а второй может делать тоже самое но с другими файлами, ну а третий пользователь сможет проделать это и с первыми и со вторыми файлами.
|
|
|
+
|
|
|
+**Чтение** - разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
|
|
|
+
|
|
|
+**Запись** - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
|
|
|
+
|
|
|
+**Выполнение** - вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.
|
|
|
+
|
|
|
+Получается, с файлами можно делать три стандартные действия: читать (r), редактировать (w), запускать (x). Это и есть стандартные права доступа к файлам в Linux.
|
|
|
+
|
|
|
+Но все эти права были бы бессмысленными, если бы применялись сразу для всех пользователей. Поэтому каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа:
|
|
|
+
|
|
|
+**Владелец** - набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
|
|
|
+
|
|
|
+**Группа** - любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
|
|
|
+
|
|
|
+**Остальные** - все пользователи, кроме владельца и пользователей, входящих в группу файла.
|
|
|
+
|
|
|
+Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.
|
|
|
+
|
|
|
+## **Права доступа к каталогам**
|
|
|
+
|
|
|
+С каталогами можно выполнять те же действия, что и с файлами:
|
|
|
+
|
|
|
+* прочесть каталог (r), то есть посмотреть список файлов, например с помощью утилиты ls;
|
|
|
+
|
|
|
+* отредактировать каталог (w):
|
|
|
+
|
|
|
+* создать новый файл, например с помощью mkdir или touch;
|
|
|
+
|
|
|
+* удалить файл с помощью rm;
|
|
|
+
|
|
|
+* переместить файл в другой каталог с помощью mv;
|
|
|
+
|
|
|
+* войти в каталог, другими словами сделать его текущем (x) можно с помощью утилиты cd.
|
|
|
+
|
|
|
+Это стандартные права доступа к каталогам в Linux.
|
|
|
+
|
|
|
+## **Специальные права доступа к файлам**
|
|
|
+
|
|
|
+Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.
|
|
|
+
|
|
|
+**SUID** - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
|
|
|
+
|
|
|
+**SGID** - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
|
|
|
+
|
|
|
+**Sticky-bit** - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
|
|
|
+
|
|
|
+## **Команда chmod**
|
|
|
+
|
|
|
+Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
|
|
|
+
|
|
|
+**$ chmod опции права /путь/к/файлу**
|
|
|
+
|
|
|
+Синтаксис настройки прав такой:
|
|
|
+
|
|
|
+**группа_пользователейдействиевид_прав**
|
|
|
+
|
|
|
+В качестве действий могут использоваться знаки "+" - включить или "-" - отключить. Рассмотрим несколько примеров:
|
|
|
+
|
|
|
+* u+x - разрешить выполнение для владельца;
|
|
|
+
|
|
|
+* ugo+x - разрешить выполнение для всех;
|
|
|
+
|
|
|
+* ug+w - разрешить запись для владельца и группы;
|
|
|
+
|
|
|
+* o-x - запретить выполнение для остальных пользователей;
|
|
|
+
|
|
|
+* ugo+rwx - разрешить все для всех;
|
|
|
+
|
|
|
+Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще:
|
|
|
+
|
|
|
+* 0 - никаких прав;
|
|
|
+
|
|
|
+* 1 - только выполнение;
|
|
|
+
|
|
|
+* 2 - только запись;
|
|
|
+
|
|
|
+* 3 - выполнение и запись;
|
|
|
+
|
|
|
+* 4 - только чтение;
|
|
|
+
|
|
|
+* 5 - чтение и выполнение;
|
|
|
+
|
|
|
+* 6 - чтение и запись;
|
|
|
+
|
|
|
+* 7 - чтение запись и выполнение.
|
|
|
+
|
|
|
+Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например:
|
|
|
+
|
|
|
+* 744 - разрешить все для владельца, а остальным только чтение;
|
|
|
+
|
|
|
+* 755 - все для владельца, остальным только чтение и выполнение;
|
|
|
+
|
|
|
+* 764 - все для владельца, чтение и запись для группы, и только чтение для остальных;
|
|
|
+
|
|
|
+* 777 - всем разрешено все.
|
|
|
+
|
|
|
+Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
|
|
|
+
|
|
|
+* -c - выводить информацию обо всех изменениях;
|
|
|
+
|
|
|
+* -f - не выводить сообщения об ошибках;
|
|
|
+
|
|
|
+* -v - выводить максимум информации;
|
|
|
+
|
|
|
+* --preserve-root - не выполнять рекурсивные операции для корня "/";
|
|
|
+
|
|
|
+* --reference - взять маску прав из указанного файла;
|
|
|
+
|
|
|
+* -R - включить поддержку рекурсии;
|
|
|
+
|
|
|
+* --version - вывести версию утилиты;
|
|
|
+
|
|
|
+
|
|
|
+## **Вопросы**
|
|
|
+
|
|
|
+1. Какие основные действия можно делать с файлами?
|
|
|
+
|
|
|
+2. Кто такой владелец?
|
|
|
+
|
|
|
+3. Что делает команда chmod и назовите ее синтаксис.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## **Список использованной литературы**
|
|
|
+
|
|
|
+https://losst.pro/prava-dostupa-k-fajlam-v-linux?ysclid=lt8dr5gg3b91191474
|
|
|
+
|
|
|
+https://sysadminium.ru/standard_linux_file_permissions/?ysclid=lt8dlv3ctc916430953#Prava_dostupa_k_fajlam
|
|
|
+
|
|
|
+https://losst.pro/komanda-chmod-linux?ysclid=lt8dwvigmj60229627
|
|
|
+
|
|
|
+https://wiki.archlinux.org/title/File_permissions_and_attributes
|
|
|
+
|
|
|
+
|
|
|
+
|