Linux Labs

Пользователи, права, процессы / Ступень 4 из 13

Общий каталог: setgid, sticky и umask

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 7 · на машине · 6 мин

Чужой файл не удалить

bob удалил план alice, не имея права на запись в сам файл. Sticky-бит закрывает это в общем каталоге.

Удаление стирает имя из списка каталога, поэтому его решают права каталога. У группы devs на /srv/team есть w — этого bob хватило.

Sticky-бит добавляет условие: удалить или переименовать файл может только его владелец, владелец каталога или root. Бит стоит на месте x у остальных буквой t. Так устроен /tmp, куда пишут все:

bash
ls -ld /tmp

drwxrwxrwt: создать файл в /tmp может любой, а удалить чужой — нет. Чужой файл такой каталог защищает отказом: rm: cannot remove '…': Operation not permitted.

Ставит бит chmod +t каталог. В числе он — цифра 1 на том же месте, где 2 у setgid; оба сразу — chmod 3775.

Внимание

В Ubuntu sticky мешает и совместной правке: в каталоге со sticky, куда пишет группа, чужой файл не откроется на дописывание — tee -a и >> получат Permission denied, хотя w у группы есть. Это защита ядра от подмены файлов: cat /proc/sys/fs/protected_regular печатает 2. Поэтому sticky ставят каталогу, куда каждый кладёт свои файлы.

Проверь себя 1 вопрос

Команде devs нужны два каталога: docs — документы, которые все правят вместе, и inbox — отчёты, каждый кладёт свои. Какие режимы им дать?

  • В docs со sticky Ubuntu не даст дописывать чужие документы: echo x >> файл от коллеги получит Permission denied.

  • 1777 открывает docs на запись всем, а не только devs, и группу новым файлам не передаёт. inbox без sticky отчёты от удаления не защищает.

  • В inbox без sticky bob удалит отчёт alice: запись в каталог у группы есть, и rm пройдёт.

Совместной правке нужна общая группа новых файлов — setgid, 2775. Каталогу, куда каждый кладёт своё, sticky добавляет защиту от удаления — 3775; дописывать чужое там и не нужно.

Главное в шаге

  • Удаление и переименование решают права каталога; sticky (t) оставляет их владельцу файла, владельцу каталога и root.
  • Setgid и sticky вместе — chmod 3775, в строке прав drwxrwsr-t.
  • В Ubuntu sticky в каталоге группы не даёт дописывать чужие файлы: его ставят туда, где каждый пишет своё.
Ubuntu 24.04
Загрузка…