Что такое буква "t" в выводе "ls -ld /tmp"?
При запуске команды ls -ld /tmp
, результат будет:
drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp
Итак, у меня есть два основных вопроса:
- Что такое письмо
t
после разрешений? - Насколько я знаю
/tmp
используется для создания временных файлов, связанных с различными пользователями в системе, так почему у него есть разрешениеrwxrwxrwx
(777)?
Это кажется неправильным для меня. Пожалуйста, мне нужна ваша помощь, чтобы понять, что здесь происходит.
3 ответа
Так что же такое залипание?
Липкий бит - это бит разрешения, установленный в каталоге, который позволяет только владельцу файла в этом каталоге, владельцу каталога или пользователю root удалять или переименовывать файл. Ни один другой пользователь не имеет необходимых прав для удаления файла, созданного другим пользователем.
Это мера безопасности, позволяющая избежать удаления важных папок и их содержимого (подкаталогов и файлов), хотя другие пользователи имеют полные разрешения.
Почему /tmp
иметь t
липкий бит?
/tmp
Директория может использоваться разными пользователями Linux для создания временных файлов. А что если пользователь удалит / переименует файл, созданный другим пользователем в этом каталоге?
Что ж, чтобы избежать подобных проблем, используется понятие "липкий бит". Так что для этого 777
дается, но сохранение липкого бита - неплохая идея.
Как я могу установить липкий бит для каталога?
Я установлю липкий бит в каталог под названием test
на моем рабочем столе.
Символический путь (t
представляет липкий бит):
chmod o+t ~/Desktop/test
или же
chmod +t ~/Desktop/test
Числовой / восьмеричный способ (1, бит битов в качестве значения 1 в первой позиции)
chmod 1757 ~/Desktop/test
Теперь давайте проверим результаты:
ls -li ~/Desktop/test
1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test
Удалить / Удалить бит
chmod o-t ~/Desktop/test
Теперь давайте проверим результаты:
ls -li ~/Desktop/test
1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test
Источник: "Что такое" липкий бит "и как его установить в Linux?" В Linux Juggernaut
Sticky-бит - это бит разрешения, который устанавливается для файла или каталога и позволяет только владельцу файла / каталога или пользователю root удалять или переименовывать файл. Ни один другой пользователь не имеет прав на удаление файла, созданного другим пользователем.
Иногда случается так, что вам нужен каталог Linux, который может использоваться всеми пользователями системы Linux для создания файлов. Пользователи могут создавать, удалять или переименовывать файлы в соответствии с их удобством в этом каталоге.
А что если пользователь случайно или намеренно удалит (или переименует) файл, созданный другим пользователем в этом каталоге?
Что ж, чтобы избежать подобных проблем, используется понятие "липкий бит". Так как / tmp используется для этой цели. Поэтому, чтобы избежать описанного выше сценария, / tmp использует sticky bit.
Например:
mkdir demo
chmod 777 demo
Я также создал два файла с другим пользователем в этой папке, имеющей разрешение 777.
ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo
ls -l demo
-rwxrwxrwx 1 abhi abhi 0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu 0 Mar 11 18:15 file2
Теперь включите липкий бит на этом
chmod +t demo/
ls -ld demo
drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo
Что произойдет, если один пользователь (abhi) захочет переименовать второго пользователя (anshu)
mv /home/guru/demo/file2 /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to '/home/guru/demo/file3': Operation not permitted
Происхождение липкого бита
В Linux бит закрепления используется только в описанных выше каталогах. Исторически оно использовалось для чего-то совершенно другого в обычных файлах, и отсюда и название.
Когда программа выполняется, требуется время, чтобы загрузить программу в память, прежде чем пользователь действительно сможет начать использовать ее. Если программа, например редактор, часто используется пользователями, тогда задержка запуска была чрезмерной.
Чтобы улучшить эту задержку, был добавлен залипающий бит. ОС проверила, что если бит исполнения на исполняемом файле включен, то текстовый сегмент исполняемого файла был сохранен в пространстве подкачки. Это облегчало загрузку исполняемого файла в ОЗУ при повторном запуске программы, минимизируя время задержки.
Современные системы, такие как Linux, автоматически управляют своим кешем исполняемых файлов и других файлов и не нуждаются в этом.
Источник: "Концепция Linux Sticky Bit, объясненная примерами" в Geek Stuff
Stickybit - это обходной путь для общих каталогов, которые не удаляются случайно. Если у каталога есть залипший бит, то его может удалить только владелец или корень, даже если каждый пользователь может получить все остальные разрешения.
/tmp
является наиболее общим каталогом между процессами и пользователями и для этого он содержит залипание, чтобы гарантировать, что ни один пользователь не может удалить каталог, даже если разрешение 777
и так должно быть, чтобы дать пользователям и процессам возможность использовать каталог без конфликтов в разрешениях.