Что такое буква "t" в выходных данных "ls -ld /tmp"?

При выполнении команды ls -ld /tmp, результат был бы:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Итак, у меня есть два основных вопроса:

  • Что это за письмо t после получения разрешений?
  • насколько я знаю /tmp используется для создания временных файлов, связанных с различными пользователями в системе, так почему же у него есть разрешение rwxrwxrwx (777)?

Мне это кажется неправильным. Пожалуйста, мне нужна ваша помощь, чтобы понять, что здесь происходит.

Так что же это за липкий кусочек?

Фиксированный бит - это бит разрешения, который устанавливается в каталоге и позволяет только владельцу файла в этом каталоге, владельцу каталога или пользователю root удалять или переименовывать файл. Ни один другой пользователь не имеет необходимых привилегий для удаления файла, созданного каким-либо другим пользователем.

Это мера безопасности, позволяющая избежать удаления важных папок и их содержимого (подкаталогов и файлов), хотя другие пользователи имеют полные разрешения.

Почему это происходит /tmp иметь возможность t липкий кусочек?

То /tmp каталог может использоваться различными пользователями Linux для создания временных файлов. Теперь, что, если пользователь удалит / переименует файл, созданный каким-либо другим пользователем в этом каталоге?

Что ж, чтобы избежать подобных проблем, используется концепция sticky bit. Так что для этого 777 дается, но сохранение липкого кусочка - неплохая идея.

Как я могу настроить липкий бит для каталога?

Я установлю липкий бит в каталоге под названием test на моем рабочем столе.

Символический способ (t представляет собой липкий бит):

chmod o+t ~/Desktop/test

или

chmod +t ~/Desktop/test

Числовой/восьмеричный способ (1, бит sticky bit как значение 1 в первой позиции)

chmod 1757 ~/Desktop/test

Теперь давайте проверим результаты:

ls -li ~/Desktop/test1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Чтобы удалить /Удалить липкий бит

chmod o-t ~/Desktop/test

Теперь давайте проверим результаты:

ls -li ~/Desktop/test1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Источник: “Что такое липкий бит и как его установить в Linux?” на конференции Linux Juggernaut

Фиксированный бит - это бит разрешения, который устанавливается для файла или каталога и позволяет только владельцу файла/ каталога или пользователю root удалять или переименовывать файл. Ни одному другому пользователю не предоставляются права на удаление файла, созданного каким-либо другим пользователем.

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

Теперь, что, если пользователь случайно или намеренно удалит (или переименует) файл, созданный каким-либо другим пользователем в этом каталоге?

Что ж, чтобы избежать подобных проблем, используется концепция sticky bit. С /tmp используется для этой цели. Таким образом, чтобы избежать описанного выше сценария, /tmp используйте липкий бит.

Например:

mkdir demochmod 777 demo

Я также создал два файла с разными пользователями в этой папке, имеющими разрешение 777.

ls -ld demodrwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demols -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) захочет переименовать 2-го пользователя (anshu)

mv /home/guru/demo/file2  /home/guru/demo/file3mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

Происхождение липкого кусочка

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

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

Чтобы улучшить эту временную задержку, был введен бит sticky. ОС проверила, что если бит sticky в исполняемом файле включен, то текстовый сегмент исполняемого файла сохранялся в пространстве подкачки. Это позволило легко загружать исполняемый файл обратно в оперативную память при повторном запуске программы, тем самым сводя к минимуму временную задержку.

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

Источник: “Концепция Linux Sticky Bit, объясненная на примерах” в Geek Stuff

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

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

Прочитайте статью в Википедии, это гораздо лучше, чем ответы здесь.

Смотрите также: filesystems - How does the sticky bit work? - Unix & Linux Stack Exchange

Хорошо, почему тогда, когда я устанавливаю обновление или новый пакет rpm из / tmp, липкий бит удаляется?