🔐 Управление правами доступа в Linux

Platform Category

В Linux у каждого файла и директории есть права доступа, которые определяют, кто и что может с ними делать.
Понимание и грамотное управление правами — основа безопасности системы.


📌 1. Основы прав доступа

Каждый файл или директория имеет владельца (user) и группу (group).
Права разделяются на три категории:

Для каждой категории возможны три права:

Символ Число Значение
r 4 чтение (read)
w 2 запись (write)
x 1 выполнение (execute)

🔎 Просмотр прав

ls -l

Пример:

-rwxr-xr--  1 user group  1234 Oct  3 14:55 script.sh

Разбор:


⚡ 2. Изменение прав с chmod

Символьный метод

chmod u+x file.sh     # добавить владельцу право на выполнение
chmod g-w file.txt    # убрать у группы право на запись
chmod o+r file.txt    # дать всем остальным право на чтение
chmod a+x script.sh   # дать выполнение всем (a = all)

Числовой метод (октальный)

Каждое право кодируется числом (r=4, w=2, x=1). Сумма задаёт права.

chmod 755 file.sh

Расшифровка:

Примеры:


👑 3. Изменение владельца (chown) и группы (chgrp)

Смена владельца

sudo chown user file.txt
sudo chown user:group file.txt

Смена группы

sudo chgrp developers file.txt

Рекурсивно для каталога

sudo chown -R user:group /var/www/

🧩 4. Специальные биты: SUID, SGID, Sticky Bit

🔴 SUID (Set User ID)

Если установлен на исполняемом файле, программа запускается от имени владельца файла, а не пользователя.

chmod u+s /usr/bin/program

Пример: passwd (меняет пароль, требует root-доступа, но запускается обычным пользователем).

🟡 SGID (Set Group ID)

chmod g+s /var/shared/

🟢 Sticky Bit

Используется на каталогах (например /tmp). Файлы внутри может удалять только владелец, даже если у других есть права на запись.

chmod +t /tmp

🖥 5. Права на директории

Для директорий права работают немного иначе:

Пример:


🔍 6. Проверка эффективных прав

Иногда из-за наследования прав и ACL реальные возможности отличаются. Проверить можно так:

namei -l /path/to/file

или (в системах с ACL):

getfacl file.txt

📌 7. Практические примеры

  1. Сделать скрипт исполняемым только для владельца:
chmod 700 backup.sh
  1. Общая директория для группы developers:
sudo mkdir /projects
sudo chown root:developers /projects
sudo chmod 2775 /projects   # SGID + rwx для владельца и группы
  1. Директория для временных файлов (аналог /tmp):
mkdir /mytmp
chmod 1777 /mytmp   # Sticky bit + rwx для всех

🛡 8. Советы по безопасности