Как работают права доступа (permissions) в Linux?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Linux права доступа определяют, кто (пользователь, группа или все остальные) может читать, записывать или выполнять файл или директорию.
Каждый файл и директория имеют набор прав, состоящий из трех категорий:
- Владелец (Owner): Пользователь, создавший файл или директорию.
- Группа (Group): Группа пользователей, которым принадлежат дополнительные права.
- Все остальные (Others): Все остальные пользователи системы.
Для каждой категории определены три типа прав:
- Чтение (Read r): Позволяет просматривать содержимое файла или список файлов в директории.
- Запись (Write w): Позволяет изменять содержимое файла или создавать/удалять файлы в директории.
- Выполнение (Execute x): Позволяет запускать файл как программу или входить в директорию и получать доступ к ее содержимому.
Права могут быть представлены в символьном или числовом виде.
Символьное представление:
Обычно отображается в виде строки из 9 символов: rwxrwxrwx. Первые три символа относятся к владельцу, следующие три — к группе, последние три — ко всем остальным. Дефис - означает отсутствие соответствующего права.
Пример: rwx-rw-r--
- Владелец: Чтение, Запись, Выполнение (
rwx) - Группа: Чтение, Запись (
rw-) - Все остальные: Чтение (
r--)
Числовое (восьмеричное) представление:
Каждому праву присвоено число:
- Чтение (r): 4
- Запись (w): 2
- Выполнение (x): 1
- Нет прав: 0
Значения для каждой категории (владелец, группа, остальные) суммируются.
Пример: rwx-rw-r-- соответствует числовому представлению 764.
- Владелец: r (4) + w (2) + x (1) = 7
- Группа: r (4) + w (2) + - (0) = 6
- Все остальные: r (4) + - (0) + - (0) = 4
Команда ls -l используется для просмотра прав доступа к файлам и директориям.
# Просмотр прав для файла example.txt
ls -l example.txt
Команда chmod используется для изменения прав доступа.
# Добавить право на выполнение для владельца
chmod u+x example.sh
# Удалить право на запись для группы и остальных
chmod go-w example.txt
# Установить права в числовом виде (владелец: rwx, группа: rw-, остальные: r--)
chmod 764 example.txt
Команда chown используется для изменения владельца файла или директории.
# Изменить владельца файла на user1
chown user1 example.txt
Команда chgrp используется для изменения группы файла или директории.
# Изменить группу файла на group1
chgrp group1 example.txt
Кроме стандартных прав rwx, существуют специальные биты:
- SUID (Set User ID): При выполнении файла с SUID битом, процесс запускается с правами владельца файла, а не вызвавшего пользователя. Применяется только к исполняемым файлам. Отображается как
sвместоxдля владельца. - SGID (Set Group ID): При выполнении файла с SGID битом, процесс запускается с правами группы файла. Для директории, новые файлы, созданные внутри нее, будут наследовать группу директории, а не вызвавшего пользователя. Отображается как
sвместоxдля группы. - Sticky Bit (Restricted Deletion Flag): Применяется к директориям. Позволяет пользователям создавать файлы в директории, но удалять их только если они "владеют" файлом (являются владельцем или имеют соответствующие права). Часто используется в
/tmp. Отображается какtвместоxдля остальных.
Специальные биты также имеют числовое представление:
- SUID: 4000
- SGID: 2000
- Sticky Bit: 1000
Числовое представление с учетом специальных битов будет состоять из четырех цифр (например, 4755 для SUID с rwxr-xr-x) или трех, где первая цифра представляет сумму специальных битов.
# Установить SUID бит на исполняемый файл (пример: с правами 755)
chmod 4755 script.sh
# Установить Sticky Bit на директорию (пример: для всех с правами 777)
chmod +t /mnt/shared_dir