Linux

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 — полные права (не рекомендуется)

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 "Нельзя выполнять"

Настройки

Цветовая схема

Тема