Що таке літера "t" у висновку "ls -ld / tmp"?


94

При виконанні команди  ls -ld /tmpвиведенням буде:

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

Тож у мене є два основних питання:

  • Що таке лист tпісля дозволів?
  • Наскільки я знаю, /tmpвін використовується для створення тимчасових файлів, пов’язаних з різними користувачами в системі, так як це має дозвіл rwxrwxrwx(777)?

Це здається мені неправильним. Будь ласка, мені потрібна ваша допомога, щоб зрозуміти, що відбувається тут.


8
Читайте статтю у Вікіпедії , це краще, ніж відповіді тут.
Жиль


ОК Чому тоді, коли я встановлюю оновлення або новий rpm Package з / tmp, клейкий біт видаляється?

Відповіді:


112

Отже, що таке клейкий шматочок?

Клейкий біт - це біт дозволу, який встановлюється в каталозі, який дозволяє лише власнику файлу в межах цього каталогу, власнику каталогу або кореневому користувачу видалити або перейменувати файл. Жоден інший користувач не має необхідних привілеїв, щоб видалити файл, створений іншим користувачем.

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

Чому /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


13
Це використання клейкого біта стосується лише каталогів, а не файлів. У далекому минулому його значення для виконуваних файлів полягало в збереженні текстового сегмента програми для заміни, а не відкидання його, щоб запустити його знову було б швидше, але в наші дні це не має значення для звичайних файлів.
psusi

що являв собою текстовий сегмент програми та як би зберегти його, щоб це було швидше?
BluePython

@BluePython "Текстовий" сегмент виконуваного файлу - це частина, яка включає весь машинний код: власне виконуваний біт. Поширеними іншими сегментами є "дані" для статичних даних та "bss" для даних, які є всіма нульовими (і тому не потрібно зберігати у виконуваному файлі).
Майлз Рут

1
Чи є різниця між 't' і 'T' для дозволу каталогу ?? @ psusi
Afshin

1
@Afshin: Оскільки tприховує xвказівку, чи можуть усі користувачі виконувати файл / каталог, нам потрібен інший спосіб вказати це. Звичайна річ у тому, що всі можуть її виконати, і в такому випадку ви отримуєте нормальну t(замість неї x). Але якщо ні, то ви отримуєте верхній регістр T(замість а -). Джерело: Вікіпедія.
Toby Bartels

25

Sticky bit - це біт дозволу, який встановлюється у файлі чи каталозі, який дозволяє лише власникові файлу / каталогу чи кореневому користувачу видалити або перейменувати файл. Нікому іншому користувачеві не надано привілеїв видаляти файл, створений іншим користувачем.

Інколи трапляється, що вам потрібен каталог 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

Тепер, що відбувається, якщо один користувач (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 клейкий біт має лише використання, описане вище, у каталогах. Історично він використовувався для чогось зовсім іншого в звичайних файлах, і саме звідси походить назва.

Коли програма виконується, потрібен час, щоб завантажити програму в пам'ять, перш ніж користувач дійсно може почати її використовувати. Якщо програма, наприклад, редактор, часто використовується користувачами, тоді затримка часу запуску була накладною.

Щоб покращити цю часову затримку, було введено липкий біт. ОС перевірила, що якщо липкий біт на виконуваному файлі увімкнено, то текстовий сегмент виконуваного файлу зберігається в просторі swap. Це полегшило завантаження виконуваної програми в оперативну пам’ять при повторному запуску програми, мінімізуючи тимчасову затримку.

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

Джерело: «Концепція ліпкого біта Linux, пояснена прикладами» в Geek Stuff


2

Стикбіт - це спосіб вирішення випадкових випадків, коли спільні каталоги не можуть бути видалені випадково. Якщо в каталозі є стикбіт, його може видалити лише власник або корінь, навіть якщо кожен користувач може отримати всі інші дозволи.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.