Back to: chmod, SUID, SGID — спеціальні права
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 остальных)
Практическое задание
- Проверьте SUID на passwd:
ls -l /usr/bin/passwd - Проверьте sticky bit на /tmp:
ls -ld /tmp - Найдите все SUID файлы:
find / -perm -4000 -type f 2>/dev/null - Создайте директорию с SGID:
mkdir /tmp/sgidtest && chmod 2770 /tmp/sgidtest - Создайте общий каталог с sticky bit:
mkdir /tmp/shared && chmod 1777 /tmp/shared - Проверьте:
ls -ld /tmp/sgidtest /tmp/shared


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