Операционная система Linux, как и другие системы на базе Unix, позволяет нескольким пользователям работать одновременно, не создавая конфликтов друг с другом, и все эти действия выполняются на одном сервере или хосте. Если у людей есть неконтролируемый доступ к файлам друг друга или других пользователей, возрастает риск утечки важной информации одного пользователя или даже повреждения некоторых файлов каждого пользователя.
Чтобы предотвратить эту проблему, операционная система Unix предоставляет возможность управления правами доступа к файлам (file permission). Возможность разрешения доступа к файлу или file permission определяет, какой объем доступа имеет пользователь для внесения изменений (или даже удаления) в определенный файл или каталог.
В этом руководстве мы объясним, как просматривать и изменять права доступа к файлам в Linux.
Как проверить права доступа в Linux
Прежде чем редактировать права доступа к файлу, необходимо найти настройки прав доступа в Linux. Есть два способа проверить эти права:
Использование графического интерфейса пользователя (graphical user interface или GUI) или использование интерфейса командной строки (command-line interface или CLI)
Проверка прав доступа с использованием GUI
Найти подробную информацию о правах доступа к файлу или каталогу с помощью графического интерфейса (GUI) очень просто.
- Сначала откройте File Explorer в вашей операционной системе Linux и найдите нужный файл или каталог. Затем щелкните по нему правой кнопкой мыши и выберите пункт Properties.
- Выберите вкладку Permissions.
На вкладке Permissions информация о правах доступа к файлу разделена на три раздела, которые можно изменить:
Владелец или Owner; пользователь, создавший файл или каталог
Группа или Group; группа, в которой находится владелец
Другие пользователи или Others; все пользователи системы
Для каждого файла владелец может разрешить доступ к файлу другим пользователям или даже ограничить их доступ к своему файлу.
В нашем примере владелец файла text.txt имеет доступ read and write к файлу. Это означает, что он может как открывать файл, так и редактировать его. В то время как остальные пользователи имеют доступ read-only или только для чтения к файлу. Это означает, что пользователи могут открывать файл и просматривать его содержимое, но не могут его редактировать.
Проверка прав доступа с помощью команды ls в командной строке (Command-Line)
Если вы хотите проверить права доступа через Command-Line, вы можете использовать команду ls для просмотра информации о файле или каталоге. Добавив опцию -l к этой команде, вы можете просмотреть информацию о файле или каталоге в одной строке.
ls -l [file_name]
Например, мы хотим просмотреть информацию о файле text.txt:
ls -l test.txt
Вывод содержит следующую информацию:
- Права доступа (Permissions) к файлу.
- Имя владельца или создателя файла.
- Группа, в которой находится владелец файла.
- Дата создания файла.
Как читать права доступа в Linux
Права доступа в Linux отображаются с использованием нескольких символов, которые определяют, какие пользователи имеют доступ для чтения, записи или выполнения файла. Знание этих символов (symbol) имеет решающее значение для управления доступом к ресурсам вашей системы.
Права доступа или Permissions делятся на три различные категории:
- Владелец файла или каталога
- Группа, связанная с файлом или каталогом
- Все пользователи системы
Каждый раздел имеет три различных типа доступа: чтение или read, обозначаемое символом r, запись или write, обозначаемое символом w, и выполнение или execute, обозначаемое символом x. Эти права доступа определяют, что можно делать с файлом или каталогом.
Например, состояние доступа к файлу может выглядеть следующим образом:
-rw-r--r--
- Первый символ означает тип файла; обычный файл обозначается символом (-), каталог — символом (d), а символическая ссылка, указывающая на другой файл или каталог в системе, — символом (i).
- Следующие три символа обозначают уровень доступа, который имеет владелец этого файла или каталога.
- Три символа после этого указывают на уровень доступа группы, которой принадлежит владелец.
- Последние три символа обозначают уровень доступа других пользователей системы к файлу или каталогу.
Группы доступа или Permission Groups
В Linux существуют три отдельные группы пользователей для предоставления доступа: владелец или Owner, группа или Group и все пользователи или all users.
- Владелец или Owner; Владельцем файла или каталога является пользователь, который его создал. По умолчанию владелец имеет полный доступ к своему файлу или каталогу, который включает чтение или read, запись или write и выполнение или execute.
- Группа или Group; Каждый файл или каталог в Linux связан с группой. Пользователи, входящие в эту группу, имеют права доступа, определенные для пользователей этой группы. Группы обеспечивают более точный контроль над доступом к файлам и каталогам, особенно в средах, где существует несколько пользователей.
- Все пользователи (all users); последняя группа, связанная с правами доступа, предоставляет уровень доступа для всех пользователей системы, кроме владельца этой группы. Эти права доступа предоставляются пользователям, которые не являются частью группы, связанной с файлом или каталогом.
Типы прав доступа (Permission Type)
Существует три типа прав доступа для файлов и каталогов в Linux: read (чтение), write (запись) и execute (исполнение).
- Чтение (read) с символом (r); доступ read позволяет пользователям просматривать содержимое файла или просматривать файлы в каталоге.
- Запись (write) с символом (w); доступ write позволяет пользователям редактировать содержимое файла. Это редактирование может включать написание нового содержимого, редактирование существующего содержимого или даже его удаление.
- Исполнение (execute) с символом (x); пользователи с доступом execute могут запускать файлы в системе. Запуск файла требует, чтобы он был выполнен как script или как программа.
Специальные разрешения (Special Permissions)
Разрешение setuid (Set User ID)
Разрешение setuid позволяет пользователям выполнять файл с правами доступа (Permissions), назначенными владельцу этого файла, а не с правами самого пользователя. setuid обычно используется для исполняемых файлов, которые необходимо запускать с повышенными привилегиями.
Разрешение setgid (Set Group ID)
Как и команда setuid, эта команда позволяет пользователю выполнять файл с правами доступа, назначенными группе, к которой принадлежит файл. setgid используется для каталогов, чтобы обеспечить наследование характеристик каталога той же группой в файле.
Разрешение sticky bit
Когда разрешение sticky bit применяется к каталогу, только создатель файлов в этом каталоге и root-пользователь системы могут удалять файлы из этого каталога. Даже если у других пользователей есть необходимые права доступа (Permission) для удаления файлов, при наличии этого разрешения в каталоге они не смогут удалять файлы из него. Это разрешение обычно применяется в основных каталогах, таких как /tmp, чтобы предотвратить вандализм со стороны других пользователей.
Как изменить права доступа в Linux
Изменение прав доступа в Linux осуществляется двумя способами: абсолютным режимом (absolute mode) и символьным режимом (symbolic mode).
Каждый режим имеет свой подход к применению прав доступа. В обоих режимах мы используем команду chmod.
chmod [permission] [file_name/directory]
Символьный режим (Symbolic Mode)
В этом режиме мы используем буквы английского алфавита для применения прав доступа к различным группам для файла. В определении этих прав доступа мы используем букву u для пользователя и владельца файла, букву g для группы и o для других случаев, когда необходимо применить права доступа.
Другие буквы, которые ставятся напротив каждой из этих букв, означают уровень доступа, применяемый к этой части. Для этого мы ставим знак = напротив буквы, относящейся к этому классу или части, а затем определяем уровень доступа для чтения или read буквой r, для записи или write буквой w и для выполнения или execute буквой x.
Например, следующая команда используется для применения всех прав доступа к файлу во всех разделах:
chmod u=rwx,g=rwx,o=rwx [file_name]
Чтобы установить права доступа для файла test.txt в состояние, описанное в предыдущем тексте:
- Доступ read и write для пользователя
- Доступ read для членов группы
- Доступ read для остальных пользователей системы
Используем следующую команду:
chmod u=rw,g=r,o=r test.txt
Абсолютный режим (Absolute Mode)
В абсолютном режиме мы применяем права доступа к файлам, используя восьмеричную систему счисления. Этот режим быстрее, поскольку он менее сложен, чем команды, связанные с символьным режимом.
Вместо символов или букв, абсолютный режим использует числовую систему для применения прав доступа:
- Число 4 означает доступ read
- Число 2 означает доступ на write (запись)
- Число 1 означает доступ на execute (исполнение)
- Число 0 означает отсутствие доступа
Эти числа суммируются и определяют уровень доступа. Таким образом, возможны следующие варианты:
- Число 7 означает предоставление прав на read (чтение), write (запись) и execute (исполнение)
- Число 6 означает предоставление прав на read (чтение) и write (запись)
- Число 5 означает предоставление прав на read (чтение) и execute (исполнение)
- Число 4 означает предоставление прав на read (чтение)
Поскольку необходимо определить доступ для каждого уровня (доступ на read (чтение), write (запись) и execute (исполнение)), команда для установки доступа состоит из трех чисел. Каждое число означает уровень доступа, который вы предоставляете пользователю.
В символическом режиме мы использовали буквы и символы для установки уровня доступа. Теперь мы хотим сделать это, используя абсолютный режим. Чтобы применить те же права доступа к файлу test.txt, введите команду следующим образом:
chmod 644 test.txt
Как изменить владельца файла или каталога в Linux
Помимо изменения прав доступа к файлу или каталогу в Linux, иногда необходимо изменить и их владельца. В обоих случаях требуется доступ root.
Изменение владельца файла
Для изменения владельца файла используется команда chown:
chown [user_name] [file_name/directory]
В этой команде замените [user_name] именем пользователя, который должен стать новым владельцем файла.
Изменение владельца группы
Для изменения владельца группы используется команда chgrp:
chgrp [group_name] [file_name/directory]
Необходимо заменить [group_name] именем группы, которая должна стать владельцем файлов.