[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-chto-takoe-spetsialnye-bity-sticky-bit-suid-sgid":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},165,"chto-takoe-spetsialnye-bity-sticky-bit-suid-sgid",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Что такое специальные биты: sticky bit, SUID, SGID?","**Специальные биты** — это дополнительные флаги прав доступа в Unix\u002FLinux (SUID, SGID, sticky bit), которые управляют не чтением\u002Fзаписью, а поведением при запуске программ и удалении файлов. Они дополняют стандартную модель rwx для сценариев, где обычных прав недостаточно.\n\nАналогия: если права rwx — это ключи от разных дверей, то специальные биты — это правила вроде «войдя в эту комнату, вы временно получаете полномочия директора» (SUID) или «выбросить мусор из общей корзины может только тот, кто его туда положил» (sticky bit).\n\n### SUID (Set User ID, 4xxx)\n\nКогда SUID установлен на исполняемый файл, программа запускается с правами **владельца файла**, а не с правами того, кто её запустил. Это позволяет непривилегированным пользователям выполнять действия, требующие повышенных прав, — но только через конкретную программу.\n\n```bash\n# Классический пример: команда passwd\nls -l \u002Fusr\u002Fbin\u002Fpasswd\n# -rwsr-xr-x 1 root root ... \u002Fusr\u002Fbin\u002Fpasswd\n# 's' вместо 'x' в позиции владельца — SUID бит\n\n# Установить SUID\nchmod u+s program\nchmod 4755 program\n\n# Удалить SUID\nchmod u-s program\n```\n\n> Пользователь может менять свой пароль через `passwd`, которая пишет в `\u002Fetc\u002Fshadow` (доступный только root), именно потому, что SUID запускает её от имени root.\n\n### SGID (Set Group ID, 2xxx)\n\nSGID работает по-разному для файлов и директорий:\n\n- **Для исполняемых файлов:** программа запускается с правами **группы-владельца** файла (аналогично SUID, но для группы).\n- **Для директорий:** новые файлы, созданные внутри, наследуют **группу директории**, а не основную группу создающего пользователя. Это критически важно для совместной работы команды.\n\n```bash\n# Установить SGID на директорию (полезно для совместных проектов)\nchmod g+s shared_dir\u002F\nchmod 2775 shared_dir\u002F\n\n# Теперь все файлы внутри будут принадлежать группе shared_dir,\n# независимо от того, кто их создал\n```\n\n### Sticky bit (1xxx)\n\nSticky bit применяется к директориям: файлы в такой директории может удалять или переименовывать только их **владелец**, владелец директории или root — даже если у других пользователей есть права на запись в эту директорию.\n\n```bash\n# Классический пример — \u002Ftmp\nls -ld \u002Ftmp\n# drwxrwxrwt 15 root root ... \u002Ftmp\n# 't' в конце — sticky bit\n\n# Установить sticky bit\nchmod +t directory\u002F\nchmod 1777 directory\u002F\n```\n\n### Сводная таблица\n\n| Бит | Числовое значение | На исполняемом файле | На директории |\n|---|---|---|---|\n| SUID | 4000 | Запуск от имени владельца файла | Не используется |\n| SGID | 2000 | Запуск от имени группы файла | Новые файлы наследуют группу директории |\n| Sticky | 1000 | Не используется в Linux | Удалять файл может только его владелец |\n\n### Поиск файлов со специальными битами\n\nФайлы с SUID — потенциальная угроза безопасности. Периодический аудит таких файлов — обязательная практика:\n\n```bash\nfind \u002F -perm -4000 -type f 2>\u002Fdev\u002Fnull   # Файлы с SUID\nfind \u002F -perm -2000 -type f 2>\u002Fdev\u002Fnull   # Файлы с SGID\nfind \u002F -perm -1000 -type d 2>\u002Fdev\u002Fnull   # Директории со sticky bit\n```\n\n### Обозначение в ls -l\n\n| Символ | Позиция | Значение |\n|---|---|---|\n| `s` (маленькая) | Позиция `x` у владельца | SUID установлен, файл исполняемый |\n| `S` (большая) | Позиция `x` у владельца | SUID установлен, файл НЕ исполняемый (ошибка конфигурации) |\n| `s` \u002F `S` | Позиция `x` у группы | SGID (аналогично) |\n| `t` (маленькая) | Позиция `x` у остальных | Sticky bit, директория исполняемая |\n| `T` (большая) | Позиция `x` у остальных | Sticky bit, директория НЕ исполняемая |\n\n> **На собеседовании:** покажите знание всех трёх битов на конкретных примерах: SUID — `passwd`, sticky bit — `\u002Ftmp`, SGID — общая директория проекта. Частый дополнительный вопрос: «чем отличается `s` от `S` в выводе `ls -l`?» — большая `S` означает, что бит установлен, но execute-право отсутствует, что обычно является ошибкой.\n\n---","","middle",[15,16,17,18],"security","permissions","linux","bash",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":33,"featuredSnippetReady":34},"Специальные биты: sticky bit, SUID, SGID в Linux -- Gymterview","Что такое специальные биты SUID, SGID и sticky bit в Linux? Назначение, числовые значения, практические примеры установки и поиска файлов со специальными битами.","Подробный разбор специальных битов SUID, SGID и sticky bit: назначение, установка и поиск файлов со специальными битами.",[26,27,28,29,30,31,32],"sticky bit","SUID","SGID","специальные биты Linux","set user id","set group id","безопасность Linux","Помимо стандартных прав rwx, существуют три специальных бита. SUID (4000) -- при установке на исполняемый файл программа запускается с правами владельца файла (например, passwd запускается от root). SGID (2000) -- для файлов запуск с правами группы-владельца, для директорий новые файлы наследуют группу директории. Sticky bit (1000) -- для директорий позволяет удалять файлы только их владельцу (классический пример -- \u002Ftmp). Устанавливаются через chmod (например, chmod 4755 program, chmod +t directory).",true]