chmod, SUID, SGID — спеціальні права

chmod, SUID, SGID — спеціальні права

Изображение записи по умолчанию
0

chmod, SUID, SGID — специальные права

Помимо стандартных прав rwx, в Linux есть три специальных бита, которые дают дополнительное управление безопасностью.

SUID — Set User ID (4)

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

# Установить SUID
chmod 4755 /usr/bin/myprogram

# Или символьный формат
chmod u+s /usr/bin/myprogram

# Пример — passwd работает с SUID root
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
#         ^--- s вместо x = SUID установлен

Классический пример: passwd должен изменять /etc/shadow, который читается только root. SUID позволяет обычному пользователю менять свой пароль.

SGID — Set Group ID (2)

Для файла: программа выполняется с правами группы-владельца файла.

Для директории: новые файлы в этой директории наследуют группу директории, а не группу создавшего пользователя.

# Установить SGID на файл
chmod 2755 /usr/bin/myprogram
chmod g+s /usr/bin/myprogram

# Установить SGID на директорию (общая папка группы)
chmod 2770 /shared/project
chmod g+s /shared/project

# Проверка
ls -ld /shared/project
# drwxrws--- 2 root developers ... /shared/project
#           ^--- s вместо x = SGID

Sticky Bit (1)

Когда sticky bit установлен на директорию, удалять файлы в ней может только владелец файла или владелец директории (или root).

# Установить sticky bit
chmod 1777 /tmp
chmod +t /tmp

# Классический пример — /tmp
ls -ld /tmp
# drwxrwxrwt 10 root root ... /tmp
#            ^--- t вместо x = sticky bit

Без sticky bit в /tmp любой пользователь мог бы удалить файлы других пользователей.

Комбинирование специальных прав

Специальные биты задаются первой цифрой в chmod:

  • 4xxx — SUID
  • 2xxx — SGID
  • 1xxx — Sticky bit
  • 7xxx — все три (4+2+1)
# SUID + SGID + Sticky = 7
chmod 7755 /some/dir

# SUID + rwxr-xr-x = 4755
chmod 4755 program

# SGID + Sticky + rwxrwxrwx = 3777
chmod 3777 /shared

Поиск SUID файлов

SUID файлы — потенциальная угроза безопасности. Важно знать, где они находятся.

# Найти все SUID файлы в системе
find / -perm -4000 -type f 2>/dev/null

# Найти SGID файлы
find / -perm -2000 -type f 2>/dev/null

# Найти и SUID, и SGID
find / -perm -6000 -type f 2>/dev/null

Отображение в ls -l

  • rws — SUID установлен (s на месте x владельца)
  • rwS — SUID установлен, но нет права выполнения для владельца
  • r-xr-sr-x — SGID установлен (s на месте x группы)
  • rwxrwxrwt — Sticky bit установлен (t на месте x остальных)

Практическое задание

  1. Проверьте SUID на passwd: ls -l /usr/bin/passwd
  2. Проверьте sticky bit на /tmp: ls -ld /tmp
  3. Найдите все SUID файлы: find / -perm -4000 -type f 2>/dev/null
  4. Создайте директорию с SGID: mkdir /tmp/sgidtest && chmod 2770 /tmp/sgidtest
  5. Создайте общий каталог с sticky bit: mkdir /tmp/shared && chmod 1777 /tmp/shared
  6. Проверьте: ls -ld /tmp/sgidtest /tmp/shared

Comments

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Related Post