Как использовать липкий бит для управления файлами в общих каталогах в Linux

Bg12

С момента своего создания Linux был адаптирован для поддержки многопользовательской среды. При наличии большого количества пользователей и групп в рабочей системе довольно часто встречаются каталоги, совместно используемые пользователями одной группы, и проблемы возникают из-за совместного использования файлов в каталогах. В этой статье мы обсудим, как можно использовать липкие биты для точной настройки прав доступа к файлам в общих каталогах.

В целях иллюстрации у нас есть система с тремя пользователями - john1, john2 и john3, все они являются членами общей группы "johns".

Допустим, "john1" создает новый каталог с именем "shared-dir", предназначенный для совместного использования всеми пользователями группы "johns".

Команда ls в общем каталоге

С помощью команды ls мы можем просмотреть разрешение "shared-dir", которое можно интерпретировать в следующей таблице:

разрешение папки linux

Только "john1" может читать содержимое каталога, а также писать в него. Поскольку мы работаем с общим каталогом, мы хотим, чтобы все пользователи группы могли писать в "shared-dir".

Для этого мы изменим разрешения с помощью команды chmod. Мы добавим разрешения на "запись" всем пользователям группы "johns", как показано ниже.

предоставить группе разрешение на запись для папки

Мы можем просмотреть обновленные разрешения для "shared-dir", как показано ниже. Подчеркнутый желтым фрагмент показывает, что группе "johns" предоставлены права на запись.

папка с правом записи группы

Добавление файлов в общий каталог

Теперь "john1" добавляет два файла (j1_file1.txt и j1_file2.txt) в "shared-dir".

добавление файлов в общий каталог

Для облегчения понимания первые два символа имени файла являются синонимами имени пользователя.

добавление второго файла в общий каталог

Аналогичным образом, "john2" также может "писать" в каталог "shared-dir".

второй пользователь добавляет файл в каталог
третий пользователь добавляет файл в каталог

Сейчас в "shared-dir" четыре файла.

файлы в общем каталоге

Есть ли проблема с текущей настройкой?

Файл "j1_file1.txt" был создан "john1", сделав "john1" владельцем файла. Теперь "john2" входит в систему и пытается удалить этот файл, и он сможет это сделать.

"John1" был владельцем файла, но "john2" смог удалить его, потому что разрешение "на запись" было дано всем членам группы "johns".

Этот сценарий не идеален. Мы хотим, чтобы все пользователи могли писать в каталог, но только владелец файла должен иметь возможность удалять файл. Как этого добиться?

Представляем Sticky Bit

Бит залипания - это специальное разрешение, которое можно установить для каталога, для которого установлены права на запись для группы, имеющей к нему доступ. Этот бит гарантирует, что все члены группы могут писать в каталог, но только человек, создавший файл, то есть владелец файла, может удалить файл.

Команда chmod с флагом + t может использоваться для установки бита закрепления в каталоге.

установить липкий бит в каталоге

Обновленное разрешение можно увидеть ниже.

разрешение папки с установленным липким битом

Теперь, если "john2" попытается удалить файл "j1_file2.txt", созданный "john1", эта операция будет запрещена.

удалить файл не разрешено

Если вы удалите разрешение на выполнение для "других", как показано ниже:

удалить разрешение на исполняемый файл для других

наличие липкого бита в каталоге обозначается заглавной буквой "T" в части "другие" строки разрешения. Поведение липкого бита в каталоге остается прежним.

разрешение файла папки без разрешения исполняемого файла

Вариант команды "chmod"

Числовая форма команды chmod также может использоваться для установки липкого бита в каталоге.

где,

  • n=1, относится к липкому биту. Другие значения "n" относятся к другим специальным разрешениям.
  • x: разрешение, предоставленное владельцу файла
  • y: разрешение дано группе с доступом к файлу
  • z: разрешение, данное другим

Чтобы установить бит залипания в "shared-dir", используйте следующую команду:

который дает тот же результат, что и использование + t для существующих разрешений по умолчанию.

Использование липкого бита применимо только для каталогов, не имеет смысла использовать его для файлов.