С момента своего создания Linux был адаптирован для поддержки многопользовательской среды. При наличии большого количества пользователей и групп в рабочей системе довольно часто встречаются каталоги, совместно используемые пользователями одной группы, и проблемы возникают из-за совместного использования файлов в каталогах. В этой статье мы обсудим, как можно использовать липкие биты для точной настройки прав доступа к файлам в общих каталогах.
В целях иллюстрации у нас есть система с тремя пользователями - john1, john2 и john3, все они являются членами общей группы "johns".
Допустим, "john1" создает новый каталог с именем "shared-dir", предназначенный для совместного использования всеми пользователями группы "johns".
С помощью команды ls
мы можем просмотреть разрешение "shared-dir", которое можно интерпретировать в следующей таблице:
Только "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
также может использоваться для установки липкого бита в каталоге.
chmod nxyz file_name>
где,
- n=1, относится к липкому биту. Другие значения "n" относятся к другим специальным разрешениям.
- x: разрешение, предоставленное владельцу файла
- y: разрешение дано группе с доступом к файлу
- z: разрешение, данное другим
Чтобы установить бит залипания в "shared-dir", используйте следующую команду:
chmod 1755 shared-dir
который дает тот же результат, что и использование + t
для существующих разрешений по умолчанию.
Использование липкого бита применимо только для каталогов, не имеет смысла использовать его для файлов.