Файловая система Linux позволяет настраивать специальные режимы разрешений, такие как SUID, SGID, и Sticky bit. Эти флаги предоставляют дополнительные привилегии или ограничения для работы файлов и каталогов, но иногда их нужно удалить, чтобы избежать потенциальных уязвимостей или ошибок.
В этой статье разберём, что означают эти режимы и как безопасно их удалять.
Что такое SUID, SGID и Sticky bit?
SUID (Set User ID):
Позволяет запускать файл с правами владельца, а не текущего пользователя.
Пример: /usr/bin/passwd.
SGID (Set Group ID):
Для файлов: позволяет запускать файл с правами группы-владельца.
Для директорий: все новые файлы и папки наследуют группу родительской директории.
Sticky bit:
Обычно используется для директорий, таких как /tmp. Позволяет удалять файлы только владельцу, даже если папка доступна для записи всем.
1. Как определить наличие специальных флагов? Используйте команду ls с опцией -l:
ls -l file_or_directory
Пример вывода:
-rwsr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
drwxrwsr-x 2 user group 4096 Oct 28 10:00 sgid_dir
drwxrwxrwt 2 user group 4096 Oct 28 10:00 sticky_dir
s в правах владельца (rws) указывает на SUID.
s в правах группы (rws) указывает на SGID.
t в правах других пользователей (rwt) указывает на Sticky bit.
Удаление специальных режимов
1. Удаление SUID
Команда удаления и проверка:
chmod u-s suid_file
ls -l suid_file
-rwxr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
2. Удаление SGID
Команда и проверка:
chmod g-s sgid_dir
ls -ld sgid_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sgid_dir
3. Удаление Sticky bit
Команда и проверка:
chmod o-t sticky_dir
ls -ld sticky_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sticky_dir
Автоматическое удаление флагов с группой файлов. Создадим скрипт для массового удаления специальных флагов:
#!/bin/bash
for file in "$@"; do
echo "Удаляем специальные флаги с $file"
chmod u-s,g-s,o-t "$file"
done
Сохраните скрипт, например, как remove_flags.sh, и не забудьте сделать его исполняемым:
chmod +x remove_flags.sh
Теперь его можно запускать для нескольких файлов:
./remove_flags.sh file1 file2 dir1
Когда стоит удалять специальные флаги?
Устаревшие файлы: Удаляйте SUID/SGID у устаревших программ, которые больше не используются.
Безопасность: SUID/SGID могут быть использованы злоумышленниками для эскалации привилегий.
Упрощение управления: Удаление Sticky bit может быть полезным, если директория больше не используется как общедоступная.
BashTex 📱 #linux #utils