4.1 Владелец и группа
В Linux каждый файл и каталог имеет владельца и группу. Это основа системы безопасности.
Владелец файла
Владелец — это пользователь, который создал файл или каталог. Только владелец и root могут изменять права доступа к файлу.
ls -l file.txt
# -rw-r--r-- 1 user group 1234 Dec 15 10:30 file.txt
# ↑ ↑
# владелец группа
Группа файла
Группа — это набор пользователей, которые имеют одинаковые права доступа к файлу. Пользователь может принадлежать нескольким группам.
chown — изменение владельца
chown newuser file.txt # изменить владельца
chown user:group file.txt # изменить владельца и группу
chown -R user:group dir/ # рекурсивно для каталога
chgrp — изменение группы
chgrp newgroup file.txt # изменить группу
chgrp -R newgroup dir/ # рекурсивно для каталога
Только root может изменять владельца файла. Обычные пользователи могут изменять группу только на те, в которых они состоят.
4.2 Права доступа
Права доступа определяют, что может делать с файлом владелец, группа и остальные пользователи.
Три типа прав
r (read) — чтение
- Для файлов: можно читать содержимое
- Для каталогов: можно просматривать содержимое
w (write) — запись
- Для файлов: можно изменять содержимое
- Для каталогов: можно создавать и удалять файлы
x (execute) — выполнение
- Для файлов: можно запускать как программу
- Для каталогов: можно входить в каталог
Три категории пользователей
ls -l file.txt
# -rw-r--r-- 1 user group 1234 Dec 15 10:30 file.txt
# ↑ ↑ ↑
# | | └─ права для остальных (other)
# | └───── права для группы (group)
# └───────── права для владельца (owner)
chmod — изменение прав
chmod u+x file.txt # добавить выполнение для владельца
chmod g-w file.txt # убрать запись для группы
chmod o+r file.txt # добавить чтение для остальных
chmod u+x,g-w,o+r file.txt # комбинация прав
4.3 Числовое представление прав
Права доступа можно задавать числовым способом, что часто удобнее.
Числовые значения
Базовые значения
- 4 — чтение (r)
- 2 — запись (w)
- 1 — выполнение (x)
Комбинирование прав
# Права складываются:
# 4 (r) + 2 (w) + 1 (x) = 7 (rwx)
# 4 (r) + 0 (w) + 1 (x) = 5 (r-x)
# 4 (r) + 2 (w) + 0 (x) = 6 (rw-)
# 0 (r) + 0 (w) + 0 (x) = 0 (---)
Примеры числовых прав
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 file.txt # rw-------
chmod 777 file.txt # rwxrwxrwx
Расшифровка 755
chmod 755
- 7 (4+2+1) — владелец: rwx
- 5 (4+0+1) — группа: r-x
- 5 (4+0+1) — остальные: r-x
Популярные комбинации:
• 755 — исполняемые файлы
• 644 — обычные файлы
• 600 — приватные файлы
• 777 — полные права (не рекомендуется)
• 755 — исполняемые файлы
• 644 — обычные файлы
• 600 — приватные файлы
• 777 — полные права (не рекомендуется)
4.4 Анализ прав доступа
Умение читать и анализировать права доступа — важный навык для работы с Linux.
Чтение вывода ls -l
ls -l
# -rwxr-xr-x 1 user group 1234 Dec 15 10:30 script.sh
# drwxr-xr-x 2 user group 4096 Dec 15 10:30 directory/
# lrwxrwxrwx 1 user group 8 Dec 15 10:30 link -> target
Типы файлов
Первый символ
- - — обычный файл
- d — каталог
- l — символическая ссылка
- c — символьное устройство
- b — блочное устройство
Практические примеры
# Файл с правами 644 (rw-r--r--)
-rw-r--r-- 1 user group 1024 Dec 15 10:30 document.txt
# Исполняемый файл с правами 755 (rwxr-xr-x)
-rwxr-xr-x 1 user group 2048 Dec 15 10:30 program
# Каталог с правами 755 (rwxr-xr-x)
drwxr-xr-x 2 user group 4096 Dec 15 10:30 folder/
# Приватный файл с правами 600 (rw-------)
-rw------- 1 user group 512 Dec 15 10:30 secret.txt
Проверка прав доступа
test -r file.txt && echo "Можно читать" || echo "Нельзя читать"
test -w file.txt && echo "Можно писать" || echo "Нельзя писать"
test -x file.txt && echo "Можно выполнять" || echo "Нельзя выполнять"