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

71

При запуске команды ls -ld /tmp выход будет выглядеть следующим образом:

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

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

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

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

    
задан Community 11.03.2014 в 13:33
источник

3 ответа

90

Итак, что такое липкий бит?

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

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

Почему /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

    
ответ дан Maythux 11.03.2014 в 13:37
источник
21
  

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

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

  

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

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

Например:

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

Теперь, что произойдет, если один пользователь (абхи) хочет переименовать второго пользователя (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

    
ответ дан g_p 11.03.2014 в 14:06
2

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

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

    
ответ дан user259474 18.03.2014 в 12:14