Глава 9 Операции с файлами и разделами
Учтите, что флаг +s устанавливает оба бита, setgid и setuid, что может создать угрозу для безопасности, если в этом каталоге хранятся исполняемые файлы или сценарии. Команда chmod 2775 устанавливает только бит setgid.
ВНИМАНИЕ Бит setuid пробивает большую брешь в системе безопасности. Не используйте его для исполняемых файлов. Программы, использующие его (например, /usr/bin/passwd), содержат внутренние меры защиты для предотвращения эскалации привилегий и других нарушений. Если в системе имеются сценарии, которые должны запускаться пользователями, создайте для этой цели специальную группу.
Установите статический бит (sticky bit), чтобы файл не мог быть удален никем, кроме владельца:
# chmod +t /общий_каталог
или
# chmod 3775 /общий_каталог
Комментарии
Все файлы, создаваемые в каталоге, принадлежат той же группе, что и сам каталог. Все файлы, скопированные в каталог, сохраняют принадлежность исходной группе. Чтобы разные пользователи могли работать с одним каталогом, они должны принадлежать к одной группе. Разрешения файлов, создаваемых в каталоге, определяются масками umask владельцев.
Каталог /tmp является классическим примером каталога, использующего статический бит:
# stat /tmp ... Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Каталог /tmp должен быть общедоступным для чтения и записи, но мы не хотим, чтобы пользователи или процессы удаляли чужие временные файлы. Задача решается при помощи статического бита.
Бит setuid позволяет пользователям выполнить команду с такими же разрешениями, как у владельца файла. Именно так рядовые пользователи могут изменять свои пароли, хотя запись в файл /etc/passwd разрешена только суперпользователю root:
$ stat /usr/bin/passwd File: '/usr/bin/passwd' Size: 26584 Blocks: 56 10 Block: 4096 regular file ... Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)