Что такое буква "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 и так должно быть, чтобы дать пользователям и процессам возможность использовать каталог без конфликтов в разрешениях.

Другие вопросы по тегам